* Fix some decorators in private index and private merge views
* Add edit chair test * Add new roles in nomcom_test_data function * Add member rolename to name app fixtures * Change urls names See #904 #919 - Legacy-Id: 5163
This commit is contained in:
parent
8b0c358810
commit
140ebaad31
|
@ -649,6 +649,12 @@
|
|||
<field type="BooleanField" name="used">True</field>
|
||||
<field type="IntegerField" name="order">0</field>
|
||||
</object>
|
||||
<object pk="member" model="name.rolename">
|
||||
<field type="CharField" name="name">Member</field>
|
||||
<field type="TextField" name="desc"></field>
|
||||
<field type="BooleanField" name="used">True</field>
|
||||
<field type="IntegerField" name="order">0</field>
|
||||
</object>
|
||||
<object pk="schedw" model="name.sessionstatusname">
|
||||
<field type="CharField" name="name">Waiting for Scheduling</field>
|
||||
<field type="TextField" name="desc"></field>
|
||||
|
|
|
@ -112,7 +112,7 @@ class EditMembersFormPreview(FormPreview):
|
|||
person=member['person'],
|
||||
email=member['email_obj'])
|
||||
|
||||
return HttpResponseRedirect(reverse('edit_members', kwargs={'year': self.year}))
|
||||
return HttpResponseRedirect(reverse('nomcom_edit_members', kwargs={'year': self.year}))
|
||||
|
||||
|
||||
class EditChairForm(BaseNomcomForm, forms.Form):
|
||||
|
@ -167,7 +167,7 @@ class EditChairFormPreview(FormPreview):
|
|||
person=chair_info['person'],
|
||||
email=chair_info['email_obj'])
|
||||
|
||||
return HttpResponseRedirect(reverse('edit_chair', kwargs={'year': self.year}))
|
||||
return HttpResponseRedirect(reverse('nomcom_edit_chair', kwargs={'year': self.year}))
|
||||
|
||||
|
||||
class EditPublicKeyForm(BaseNomcomForm, forms.ModelForm):
|
||||
|
|
|
@ -1,9 +1,17 @@
|
|||
from django.contrib.auth.models import User
|
||||
|
||||
from ietf.group.models import Group
|
||||
from ietf.group.models import Group, Role
|
||||
from ietf.person.models import Email, Person
|
||||
from ietf.name.models import GroupStateName, GroupTypeName
|
||||
from ietf.nomcom.models import NomCom, Position, NomineePosition, Nominee
|
||||
from ietf.name.models import RoleName
|
||||
from ietf.nomcom.models import NomCom, Position, Nominee
|
||||
|
||||
COMMUNITY_USER = 'plain'
|
||||
CHAIR_USER = 'chair'
|
||||
MEMBER_USER = 'member'
|
||||
SECRETARIAT_USER = 'secretariat'
|
||||
EMAIL_DOMAIN = '@example.com'
|
||||
|
||||
USERS = [COMMUNITY_USER, CHAIR_USER, MEMBER_USER, SECRETARIAT_USER]
|
||||
|
||||
POSITIONS = {
|
||||
"GEN": "IETF Chair/Gen AD",
|
||||
|
@ -21,25 +29,55 @@ POSITIONS = {
|
|||
|
||||
|
||||
def nomcom_test_data():
|
||||
# groups
|
||||
group, created = Group.objects.get_or_create(name='IAB/IESG Nominating Committee 2013/2014',
|
||||
state=GroupStateName.objects.get(slug='active'),
|
||||
type=GroupTypeName.objects.get(slug='nomcom'),
|
||||
state_id='active',
|
||||
type_id='nomcom',
|
||||
acronym='nomcom2013')
|
||||
nomcom, created = NomCom.objects.get_or_create(group=group)
|
||||
u, created = User.objects.get_or_create(username="plain", password="plain")
|
||||
plainman, created = Person.objects.get_or_create(
|
||||
name="Plain Man",
|
||||
ascii="Plain Man",
|
||||
user=u)
|
||||
email, cerated = Email.objects.get_or_create(
|
||||
address="plain@example.com",
|
||||
person=plainman)
|
||||
|
||||
secretariat, created = Group.objects.get_or_create(name="Secretariat",
|
||||
acronym="secretariat",
|
||||
state_id="active",
|
||||
type_id="ietf",
|
||||
parent=None)
|
||||
# users
|
||||
for user in USERS:
|
||||
u, created = User.objects.get_or_create(username=user, password=user)
|
||||
person, created = Person.objects.get_or_create(
|
||||
name=user,
|
||||
ascii=user,
|
||||
user=u)
|
||||
email, created = Email.objects.get_or_create(
|
||||
address="%s%s" % (user, EMAIL_DOMAIN),
|
||||
person=person)
|
||||
|
||||
if user == CHAIR_USER:
|
||||
role, created = RoleName.objects.get_or_create(slug="chair")
|
||||
Role.objects.get_or_create(name=role,
|
||||
group=group,
|
||||
person=person,
|
||||
email=email)
|
||||
if user == MEMBER_USER:
|
||||
role, created = RoleName.objects.get_or_create(slug="member")
|
||||
Role.objects.get_or_create(name=role,
|
||||
group=group,
|
||||
person=person,
|
||||
email=email)
|
||||
if user == SECRETARIAT_USER:
|
||||
role, created = RoleName.objects.get_or_create(slug="secr")
|
||||
Role.objects.create(name=role,
|
||||
group=secretariat,
|
||||
person=person,
|
||||
email=email)
|
||||
# nominee
|
||||
email = Email.objects.get(person__name=COMMUNITY_USER)
|
||||
nominee, created = Nominee.objects.get_or_create(email=email)
|
||||
|
||||
# positions
|
||||
for name, description in POSITIONS.iteritems():
|
||||
position, created = Position.objects.get_or_create(nomcom=nomcom,
|
||||
name=name,
|
||||
description=description,
|
||||
is_open=True,
|
||||
incumbent=email)
|
||||
Position.objects.get(name='GEN')
|
||||
nominee, created = Nominee.objects.get_or_create(email=email)
|
||||
nominee_position, created = NomineePosition.objects.get_or_create(position=position, nominee=nominee)
|
||||
|
|
|
@ -6,12 +6,16 @@ from django.test import TestCase
|
|||
from django.db import IntegrityError
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.core.files import File
|
||||
from django.contrib.formtools.preview import security_hash
|
||||
|
||||
from ietf.utils.test_utils import login_testing_unauthorized
|
||||
from ietf.utils.pipe import pipe
|
||||
from ietf.nomcom.test_data import nomcom_test_data
|
||||
|
||||
from ietf.nomcom.test_data import nomcom_test_data, COMMUNITY_USER, CHAIR_USER, \
|
||||
MEMBER_USER, SECRETARIAT_USER, EMAIL_DOMAIN
|
||||
from ietf.nomcom.models import NomineePosition, Position, Nominee, \
|
||||
NomineePositionState, Feedback, FeedbackType
|
||||
from ietf.nomcom.forms import EditChairForm
|
||||
|
||||
|
||||
class NomcomViewsTest(TestCase):
|
||||
|
@ -26,32 +30,117 @@ class NomcomViewsTest(TestCase):
|
|||
nomcom_test_data()
|
||||
self.year = 2013
|
||||
|
||||
def test_home_view(self):
|
||||
"""Verify home view"""
|
||||
url = reverse('nomcom_index', kwargs={'year': self.year})
|
||||
# private urls
|
||||
self.private_index_url = reverse('nomcom_private_index', kwargs={'year': self.year})
|
||||
self.private_merge_url = reverse('nomcom_private_merge', kwargs={'year': self.year})
|
||||
self.edit_members_url = reverse('nomcom_edit_members', kwargs={'year': self.year})
|
||||
self.edit_chair_url = reverse('nomcom_edit_chair', kwargs={'year': self.year})
|
||||
self.public_key_url = reverse('nomcom_edit_publickey', kwargs={'year': self.year})
|
||||
|
||||
# public urls
|
||||
self.index_url = reverse('nomcom_index', kwargs={'year': self.year})
|
||||
self.requirements_url = reverse('nomcom_requirements', kwargs={'year': self.year})
|
||||
self.questionnaires_url = reverse('nomcom_questionnaires', kwargs={'year': self.year})
|
||||
self.comments_url = reverse('nomcom_comments', kwargs={'year': self.year})
|
||||
self.nominate_url = reverse('nomcom_nominate', kwargs={'year': self.year})
|
||||
|
||||
def access_member_url(self, url):
|
||||
login_testing_unauthorized(self, COMMUNITY_USER, url)
|
||||
login_testing_unauthorized(self, CHAIR_USER, url)
|
||||
self.check_url_status(url, 200)
|
||||
self.client.logout()
|
||||
login_testing_unauthorized(self, MEMBER_USER, url)
|
||||
self.check_url_status(url, 200)
|
||||
|
||||
def test_nominate_view(self):
|
||||
"""Verify nominate view"""
|
||||
url = reverse('nomcom_nominate', kwargs={'year': self.year})
|
||||
login_testing_unauthorized(self, 'kaligula', url)
|
||||
def access_chair_url(self, url):
|
||||
login_testing_unauthorized(self, COMMUNITY_USER, url)
|
||||
login_testing_unauthorized(self, MEMBER_USER, url)
|
||||
login_testing_unauthorized(self, CHAIR_USER, url)
|
||||
self.check_url_status(url, 200)
|
||||
|
||||
def test_private_index_view(self):
|
||||
"""Verify private home view"""
|
||||
self.access_member_url(self.private_index_url)
|
||||
self.client.logout()
|
||||
|
||||
def test_private_merge_view(self):
|
||||
"""Verify private merge view"""
|
||||
# TODO: complete merge nominations
|
||||
self.access_chair_url(self.private_merge_url)
|
||||
self.client.logout()
|
||||
|
||||
def test_edit_members_view(self):
|
||||
"""Verify edit member view"""
|
||||
# TODO: complete chage edit memebers
|
||||
self.access_chair_url(self.edit_members_url)
|
||||
self.client.logout()
|
||||
|
||||
def change_chair(self, user):
|
||||
test_data = {'chair': '%s%s' % (user, EMAIL_DOMAIN),
|
||||
'stage': 1}
|
||||
# preview
|
||||
self.client.post(self.edit_chair_url, test_data)
|
||||
|
||||
hash = security_hash(None, EditChairForm(test_data))
|
||||
test_data.update({'hash': hash, 'stage': 2})
|
||||
|
||||
# submit
|
||||
self.client.post(self.edit_chair_url, test_data)
|
||||
|
||||
def test_edit_chair_view(self):
|
||||
"""Verify edit chair view"""
|
||||
login_testing_unauthorized(self, COMMUNITY_USER, self.edit_chair_url)
|
||||
login_testing_unauthorized(self, CHAIR_USER, self.edit_chair_url)
|
||||
login_testing_unauthorized(self, SECRETARIAT_USER, self.edit_chair_url)
|
||||
self.check_url_status(self.edit_chair_url, 200)
|
||||
|
||||
self.change_chair(COMMUNITY_USER)
|
||||
|
||||
# check chair actions
|
||||
self.client.login(remote_user=COMMUNITY_USER)
|
||||
url = reverse('nomcom_edit_members', kwargs={'year': self.year})
|
||||
self.check_url_status(url, 200)
|
||||
url = reverse('nomcom_edit_publickey', kwargs={'year': self.year})
|
||||
self.check_url_status(url, 200)
|
||||
|
||||
# revert edit nomcom chair
|
||||
login_testing_unauthorized(self, SECRETARIAT_USER, self.edit_chair_url)
|
||||
self.change_chair(CHAIR_USER)
|
||||
self.client.logout()
|
||||
|
||||
def test_edit_publickey_view(self):
|
||||
"""Verify edit publickey view"""
|
||||
# TODO: complete chage edit public key
|
||||
login_testing_unauthorized(self, COMMUNITY_USER, self.public_key_url)
|
||||
login_testing_unauthorized(self, CHAIR_USER, self.public_key_url)
|
||||
self.check_url_status(self.public_key_url, 200)
|
||||
self.client.logout()
|
||||
|
||||
def test_index_view(self):
|
||||
"""Verify home view"""
|
||||
self.check_url_status(self.index_url, 200)
|
||||
|
||||
def test_requirements_view(self):
|
||||
"""Verify requirements view"""
|
||||
url = reverse('nomcom_requirements', kwargs={'year': self.year})
|
||||
self.check_url_status(url, 200)
|
||||
self.check_url_status(self.requirements_url, 200)
|
||||
|
||||
def test_questionnaires_view(self):
|
||||
"""Verify questionnaires view"""
|
||||
url = reverse('nomcom_questionnaires', kwargs={'year': self.year})
|
||||
self.check_url_status(url, 200)
|
||||
self.check_url_status(self.questionnaires_url, 200)
|
||||
|
||||
def test_comments_view(self):
|
||||
"""Verify comments view"""
|
||||
url = reverse('nomcom_comments', kwargs={'year': self.year})
|
||||
login_testing_unauthorized(self, 'plain', url)
|
||||
self.check_url_status(url, 200)
|
||||
# TODO: comments view
|
||||
login_testing_unauthorized(self, COMMUNITY_USER, self.comments_url)
|
||||
self.check_url_status(self.comments_url, 200)
|
||||
self.client.logout()
|
||||
|
||||
def test_nominate_view(self):
|
||||
"""Verify nominate view"""
|
||||
# TODO: complete to do a nomination
|
||||
login_testing_unauthorized(self, COMMUNITY_USER, self.nominate_url)
|
||||
self.check_url_status(self.nominate_url, 200)
|
||||
self.client.logout()
|
||||
|
||||
|
||||
class NomineePositionStateSaveTest(TestCase):
|
||||
|
@ -60,7 +149,7 @@ class NomineePositionStateSaveTest(TestCase):
|
|||
|
||||
def setUp(self):
|
||||
nomcom_test_data()
|
||||
self.nominee = Nominee.objects.get(email__address="plain@example.com")
|
||||
self.nominee = Nominee.objects.get(email__person__name=COMMUNITY_USER)
|
||||
|
||||
def test_state_autoset(self):
|
||||
"""Verify state is autoset correctly"""
|
||||
|
@ -132,7 +221,7 @@ class FeedbackTest(TestCase):
|
|||
|
||||
def test_encrypted_comments(self):
|
||||
|
||||
nominee = Nominee.objects.get(email__address="plain@example.com")
|
||||
nominee = Nominee.objects.get(email__person__name=COMMUNITY_USER)
|
||||
position = Position.objects.get(name='OAM')
|
||||
nomcom = position.nomcom
|
||||
|
||||
|
|
|
@ -5,9 +5,9 @@ from ietf.nomcom.forms import EditChairForm, EditChairFormPreview, \
|
|||
urlpatterns = patterns('ietf.nomcom.views',
|
||||
url(r'^(?P<year>\d{4})/private/$', 'private_index', name='nomcom_private_index'),
|
||||
url(r'^(?P<year>\d{4})/private/merge/$', 'private_merge', name='nomcom_private_merge'),
|
||||
url(r'^(?P<year>\d{4})/private/edit-members/$', EditMembersFormPreview(EditMembersForm), name='edit_members'),
|
||||
url(r'^(?P<year>\d{4})/private/edit-chair/$', EditChairFormPreview(EditChairForm), name='edit_chair'),
|
||||
url(r'^(?P<year>\d{4})/private/edit-publickey/$', 'edit_publickey', name='edit_publickey'),
|
||||
url(r'^(?P<year>\d{4})/private/edit-members/$', EditMembersFormPreview(EditMembersForm), name='nomcom_edit_members'),
|
||||
url(r'^(?P<year>\d{4})/private/edit-chair/$', EditChairFormPreview(EditChairForm), name='nomcom_edit_chair'),
|
||||
url(r'^(?P<year>\d{4})/private/edit-publickey/$', 'edit_publickey', name='nomcom_edit_publickey'),
|
||||
|
||||
url(r'^(?P<year>\d{4})/$', 'index', name='nomcom_index'),
|
||||
url(r'^(?P<year>\d{4})/requirements/$', 'requirements', name='nomcom_requirements'),
|
||||
|
|
|
@ -24,7 +24,7 @@ def index(request, year):
|
|||
'template': template}, RequestContext(request))
|
||||
|
||||
|
||||
@member_required(role='chair')
|
||||
@member_required(role='member')
|
||||
def private_index(request, year):
|
||||
nomcom = get_nomcom_by_year(year)
|
||||
is_nomcom_member(request.user, nomcom)
|
||||
|
@ -34,8 +34,9 @@ def private_index(request, year):
|
|||
'selected': 'index'}, RequestContext(request))
|
||||
|
||||
|
||||
@member_required(role='member')
|
||||
@member_required(role='chair')
|
||||
def private_merge(request, year):
|
||||
# TODO: complete merge nominations
|
||||
nomcom = get_nomcom_by_year(year)
|
||||
is_nomcom_member(request.user, nomcom)
|
||||
return render_to_response('nomcom/private_merge.html',
|
||||
|
@ -86,6 +87,7 @@ def nominate(request, year):
|
|||
|
||||
@login_required
|
||||
def comments(request, year):
|
||||
# TODO: complete to do comments
|
||||
nomcom = get_nomcom_by_year(year)
|
||||
return render_to_response('nomcom/comments.html',
|
||||
{'nomcom': nomcom,
|
||||
|
|
Loading…
Reference in a new issue