Skip to content

Commit 641bccc

Browse files
committed
Replaced the ad_hoc nomcom_member_required() decorator with our generic role_required() decorator. Changed access permission for nomcom-chair only pages to also permit nomcom advisor access (this lets the previous nomcom chair explain and assist as needed). Also tweaked some text strings in the email feedback pipe script.
- Legacy-Id: 6160
1 parent d602104 commit 641bccc

4 files changed

Lines changed: 28 additions & 40 deletions

File tree

ietf/nomcom/decorators.py

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,6 @@
77
from ietf.nomcom.utils import get_nomcom_by_year
88

99

10-
def nomcom_member_required(role=None):
11-
def _is_nomcom_member(user, *args, **kwargs):
12-
year = kwargs.get('year', None)
13-
if year:
14-
nomcom = get_nomcom_by_year(year=year)
15-
if role == 'chair':
16-
return nomcom.group.is_chair(user)
17-
else:
18-
return nomcom.group.is_member(user)
19-
return False
20-
return passes_test_decorator(_is_nomcom_member, 'Restricted to NomCom %s' % role)
21-
22-
2310
def nomcom_private_key_required(view_func):
2411
def inner(request, *args, **kwargs):
2512
year = kwargs.get('year', None)

ietf/nomcom/forms.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@
2121
from ietf.nomcom.utils import (NOMINATION_RECEIPT_TEMPLATE, FEEDBACK_RECEIPT_TEMPLATE,
2222
get_user_email, validate_private_key, validate_public_key,
2323
get_or_create_nominee, create_feedback_email)
24-
from ietf.nomcom.decorators import nomcom_member_required
25-
24+
from ietf.ietfauth.utils import role_required
2625

2726
ROLODEX_URL = getattr(settings, 'ROLODEX_URL', None)
2827

@@ -121,7 +120,7 @@ class EditMembersFormPreview(FormPreview):
121120
form_template = 'nomcom/edit_members.html'
122121
preview_template = 'nomcom/edit_members_preview.html'
123122

124-
@method_decorator(nomcom_member_required(role='chair'))
123+
@method_decorator(role_required("Nomcom Chair", "Nomcom Advisor"))
125124
def __call__(self, request, *args, **kwargs):
126125
year = kwargs['year']
127126
group = get_group_or_404(year)

ietf/nomcom/management/commands/feedback_email.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111
import debug
1212

1313
class Command(BaseCommand):
14-
help = (u"Receive email feedback, encrypt and save it.")
14+
help = (u"Receive nomcom email, encrypt and save it.")
1515
option_list = BaseCommand.option_list + (
1616
make_option('--nomcom-year', dest='year', help='NomCom year'),
17-
make_option('--email-file', dest='email', help='Feedback email filename (default: stdin)'),)
17+
make_option('--email-file', dest='email', help='File containing email (default: stdin)'),)
1818

1919
def handle(self, *args, **options):
2020
email = options.get('email', None)
@@ -24,6 +24,7 @@ def handle(self, *args, **options):
2424
help_message = 'Usage: feeback_email --nomcom-year <nomcom-year> --email-file <email-file>'
2525

2626
if not year:
27+
log("Error: missing nomcom-year")
2728
raise CommandError("Missing nomcom-year\n\n"+help_message)
2829

2930
if not email:
@@ -39,6 +40,6 @@ def handle(self, *args, **options):
3940

4041
try:
4142
feedback = create_feedback_email(nomcom, msg)
42-
log(u"Read feedback email by %s" % feedback.author)
43+
log(u"Received nomcom email from %s" % feedback.author)
4344
except (EncryptedException, ValueError) as e:
4445
raise CommandError(e)

ietf/nomcom/views.py

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
from ietf.dbtemplate.views import template_edit
2222
from ietf.name.models import NomineePositionState, FeedbackType
2323

