Skip to content

Commit 86102b9

Browse files
committed
Allow people to volunteer for NomCom via the datatracker. Commit ready for merge.
- Legacy-Id: 19104
1 parent c8ed251 commit 86102b9

22 files changed

Lines changed: 576 additions & 59 deletions

ietf/bin/set_admin_permissions

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ def permission_names_to_objects(names):
3939
result.append(Permission.objects.get(content_type__app_label=app_label,
4040
codename=codename))
4141
except Permission.DoesNotExist:
42-
print "NO SUCH PERMISSION: %s, %s" % (app_label, codename)
42+
print ("NO SUCH PERMISSION: %s, %s" % (app_label, codename))
4343
raise
4444

4545
return result
@@ -61,6 +61,7 @@ def main():
6161
'group.add_groupevent','group.change_groupevent','group.delete_groupevent',
6262
'iesg.add_telechatagendaitem','iesg.change_telechatagendaitem','iesg.delete_telechatagendaitem',
6363
'iesg.add_telechatdate','iesg.change_telechatdate','iesg.delete_telechatdate',
64+
'liaisons.add_liaisonstatementgroupcontacts', 'liaisons.change_liaisonstatementgroupcontacts', 'liaisons.delete_liaisonstatementgroupcontacts',
6465
'mailinglists.add_list','mailinglists.change_list','mailinglists.delete_list',
6566
'mailtrigger.add_mailtrigger','mailtrigger.change_mailtrigger','mailtrigger.delete_mailtrigger',
6667
'mailtrigger.add_recipient','mailtrigger.change_recipient','mailtrigger.delete_recipient',
@@ -71,6 +72,7 @@ def main():
7172
'meeting.add_urlresource','meeting.change_urlresource','meeting.delete_urlresource',
7273
'message.add_announcementfrom','message.change_announcementfrom','message.delete_announcementfrom',
7374
'nomcom.add_nomcom','nomcom.change_nomcom','nomcom.delete_nomcom',
75+
'nomcom.add_volunteer','nomcom.change_volunteer','nomcom.delete_volunteer',
7476
'person.add_person','person.change_person','person.delete_person',
7577
'person.add_alias','person.change_alias','person.delete_alias',
7678
'person.add_email','person.change_email','person.delete_email',

ietf/doc/tests_ballot.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1097,7 +1097,7 @@ def test_regenerate_last_call(self):
10971097
lc_text = draft.latest_event(WriteupDocEvent, type="changed_last_call_text").text
10981098
self.assertTrue("contains these normative down" in lc_text)
10991099
self.assertTrue("rfc6666" in lc_text)
1100-
self.assertTrue("Independent Submission Editor stream" in lc_text)
1100+
self.assertTrue("Independent Submission" in lc_text)
11011101

11021102
draft.relateddocument_set.create(target=rfc.docalias.get(name='rfc6666'),relationship_id='downref-approval')
11031103

ietf/ietfauth/tests.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
from ietf.ietfauth.htpasswd import update_htpasswd_file
3636
from ietf.mailinglists.models import Subscribed
3737
from ietf.meeting.factories import MeetingFactory
38+
from ietf.nomcom.factories import NomComFactory
3839
from ietf.person.factories import PersonFactory, EmailFactory
3940
from ietf.person.models import Person, Email, PersonalApiKey
4041
from ietf.review.factories import ReviewRequestFactory, ReviewAssignmentFactory
@@ -333,6 +334,33 @@ def test_ietfauth_profile(self):
333334
self.assertEqual(updated_roles[0].email_id, new_email_address)
334335

335336

337+
def test_nomcom_dressing_on_profile(self):
338+
url = urlreverse('ietf.ietfauth.views.profile')
339+
340+
nobody = PersonFactory()
341+
login_testing_unauthorized(self, nobody.user.username, url)
342+
r = self.client.get(url)
343+
self.assertEqual(r.status_code,200)
344+
q = PyQuery(r.content)
345+
self.assertFalse(q('#volunteer-button'))
346+
self.assertFalse(q('#volunteered'))
347+
348+
year = datetime.date.today().year
349+
nomcom = NomComFactory(group__acronym=f'nomcom{year}',is_accepting_volunteers=True)
350+
r = self.client.get(url)
351+
self.assertEqual(r.status_code,200)
352+
q = PyQuery(r.content)
353+
self.assertTrue(q('#volunteer-button'))
354+
self.assertFalse(q('#volunteered'))
355+
356+
nomcom.volunteer_set.create(person=nobody)
357+
r = self.client.get(url)
358+
self.assertEqual(r.status_code,200)
359+
q = PyQuery(r.content)
360+
self.assertFalse(q('#volunteer-button'))
361+
self.assertTrue(q('#volunteered'))
362+
363+
336364
def test_reset_password(self):
337365
url = urlreverse(ietf.ietfauth.views.password_reset)
338366

ietf/ietfauth/views.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
from ietf.ietfauth.utils import role_required, has_role
6868
from ietf.mailinglists.models import Subscribed, Whitelisted
6969
from ietf.name.models import ExtResourceName
70+
from ietf.nomcom.models import NomCom
7071
from ietf.person.models import Person, Email, Alias, PersonalApiKey, PERSON_API_KEY_VALUES
7172
from ietf.review.models import ReviewerSettings, ReviewWish, ReviewAssignment
7273
from ietf.review.utils import unavailable_periods_to_list, get_default_filter_re
@@ -210,6 +211,14 @@ def profile(request):
210211
emails = Email.objects.filter(person=person).exclude(address__startswith='unknown-email-').order_by('-active','-time')
211212
new_email_forms = []
212213

214+
nc = NomCom.objects.filter(group__acronym__icontains=Date.today().year).first()
215+
if nc and nc.volunteer_set.filter(person=person).exists():
216+
volunteer_status = 'volunteered'
217+
elif nc and nc.is_accepting_volunteers:
218+
volunteer_status = 'allow'
219+
else:
220+
volunteer_status = 'deny'
221+
213222
if request.method == 'POST':
214223
person_form = get_person_form(request.POST, instance=person)
215224
for r in roles:
@@ -287,6 +296,8 @@ def profile(request):
287296
'roles': roles,
288297
'emails': emails,
289298
'new_email_forms': new_email_forms,
299+
'nomcom': nc,
300+
'volunteer_status': volunteer_status,
290301
'settings':settings,
291302
})
292303

0 commit comments

Comments
 (0)