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
This commit is contained in:
parent
d60210484f
commit
641bcccfba
|
@ -7,19 +7,6 @@ from ietf.ietfauth.decorators import passes_test_decorator
|
|||
from ietf.nomcom.utils import get_nomcom_by_year
|
||||
|
||||
|
||||
def nomcom_member_required(role=None):
|
||||
def _is_nomcom_member(user, *args, **kwargs):
|
||||
year = kwargs.get('year', None)
|
||||
if year:
|
||||
nomcom = get_nomcom_by_year(year=year)
|
||||
if role == 'chair':
|
||||
return nomcom.group.is_chair(user)
|
||||
else:
|
||||
return nomcom.group.is_member(user)
|
||||
return False
|
||||
return passes_test_decorator(_is_nomcom_member, 'Restricted to NomCom %s' % role)
|
||||
|
||||
|
||||
def nomcom_private_key_required(view_func):
|
||||
def inner(request, *args, **kwargs):
|
||||
year = kwargs.get('year', None)
|
||||
|
|
|
@ -21,8 +21,7 @@ from ietf.nomcom.models import NomCom, Nomination, Nominee, NomineePosition, \
|
|||
from ietf.nomcom.utils import (NOMINATION_RECEIPT_TEMPLATE, FEEDBACK_RECEIPT_TEMPLATE,
|
||||
get_user_email, validate_private_key, validate_public_key,
|
||||
get_or_create_nominee, create_feedback_email)
|
||||
from ietf.nomcom.decorators import nomcom_member_required
|
||||
|
||||
from ietf.ietfauth.utils import role_required
|
||||
|
||||
ROLODEX_URL = getattr(settings, 'ROLODEX_URL', None)
|
||||
|
||||
|
@ -121,7 +120,7 @@ class EditMembersFormPreview(FormPreview):
|
|||
form_template = 'nomcom/edit_members.html'
|
||||
preview_template = 'nomcom/edit_members_preview.html'
|
||||
|
||||
@method_decorator(nomcom_member_required(role='chair'))
|
||||
@method_decorator(role_required("Nomcom Chair", "Nomcom Advisor"))
|
||||
def __call__(self, request, *args, **kwargs):
|
||||
year = kwargs['year']
|
||||
group = get_group_or_404(year)
|
||||
|
|
|
@ -11,10 +11,10 @@ from ietf.nomcom.fields import EncryptedException
|
|||
import debug
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = (u"Receive email feedback, encrypt and save it.")
|
||||
help = (u"Receive nomcom email, encrypt and save it.")
|
||||
option_list = BaseCommand.option_list + (
|
||||
make_option('--nomcom-year', dest='year', help='NomCom year'),
|
||||
make_option('--email-file', dest='email', help='Feedback email filename (default: stdin)'),)
|
||||
make_option('--email-file', dest='email', help='File containing email (default: stdin)'),)
|
||||
|
||||
def handle(self, *args, **options):
|
||||
email = options.get('email', None)
|
||||
|
@ -24,6 +24,7 @@ class Command(BaseCommand):
|
|||
help_message = 'Usage: feeback_email --nomcom-year <nomcom-year> --email-file <email-file>'
|
||||
|
||||
if not year:
|
||||
log("Error: missing nomcom-year")
|
||||
raise CommandError("Missing nomcom-year\n\n"+help_message)
|
||||
|
||||
if not email:
|
||||
|
@ -39,6 +40,6 @@ class Command(BaseCommand):
|
|||
|
||||
try:
|
||||
feedback = create_feedback_email(nomcom, msg)
|
||||
log(u"Read feedback email by %s" % feedback.author)
|
||||
log(u"Received nomcom email from %s" % feedback.author)
|
||||
except (EncryptedException, ValueError) as e:
|
||||
raise CommandError(e)
|
||||
|
|
|
@ -21,7 +21,7 @@ from ietf.dbtemplate.models import DBTemplate
|
|||
from ietf.dbtemplate.views import template_edit
|
||||
from ietf.name.models import NomineePositionState, FeedbackType
|
||||
|
||||
from ietf.nomcom.decorators import nomcom_member_required, nomcom_private_key_required
|
||||
from ietf.nomcom.decorators import nomcom_private_key_required
|
||||
from ietf.nomcom.forms import (NominateForm, FeedbackForm, QuestionnaireForm,
|
||||
MergeForm, NomComTemplateForm, PositionForm,
|
||||
PrivateKeyForm, EditNomcomForm, EditNomineeForm,
|
||||
|
@ -31,6 +31,7 @@ from ietf.nomcom.models import Position, NomineePosition, Nominee, Feedback, Nom
|
|||
from ietf.nomcom.utils import (get_nomcom_by_year, store_nomcom_private_key,
|
||||
get_hash_nominee_position, send_reminder_to_nominees,
|
||||
HOME_TEMPLATE, NOMINEE_REMINDER_TEMPLATE)
|
||||
from ietf.ietfauth.utils import role_required
|
||||
|
||||
|
||||
def index(request):
|
||||
|
@ -50,7 +51,7 @@ def year_index(request, year):
|
|||
'template': template}, RequestContext(request))
|
||||
|
||||
|
||||
@nomcom_member_required(role='member')
|
||||
@role_required("Nomcom")
|
||||
def private_key(request, year):
|
||||
nomcom = get_nomcom_by_year(year)
|
||||
message = None
|
||||
|
@ -76,7 +77,7 @@ def private_key(request, year):
|
|||
'selected': 'private_key'}, RequestContext(request))
|
||||
|
||||
|
||||
@nomcom_member_required(role='member')
|
||||
@role_required("Nomcom")
|
||||
def private_index(request, year):
|
||||
nomcom = get_nomcom_by_year(year)
|
||||
all_nominee_positions = NomineePosition.objects.get_by_nomcom(nomcom).not_duplicated()
|
||||
|
@ -142,7 +143,7 @@ def private_index(request, year):
|
|||
'message': message}, RequestContext(request))
|
||||
|
||||
|
||||
@nomcom_member_required(role='chair')
|
||||
@role_required("Nomcom Chair", "Nomcom Advisor")
|
||||
def send_reminder_mail(request, year):
|
||||
nomcom = get_nomcom_by_year(year)
|
||||
nominees = Nominee.objects.get_by_nomcom(nomcom).not_duplicated().filter(nomineeposition__state='pending').distinct()
|
||||
|
@ -169,7 +170,7 @@ def send_reminder_mail(request, year):
|
|||
'message': message}, RequestContext(request))
|
||||
|
||||
|
||||
@nomcom_member_required(role='chair')
|
||||
@role_required("Nomcom Chair", "Nomcom Advisor")
|
||||
def private_merge(request, year):
|
||||
nomcom = get_nomcom_by_year(year)
|
||||
message = None
|
||||
|
@ -214,7 +215,7 @@ def public_nominate(request, year):
|
|||
return nominate(request, year, True)
|
||||
|
||||
|
||||
@nomcom_member_required(role='member')
|
||||
@role_required("Nomcom")
|
||||
def private_nominate(request, year):
|
||||
return nominate(request, year, False)
|
||||
|
||||
|
@ -257,7 +258,7 @@ def public_feedback(request, year):
|
|||
return feedback(request, year, True)
|
||||
|
||||
|
||||
@nomcom_member_required(role='member')
|
||||
@role_required("Nomcom")
|
||||
def private_feedback(request, year):
|
||||
return feedback(request, year, False)
|
||||
|
||||
|
@ -312,7 +313,7 @@ def feedback(request, year, public):
|
|||
'selected': 'feedback'}, RequestContext(request))
|
||||
|
||||
|
||||
@nomcom_member_required(role='chair')
|
||||
@role_required("Nomcom Chair", "Nomcom Advisor")
|
||||
def private_feedback_email(request, year):
|
||||
nomcom = get_nomcom_by_year(year)
|
||||
has_publickey = nomcom.public_key and True or False
|
||||
|
@ -345,7 +346,7 @@ def private_feedback_email(request, year):
|
|||
'selected': 'feedback_email'}, RequestContext(request))
|
||||
|
||||
|
||||
@nomcom_member_required(role='chair')
|
||||
@role_required("Nomcom Chair", "Nomcom Advisor")
|
||||
def private_questionnaire(request, year):
|
||||
nomcom = get_nomcom_by_year(year)
|
||||
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
|
|||
'selected': 'feedback'}, RequestContext(request))
|
||||
|
||||
|
||||
@nomcom_member_required(role='member')
|
||||
@role_required("Nomcom")
|
||||
@nomcom_private_key_required
|
||||
def view_feedback(request, year):
|
||||
nomcom = get_nomcom_by_year(year)
|
||||
|
@ -446,7 +447,7 @@ def view_feedback(request, year):
|
|||
'nomcom': nomcom}, RequestContext(request))
|
||||
|
||||
|
||||
@nomcom_member_required(role='chair')
|
||||
@role_required("Nomcom Chair", "Nomcom Advisor")
|
||||
@nomcom_private_key_required
|
||||
def view_feedback_pending(request, year):
|
||||
nomcom = get_nomcom_by_year(year)
|
||||
|
@ -558,7 +559,7 @@ def view_feedback_pending(request, year):
|
|||
'nomcom': nomcom}, RequestContext(request))
|
||||
|
||||
|
||||
@nomcom_member_required(role='member')
|
||||
@role_required("Nomcom")
|
||||
@nomcom_private_key_required
|
||||
def view_feedback_unrelated(request, year):
|
||||
nomcom = get_nomcom_by_year(year)
|
||||
|
@ -574,7 +575,7 @@ def view_feedback_unrelated(request, year):
|
|||
'nomcom': nomcom}, RequestContext(request))
|
||||
|
||||
|
||||
@nomcom_member_required(role='member')
|
||||
@role_required("Nomcom")
|
||||
@nomcom_private_key_required
|
||||
def view_feedback_nominee(request, year, nominee_id):
|
||||
nomcom = get_nomcom_by_year(year)
|
||||
|
@ -589,7 +590,7 @@ def view_feedback_nominee(request, year, nominee_id):
|
|||
'nomcom': nomcom}, RequestContext(request))
|
||||
|
||||
|
||||
@nomcom_member_required(role='chair')
|
||||
@role_required("Nomcom Chair", "Nomcom Advisor")
|
||||
def edit_nominee(request, year, nominee_id):
|
||||
nomcom = get_nomcom_by_year(year)
|
||||
nominee = get_object_or_404(Nominee, id=nominee_id)
|
||||
|
@ -613,7 +614,7 @@ def edit_nominee(request, year, nominee_id):
|
|||
'nomcom': nomcom}, RequestContext(request))
|
||||
|
||||
|
||||
@nomcom_member_required(role='chair')
|
||||
@role_required("Nomcom Chair", "Nomcom Advisor")
|
||||
def edit_nomcom(request, year):
|
||||
nomcom = get_nomcom_by_year(year)
|
||||
has_publickey = nomcom.public_key and True or False
|
||||
|
@ -649,7 +650,7 @@ def edit_nomcom(request, year):
|
|||
'selected': 'edit_nomcom'}, RequestContext(request))
|
||||
|
||||
|
||||
@nomcom_member_required(role='chair')
|
||||
@role_required("Nomcom Chair", "Nomcom Advisor")
|
||||
def delete_nomcom(request, year):
|
||||
nomcom = get_nomcom_by_year(year)
|
||||
post_delete_redirect = reverse('nomcom_deleted')
|
||||
|
@ -665,7 +666,7 @@ def delete_nomcom(request, year):
|
|||
extra_context=extra_context)
|
||||
|
||||
|
||||
@nomcom_member_required(role='chair')
|
||||
@role_required("Nomcom Chair", "Nomcom Advisor")
|
||||
def list_templates(request, year):
|
||||
nomcom = get_nomcom_by_year(year)
|
||||
positions = nomcom.position_set.all()
|
||||
|
@ -679,7 +680,7 @@ def list_templates(request, year):
|
|||
'nomcom': nomcom}, RequestContext(request))
|
||||
|
||||
|
||||
@nomcom_member_required(role='chair')
|
||||
@role_required("Nomcom Chair", "Nomcom Advisor")
|
||||
def edit_template(request, year, template_id):
|
||||
nomcom = get_nomcom_by_year(year)
|
||||
return_url = request.META.get('HTTP_REFERER', None)
|
||||
|
@ -692,7 +693,7 @@ def edit_template(request, year, template_id):
|
|||
'nomcom': nomcom})
|
||||
|
||||
|
||||
@nomcom_member_required(role='chair')
|
||||
@role_required("Nomcom Chair", "Nomcom Advisor")
|
||||
def list_positions(request, year):
|
||||
nomcom = get_nomcom_by_year(year)
|
||||
positions = nomcom.position_set.all()
|
||||
|
@ -704,7 +705,7 @@ def list_positions(request, year):
|
|||
'nomcom': nomcom}, RequestContext(request))
|
||||
|
||||
|
||||
@nomcom_member_required(role='chair')
|
||||
@role_required("Nomcom Chair", "Nomcom Advisor")
|
||||
def remove_position(request, year, position_id):
|
||||
nomcom = get_nomcom_by_year(year)
|
||||
try:
|
||||
|
@ -721,7 +722,7 @@ def remove_position(request, year, position_id):
|
|||
'nomcom': nomcom}, RequestContext(request))
|
||||
|
||||
|
||||
@nomcom_member_required(role='chair')
|
||||
@role_required("Nomcom Chair", "Nomcom Advisor")
|
||||
def edit_position(request, year, position_id=None):
|
||||
nomcom = get_nomcom_by_year(year)
|
||||
if position_id:
|
||||
|
|
Loading…
Reference in a new issue