Allow chairs to upload bluesheets for interim meetings. Fixes #2165. Commit ready for merge.
- Legacy-Id: 13412
This commit is contained in:
parent
1d37e387bd
commit
264f6f36e2
|
@ -1509,7 +1509,16 @@ class MaterialsTests(TestCase):
|
|||
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})
|
||||
|
@ -1526,6 +1535,18 @@ class MaterialsTests(TestCase):
|
|||
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')
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -71,7 +71,7 @@
|
|||
<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>
|
||||
|
|
Loading…
Reference in a new issue