24-
from ietf.nomcom.decorators import nomcom_member_required, nomcom_private_key_required
24+
from ietf.nomcom.decorators import nomcom_private_key_required
2525
from ietf.nomcom.forms import (NominateForm, FeedbackForm, QuestionnaireForm,
2626
MergeForm, NomComTemplateForm, PositionForm,
2727
PrivateKeyForm, EditNomcomForm, EditNomineeForm,
@@ -31,6 +31,7 @@
3131
from ietf.nomcom.utils import (get_nomcom_by_year, store_nomcom_private_key,
3232
get_hash_nominee_position, send_reminder_to_nominees,
3333
HOME_TEMPLATE, NOMINEE_REMINDER_TEMPLATE)
34+
from ietf.ietfauth.utils import role_required
3435

3536

3637
def index(request):
@@ -50,7 +51,7 @@ def year_index(request, year):
5051
'template': template}, RequestContext(request))
5152

5253

53-
@nomcom_member_required(role='member')
54+
@role_required("Nomcom")
5455
def private_key(request, year):
5556
nomcom = get_nomcom_by_year(year)
5657
message = None
@@ -76,7 +77,7 @@ def private_key(request, year):
7677
'selected': 'private_key'}, RequestContext(request))
7778

7879

79-
@nomcom_member_required(role='member')
80+
@role_required("Nomcom")
8081
def private_index(request, year):
8182
nomcom = get_nomcom_by_year(year)
8283
all_nominee_positions = NomineePosition.objects.get_by_nomcom(nomcom).not_duplicated()
@@ -142,7 +143,7 @@ def private_index(request, year):
142143
'message': message}, RequestContext(request))
143144

144145

145-
@nomcom_member_required(role='chair')
146+
@role_required("Nomcom Chair", "Nomcom Advisor")
146147
def send_reminder_mail(request, year):
147148
nomcom = get_nomcom_by_year(year)
148149
nominees = Nominee.objects.get_by_nomcom(nomcom).not_duplicated().filter(nomineeposition__state='pending').distinct()
@@ -169,7 +170,7 @@ def send_reminder_mail(request, year):
169170
'message': message}, RequestContext(request))
170171

171172

172-
@nomcom_member_required(role='chair')
173+
@role_required("Nomcom Chair", "Nomcom Advisor")
173174
def private_merge(request, year):
174175
nomcom = get_nomcom_by_year(year)
175176
message = None
@@ -214,7 +215,7 @@ def public_nominate(request, year):
214215
return nominate(request, year, True)
215216

216217

217-
@nomcom_member_required(role='member')
218+
@role_required("Nomcom")
218219
def private_nominate(request, year):
219220
return nominate(request, year, False)
220221

@@ -257,7 +258,7 @@ def public_feedback(request, year):
257258
return feedback(request, year, True)
258259

259260

260-
@nomcom_member_required(role='member')
261+
@role_required("Nomcom")
261262
def private_feedback(request, year):
262263
return feedback(request, year, False)
263264

@@ -312,7 +313,7 @@ def feedback(request, year, public):
312313
'selected': 'feedback'}, RequestContext(request))
313314

314315

315-
@nomcom_member_required(role='chair')
316+
@role_required("Nomcom Chair", "Nomcom Advisor")
316317
def private_feedback_email(request, year):
317318
nomcom = get_nomcom_by_year(year)
318319
has_publickey = nomcom.public_key and True or False
@@ -345,7 +346,7 @@ def private_feedback_email(request, year):
345346
'selected': 'feedback_email'}, RequestContext(request))
346347

347348

348-
@nomcom_member_required(role='chair')
349+
@role_required("Nomcom Chair", "Nomcom Advisor")
349350
def private_questionnaire(request, year):
350351
nomcom = get_nomcom_by_year(year)
351352
has_publickey = nomcom.public_key and True or False
@@ -417,7 +418,7 @@ def process_nomination_status(request, year, nominee_position_id, state, date, h
417418
'selected': 'feedback'}, RequestContext(request))
418419

419420

420-
@nomcom_member_required(role='member')
421+
@role_required("Nomcom")
421422
@nomcom_private_key_required
422423
def view_feedback(request, year):
423424
nomcom = get_nomcom_by_year(year)
@@ -446,7 +447,7 @@ def view_feedback(request, year):
446447
'nomcom': nomcom}, RequestContext(request))
447448

448449

449-
@nomcom_member_required(role='chair')
450+
@role_required("Nomcom Chair", "Nomcom Advisor")
450451
@nomcom_private_key_required
451452
def view_feedback_pending(request, year):
452453
nomcom = get_nomcom_by_year(year)
@@ -558,7 +559,7 @@ def view_feedback_pending(request, year):
558559
'nomcom': nomcom}, RequestContext(request))
559560

