diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py index a2f776e5c..f4a913fc8 100644 --- a/ietf/meeting/tests_views.py +++ b/ietf/meeting/tests_views.py @@ -285,6 +285,21 @@ class MeetingTests(TestCase): # FIXME: missing tests of .pdf/.tar generation (some code can # probably be lifted from similar tests in iesg/tests.py) + def test_materials_editable_groups(self): + meeting = make_meeting_test_data() + + self.client.login(username="marschairman", password="marschairman+password") + r = self.client.get(urlreverse("ietf.meeting.views.materials_editable_groups", kwargs={'num':meeting.number})) + self.assertEqual(r.status_code, 200) + self.assertTrue(meeting.number in unicontent(r)) + self.assertTrue("mars" in unicontent(r)) + + self.client.login(username="plain",password="plain+password") + r = self.client.get(urlreverse("ietf.meeting.views.materials_editable_groups", kwargs={'num':meeting.number})) + self.assertEqual(r.status_code, 200) + self.assertTrue(meeting.number in unicontent(r)) + self.assertTrue("You cannot manage the meeting materials for any groups" in unicontent(r)) + def test_proceedings(self): meeting = make_meeting_test_data() session = Session.objects.filter(meeting=meeting, group__acronym="mars").first() diff --git a/ietf/meeting/urls.py b/ietf/meeting/urls.py index 72e876607..f08516973 100644 --- a/ietf/meeting/urls.py +++ b/ietf/meeting/urls.py @@ -75,6 +75,7 @@ type_ietf_only_patterns_id_optional = [ url(r'^week-view(?:.html)?/?$', views.week_view), url(r'^room-view(?:.html)?/?$', views.room_view), url(r'^materials(?:.html)?/?$', views.materials), + url(r'^materials/editable-groups/?$', views.materials_editable_groups), url(r'^proceedings(?:.html)?/?$', views.proceedings), url(r'^proceedings(?:.html)?/finalize/?$', views.finalize_proceedings), url(r'^proceedings/acknowledgements/$', views.proceedings_acknowledgements), diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index 988cfd04a..570ff5785 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -20,6 +20,7 @@ from django import forms from django.shortcuts import render, redirect, get_object_or_404 from django.http import HttpResponse, HttpResponseRedirect, HttpResponseForbidden, Http404 from django.contrib import messages +from django.contrib.auth.decorators import login_required from django.core.urlresolvers import reverse,reverse_lazy from django.db.models import Min, Max, Q from django.conf import settings @@ -140,6 +141,12 @@ def current_materials(request): else: raise Http404 +@login_required +def materials_editable_groups(request, num=None): + meeting = get_meeting(num) + return render(request, "meeting/materials_editable_groups.html", { + 'meeting_num': meeting.number}) + def ascii_alphanumeric(string): return re.match(r'^[a-zA-Z0-9]*$', string) diff --git a/ietf/secr/proceedings/views.py b/ietf/secr/proceedings/views.py index 93323613d..f3ddb5229 100644 --- a/ietf/secr/proceedings/views.py +++ b/ietf/secr/proceedings/views.py @@ -397,7 +397,7 @@ def select(request, meeting_num): ''' if not has_role(request.user,'Secretariat'): - return HttpResponseRedirect(reverse('ietf.meeting.views.materials', kwargs={'num':meeting_num})) + return HttpResponseRedirect(reverse('ietf.meeting.views.materials_editable_groups', kwargs={'num':meeting_num})) meeting = get_object_or_404(Meeting, number=meeting_num) proceedings_url = get_proceedings_url(meeting) diff --git a/ietf/templates/meeting/materials_editable_groups.html b/ietf/templates/meeting/materials_editable_groups.html new file mode 100644 index 000000000..ba3e4970e --- /dev/null +++ b/ietf/templates/meeting/materials_editable_groups.html @@ -0,0 +1,17 @@ +{% extends "base.html" %} +{# Copyright The IETF Trust 2016, All Rights Reserved #} +{% load origin %} + +{% load ietf_filters managed_groups %} + +{% block content %} + <h1>IETF {{ meeting_num }} meeting materials that you can edit</h1> + + {% if user and user.is_authenticated and user|managed_groups %} + {% for g in user|managed_groups %} + <p><a href="{% url 'ietf.meeting.views.session_details' num=meeting_num acronym=g.acronym %}">{{ g.acronym }}</a></p> + {% endfor %} + {% else %} + <p>You cannot manage the meeting materials for any groups.</p> + {% endif %} +{% endblock %} \ No newline at end of file diff --git a/ready-for-merge b/ready-for-merge index 91cb154f0..3a0c0d888 100644 --- a/ready-for-merge +++ b/ready-for-merge @@ -7,6 +7,7 @@ # --- Add entries at the top --- +/personal/housley/6.37.2.dev0@12326 /personal/adam/6.37.2.dev0@12340 /personal/housley/6.27.1.dev0@11663