From a37f41823cb0e4bb6c0cd5261ce880b134d15577 Mon Sep 17 00:00:00 2001 From: Russ Housley Date: Sat, 12 Nov 2016 05:40:12 +0000 Subject: [PATCH] Allow WG Chairs to manage the meeting materials when starting from the old WG Chair Dashboard in ietf.secr.proceedings - Legacy-Id: 12326 --- ietf/meeting/tests_views.py | 15 +++++++++++++++ ietf/meeting/urls.py | 1 + ietf/meeting/views.py | 7 +++++++ ietf/secr/proceedings/views.py | 2 +- .../meeting/materials_editable_groups.html | 17 +++++++++++++++++ 5 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 ietf/templates/meeting/materials_editable_groups.html diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py index 527616ed9..c682c5ef9 100644 --- a/ietf/meeting/tests_views.py +++ b/ietf/meeting/tests_views.py @@ -274,6 +274,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 ef30e5891..56a33f912 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 c4179297a..06a39b83e 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 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 %} +

IETF {{ meeting_num }} meeting materials that you can edit

+ + {% if user and user.is_authenticated and user|managed_groups %} + {% for g in user|managed_groups %} +

{{ g.acronym }}

+ {% endfor %} + {% else %} +

You cannot manage the meeting materials for any groups.

+ {% endif %} +{% endblock %} \ No newline at end of file