560561

561-
@nomcom_member_required(role='member')
562+
@role_required("Nomcom")
562563
@nomcom_private_key_required
563564
def view_feedback_unrelated(request, year):
564565
nomcom = get_nomcom_by_year(year)
@@ -574,7 +575,7 @@ def view_feedback_unrelated(request, year):
574575
'nomcom': nomcom}, RequestContext(request))
575576

576577

577-
@nomcom_member_required(role='member')
578+
@role_required("Nomcom")
578579
@nomcom_private_key_required
579580
def view_feedback_nominee(request, year, nominee_id):
580581
nomcom = get_nomcom_by_year(year)
@@ -589,7 +590,7 @@ def view_feedback_nominee(request, year, nominee_id):
589590
'nomcom': nomcom}, RequestContext(request))
590591

591592

592-
@nomcom_member_required(role='chair')
593+
@role_required("Nomcom Chair", "Nomcom Advisor")
593594
def edit_nominee(request, year, nominee_id):
594595
nomcom = get_nomcom_by_year(year)
595596
nominee = get_object_or_404(Nominee, id=nominee_id)
@@ -613,7 +614,7 @@ def edit_nominee(request, year, nominee_id):
613614
'nomcom': nomcom}, RequestContext(request))
614615

615616

616-
@nomcom_member_required(role='chair')
617+
@role_required("Nomcom Chair", "Nomcom Advisor")
617618
def edit_nomcom(request, year):
618619
nomcom = get_nomcom_by_year(year)
619620
has_publickey = nomcom.public_key and True or False
@@ -649,7 +650,7 @@ def edit_nomcom(request, year):
649650
'selected': 'edit_nomcom'}, RequestContext(request))
650651

651652

652-
@nomcom_member_required(role='chair')
653+
@role_required("Nomcom Chair", "Nomcom Advisor")
653654
def delete_nomcom(request, year):
654655
nomcom = get_nomcom_by_year(year)
655656
post_delete_redirect = reverse('nomcom_deleted')
@@ -665,7 +666,7 @@ def delete_nomcom(request, year):
665666
extra_context=extra_context)
666667

667668

668-
@nomcom_member_required(role='chair')
669+
@role_required("Nomcom Chair", "Nomcom Advisor")
669670
def list_templates(request, year):
670671
nomcom = get_nomcom_by_year(year)
671672
positions = nomcom.position_set.all()
@@ -679,7 +680,7 @@ def list_templates(request, year):
679680
'nomcom': nomcom}, RequestContext(request))
680681

681682

682-
@nomcom_member_required(role='chair')
683+
@role_required("Nomcom Chair", "Nomcom Advisor")
683684
def edit_template(request, year, template_id):
684685
nomcom = get_nomcom_by_year(year)
685686
return_url = request.META.get('HTTP_REFERER', None)
@@ -692,7 +693,7 @@ def edit_template(request, year, template_id):
692693
'nomcom': nomcom})
693694

694695

695-
@nomcom_member_required(role='chair')
696+
@role_required("Nomcom Chair", "Nomcom Advisor")
696697
def list_positions(request, year):
697698
nomcom = get_nomcom_by_year(year)
698699
positions = nomcom.position_set.all()
@@ -704,7 +705,7 @@ def list_positions(request, year):
704705
'nomcom': nomcom}, RequestContext(request))
705706

706707

707-
@nomcom_member_required(role='chair')
708+
@role_required("Nomcom Chair", "Nomcom Advisor")
708709
def remove_position(request, year, position_id):
709710
nomcom = get_nomcom_by_year(year)
710711
try:
@@ -721,7 +722,7 @@ def remove_position(request, year, position_id):
721722
'nomcom': nomcom}, RequestContext(request))
722723

723724

724-
@nomcom_member_required(role='chair')
725+
@role_required("Nomcom Chair", "Nomcom Advisor")
725726
def edit_position(request, year, position_id=None):
726727
nomcom = get_nomcom_by_year(year)
727728
if position_id:

0 commit comments

Comments
 (0)