Skip to content

Commit

Permalink
Allow chairs to upload bluesheets for interim meetings. Fixes #2165. …
Browse files Browse the repository at this point in the history
…Commit ready for merge.

 - Legacy-Id: 13412
  • Loading branch information
rpcross committed May 23, 2017
1 parent 1d37e38 commit 264f6f3
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 3 deletions.
23 changes: 22 additions & 1 deletion ietf/meeting/tests_views.py
Expand Up @@ -1509,7 +1509,16 @@ def test_upload_bluesheets(self):
self.assertEqual(r.status_code, 302)
bs_doc = Document.objects.get(pk=bs_doc.pk)
self.assertEqual(bs_doc.rev,'01')


def test_upload_bluesheets_chair_access(self):
make_meeting_test_data()
mars = Group.objects.get(acronym='mars')
session=SessionFactory(meeting__type_id='ietf',group=mars)
url = urlreverse('ietf.meeting.views.upload_session_bluesheets',kwargs={'num':session.meeting.number,'session_id':session.id})
self.client.login(username="marschairman", password="marschairman+password")
r = self.client.get(url)
self.assertEqual(r.status_code, 403)

def test_upload_bluesheets_interim(self):
session=SessionFactory(meeting__type_id='interim')
url = urlreverse('ietf.meeting.views.upload_session_bluesheets',kwargs={'num':session.meeting.number,'session_id':session.id})
Expand All @@ -1526,6 +1535,18 @@ def test_upload_bluesheets_interim(self):
bs_doc = session.sessionpresentation_set.filter(document__type_id='bluesheets').first().document
self.assertEqual(bs_doc.rev,'00')

def test_upload_bluesheets_interim_chair_access(self):
make_meeting_test_data()
mars = Group.objects.get(acronym='mars')
session=SessionFactory(meeting__type_id='interim',group=mars)
url = urlreverse('ietf.meeting.views.upload_session_bluesheets',kwargs={'num':session.meeting.number,'session_id':session.id})
self.client.login(username="marschairman", password="marschairman+password")
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
q = PyQuery(r.content)
self.assertTrue('Upload' in unicode(q("title")))


def test_upload_minutes_agenda(self):
for doctype in ('minutes','agenda'):
session = SessionFactory(meeting__type_id='ietf')
Expand Down
5 changes: 4 additions & 1 deletion ietf/meeting/views.py
Expand Up @@ -1142,11 +1142,14 @@ def add_session_drafts(request, session_id, num):
class UploadBlueSheetForm(forms.Form):
file = forms.FileField(label='Bluesheet scan to upload')

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

if session.meeting.type.slug == 'ietf' and not has_role(request.user, 'Secretariat'):
return HttpResponseForbidden('Restricted to role Secretariat')

session_number = None
sessions = get_sessions(session.meeting.number,session.group.acronym)
if len(sessions) > 1:
Expand Down
2 changes: 1 addition & 1 deletion ietf/templates/meeting/session_details.html
Expand Up @@ -71,7 +71,7 @@ <h2 class="anchor-target" id="session_{{session.pk}}">{% if sessions|length > 1
<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>
{% endif %}
{% endif %}
{% if user|has_role:"Secretariat" and not session.type_counter.bluesheets %}
{% 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 %}
<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>
{% endif %}
</div>
Expand Down

0 comments on commit 264f6f3

Please sign in to comment.