Merged in [12326] from housley@vigilsec.com:

Allow WG Chairs to manage the meeting materials when starting from the old WG Chair Dashboard in ietf.secr.proceedings
 - Legacy-Id: 12370
Note: SVN reference [12326] has been migrated to Git commit a37f41823c
This commit is contained in:
Henrik Levkowetz 2016-11-17 00:26:51 +00:00
commit 0a15bf9bb6
6 changed files with 42 additions and 1 deletions

View file

@ -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()

View file

@ -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),

View file

@ -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)

View file

@ -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)

View file

@ -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 %}

View file

@ -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