Skip to content

Commit 264f6f3

Browse files
committed
Allow chairs to upload bluesheets for interim meetings. Fixes ietf-tools#2165. Commit ready for merge.
- Legacy-Id: 13412
1 parent 1d37e38 commit 264f6f3

3 files changed

Lines changed: 27 additions & 3 deletions

File tree

ietf/meeting/tests_views.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1509,7 +1509,16 @@ def test_upload_bluesheets(self):
15091509
self.assertEqual(r.status_code, 302)
15101510
bs_doc = Document.objects.get(pk=bs_doc.pk)
15111511
self.assertEqual(bs_doc.rev,'01')
1512-
1512+
1513+
def test_upload_bluesheets_chair_access(self):
1514+
make_meeting_test_data()
1515+
mars = Group.objects.get(acronym='mars')
1516+
session=SessionFactory(meeting__type_id='ietf',group=mars)
1517+
url = urlreverse('ietf.meeting.views.upload_session_bluesheets',kwargs={'num':session.meeting.number,'session_id':session.id})
1518+
self.client.login(username="marschairman", password="marschairman+password")
1519+
r = self.client.get(url)
1520+
self.assertEqual(r.status_code, 403)
1521+
15131522
def test_upload_bluesheets_interim(self):
15141523
session=SessionFactory(meeting__type_id='interim')
15151524
url = urlreverse('ietf.meeting.views.upload_session_bluesheets',kwargs={'num':session.meeting.number,'session_id':session.id})
@@ -1526,6 +1535,18 @@ def test_upload_bluesheets_interim(self):
15261535
bs_doc = session.sessionpresentation_set.filter(document__type_id='bluesheets').first().document
15271536
self.assertEqual(bs_doc.rev,'00')
15281537

1538+
def test_upload_bluesheets_interim_chair_access(self):
1539+
make_meeting_test_data()
1540+
mars = Group.objects.get(acronym='mars')
1541+
session=SessionFactory(meeting__type_id='interim',group=mars)
1542+
url = urlreverse('ietf.meeting.views.upload_session_bluesheets',kwargs={'num':session.meeting.number,'session_id':session.id})
1543+
self.client.login(username="marschairman", password="marschairman+password")
1544+
r = self.client.get(url)
1545+
self.assertEqual(r.status_code, 200)
1546+
q = PyQuery(r.content)
1547+
self.assertTrue('Upload' in unicode(q("title")))
1548+
1549+
15291550
def test_upload_minutes_agenda(self):
15301551
for doctype in ('minutes','agenda'):
15311552
session = SessionFactory(meeting__type_id='ietf')

ietf/meeting/views.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1142,11 +1142,14 @@ def add_session_drafts(request, session_id, num):
11421142
class UploadBlueSheetForm(forms.Form):
11431143
file = forms.FileField(label='Bluesheet scan to upload')
11441144

1145-
@role_required('Secretariat')
1145+
@role_required('Area Director', 'Secretariat', 'IRTF Chair', 'WG Chair')
11461146
def upload_session_bluesheets(request, session_id, num):
11471147
# num is redundant, but we're dragging it along an artifact of where we are in the current URL structure
11481148
session = get_object_or_404(Session,pk=session_id)
11491149

1150+
if session.meeting.type.slug == 'ietf' and not has_role(request.user, 'Secretariat'):
1151+
return HttpResponseForbidden('Restricted to role Secretariat')
1152+
11501153
session_number = None
11511154
sessions = get_sessions(session.meeting.number,session.group.acronym)
11521155
if len(sessions) > 1:

ietf/templates/meeting/session_details.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ <h2 class="anchor-target" id="session_{{session.pk}}">{% if sessions|length > 1
7171
<a class="btn btn-default pull-right" href="{% url 'ietf.meeting.views.upload_session_minutes' session_id=session.pk num=session.meeting.number %}">Upload Minutes</a>
7272
{% endif %}
7373
{% endif %}
74-
{% if user|has_role:"Secretariat" and not session.type_counter.bluesheets %}
74+
{% if user|has_role:"Secretariat" and not session.type_counter.bluesheets or meeting.type.slug == 'interim' and can_manage_materials and not session.type_counter.bluesheets %}
7575
<a class="btn btn-default pull-right" href="{% url 'ietf.meeting.views.upload_session_bluesheets' session_id=session.pk num=session.meeting.number %}">Upload Bluesheets</a>
7676
{% endif %}
7777
</div>

0 commit comments

Comments
 (0)