From ed53dfdf78d4d20640cee4acf02a6e9776f617b1 Mon Sep 17 00:00:00 2001 From: Ryan Cross Date: Mon, 12 May 2014 20:54:33 +0000 Subject: [PATCH] changes to support IAB group types, including requesting a session and uploading materials. Commit ready for merge - Legacy-Id: 7734 --- ietf/ietfauth/utils.py | 23 ++++++++++++----------- ietf/secr/middleware/secauth.py | 4 ++-- ietf/secr/proceedings/views.py | 20 +++++++++++++++----- ietf/secr/utils/group.py | 3 ++- 4 files changed, 31 insertions(+), 19 deletions(-) diff --git a/ietf/ietfauth/utils.py b/ietf/ietfauth/utils.py index ea62e0964..857b92b49 100644 --- a/ietf/ietfauth/utils.py +++ b/ietf/ietfauth/utils.py @@ -41,19 +41,20 @@ def has_role(user, role_names, *args, **kwargs): return False role_qs = { - "Area Director": Q(person=person, name__in=("pre-ad", "ad"), group__type="area", group__state="active"), - "Secretariat": Q(person=person, name="secr", group__acronym="secretariat"), - "IANA": Q(person=person, name="auth", group__acronym="iana"), + "Area Director": Q(person=person, name__in=("pre-ad", "ad"), group__type="area", group__state="active"), + "Secretariat": Q(person=person, name="secr", group__acronym="secretariat"), + "IANA": Q(person=person, name="auth", group__acronym="iana"), "RFC Editor": Q(person=person, name="auth", group__acronym="rfceditor"), "ISE" : Q(person=person, name="chair", group__acronym="ise"), - "IAD": Q(person=person, name="admdir", group__acronym="ietf"), - "IETF Chair": Q(person=person, name="chair", group__acronym="ietf"), - "IRTF Chair": Q(person=person, name="chair", group__acronym="irtf"), - "IAB Chair": Q(person=person, name="chair", group__acronym="iab"), - "WG Chair": Q(person=person,name="chair", group__type="wg", group__state="active"), - "WG Secretary": Q(person=person,name="secr", group__type="wg", group__state="active"), - "RG Chair": Q(person=person,name="chair", group__type="rg", group__state="active"), - "RG Secretary": Q(person=person,name="secr", group__type="rg", group__state="active"), + "IAD": Q(person=person, name="admdir", group__acronym="ietf"), + "IETF Chair": Q(person=person, name="chair", group__acronym="ietf"), + "IRTF Chair": Q(person=person, name="chair", group__acronym="irtf"), + "IAB Chair": Q(person=person, name="chair", group__acronym="iab"), + "IAB Group Chair": Q(person=person, name="chair", group__type="iab", group__state="active"), + "WG Chair": Q(person=person,name="chair", group__type="wg", group__state="active"), + "WG Secretary": Q(person=person,name="secr", group__type="wg", group__state="active"), + "RG Chair": Q(person=person,name="chair", group__type="rg", group__state="active"), + "RG Secretary": Q(person=person,name="secr", group__type="rg", group__state="active"), "Nomcom Chair": Q(person=person, name="chair", group__type="nomcom", group__state="active", group__acronym__icontains=kwargs.get('year', '0000')), "Nomcom Advisor": Q(person=person, name="advisor", group__type="nomcom", group__state="active", group__acronym__icontains=kwargs.get('year', '0000')), "Nomcom": Q(person=person, group__type="nomcom", group__state="active", group__acronym__icontains=kwargs.get('year', '0000')), diff --git a/ietf/secr/middleware/secauth.py b/ietf/secr/middleware/secauth.py index 00365e377..3154d9ca1 100644 --- a/ietf/secr/middleware/secauth.py +++ b/ietf/secr/middleware/secauth.py @@ -45,8 +45,8 @@ class SecAuthMiddleware(object): if request.path.startswith('/secr/announcement/'): return login_required(view_func)(request,*view_args,**view_kwargs) elif self.is_unrestricted_url(request.path): - return role_required('WG Chair','WG Secretary','RG Chair','Area Director', - 'Secretariat')(view_func)(request,*view_args,**view_kwargs) + return role_required('WG Chair','WG Secretary','RG Chair','IAB Group Chair', + 'Area Director','Secretariat')(view_func)(request,*view_args,**view_kwargs) else: return role_required('Secretariat')(view_func)(request,*view_args,**view_kwargs) else: diff --git a/ietf/secr/proceedings/views.py b/ietf/secr/proceedings/views.py index 521d0145d..f4a42430b 100644 --- a/ietf/secr/proceedings/views.py +++ b/ietf/secr/proceedings/views.py @@ -671,11 +671,21 @@ def select(request, meeting_num): else: irtf_form = None - # initialize Training form, this select widget needs to have a session id, because it's - # utilmately the session that we associate material with - if has_role(user,'Secretariat'): - ss = ScheduledSession.objects.filter(schedule=meeting.agenda,timeslot__type='other') - choices = [ (i.session.id, i.session.name) for i in sorted(ss,key=lambda x: x.session.name) ] + # initialize Training form, this select widget needs to have a session id, because + # it's utilmately the session that we associate material with + other_groups = filter(lambda x: x.type_id not in ('wg','ag','rg'),groups_session) + if other_groups: + add_choices = [] + sessions = Session.objects.filter(meeting=meeting,group__in=other_groups) + for session in sessions: + if session.name.lower().find('plenary') != -1: + continue + if session.name: + name = (session.name[:75] + '..') if len(session.name) > 75 else session.name + add_choices.append((session.id,name)) + else: + add_choices.append((session.id,session.group.name)) + choices = sorted(add_choices,key=lambda x: x[1]) training_form = GroupSelectForm(choices=choices) else: training_form = None diff --git a/ietf/secr/utils/group.py b/ietf/secr/utils/group.py index 5b65ad0bf..ac336ee65 100644 --- a/ietf/secr/utils/group.py +++ b/ietf/secr/utils/group.py @@ -49,8 +49,9 @@ def get_my_groups(user,conclude=False): states = ['bof','proposed','active'] if conclude: states.extend(['conclude','bof-conc']) - all_groups = Group.objects.filter(type__in=('wg','rg','ag','team'),state__in=states).order_by('acronym') + types = ['wg','rg','ag','team','iab'] + all_groups = Group.objects.filter(type__in=types,state__in=states).order_by('acronym') if user == None or has_role(user,'Secretariat'): return all_groups