Add stream edit page for setting delegates
- Legacy-Id: 6254
This commit is contained in:
parent
210a90e0b4
commit
5f6f966355
|
@ -7,6 +7,7 @@ import views
|
|||
urlpatterns = patterns('',
|
||||
(r'^$', views.streams),
|
||||
(r'^(?P<acronym>[a-zA-Z0-9-]+)/$', views.stream_documents, None),
|
||||
(r'^(?P<acronym>[a-zA-Z0-9-]+)/edit/$', views.stream_edit),
|
||||
# (r'^(?P<acronym>[a-zA-Z0-9-]+)/history/$', views.stream_history),
|
||||
# (r'^(?P<acronym>[a-zA-Z0-9-]+)/edit/$', views.stream_edit)
|
||||
(r'^management/', include('ietf.ietfworkflows.urls')),
|
||||
|
|
|
@ -1,13 +1,17 @@
|
|||
# Copyright The IETF Trust 2008, All Rights Reserved
|
||||
|
||||
from django.shortcuts import render_to_response
|
||||
from django.shortcuts import render_to_response, get_object_or_404, redirect
|
||||
from django.template import RequestContext, loader
|
||||
from django.http import Http404, HttpResponse
|
||||
from django.http import Http404, HttpResponse, HttpResponseForbidden
|
||||
from django import forms
|
||||
|
||||
from ietf.group.models import Group
|
||||
from ietf.group.models import *
|
||||
from ietf.group.utils import *
|
||||
from ietf.doc.models import Document
|
||||
from ietf.doc.views_search import SearchForm, retrieve_search_results
|
||||
from ietf.name.models import StreamName
|
||||
from ietf.ietfauth.utils import has_role
|
||||
from ietf.person.forms import EmailsField
|
||||
|
||||
import debug
|
||||
|
||||
|
@ -26,4 +30,46 @@ def stream_documents(request, acronym):
|
|||
docs, meta = retrieve_search_results(form)
|
||||
return render_to_response('group/stream_documents.html', {'stream':stream, 'docs':docs, 'meta':meta }, context_instance=RequestContext(request))
|
||||
|
||||
|
||||
class StreamEditForm(forms.Form):
|
||||
delegates = EmailsField(label="Delegates", required=False, help_text=u"Type in name to search for person")
|
||||
|
||||
def stream_edit(request, acronym):
|
||||
group = get_object_or_404(Group, acronym=acronym)
|
||||
|
||||
if not (has_role(request.user, "Secretariat") or group.has_role(request.user, "chair")):
|
||||
return HttpResponseForbidden("You don't have permission to access this page.")
|
||||
|
||||
chairs = Email.objects.filter(role__group=group, role__name="chair").select_related("person")
|
||||
|
||||
if request.method == 'POST':
|
||||
form = StreamEditForm(request.POST)
|
||||
|
||||
if form.is_valid():
|
||||
save_group_in_history(group)
|
||||
|
||||
# update roles
|
||||
attr, slug, title = ('delegates', 'delegate', "Delegates")
|
||||
|
||||
new = form.cleaned_data[attr]
|
||||
old = Email.objects.filter(role__group=group, role__name=slug).select_related("person")
|
||||
if set(new) != set(old):
|
||||
desc = "%s changed to <b>%s</b> from %s" % (
|
||||
title, ", ".join(x.get_name() for x in new), ", ".join(x.get_name() for x in old))
|
||||
|
||||
GroupEvent.objects.create(group=group, by=request.user.get_profile(), type="info_changed", desc=desc)
|
||||
|
||||
group.role_set.filter(name=slug).delete()
|
||||
for e in new:
|
||||
Role.objects.get_or_create(name_id=slug, email=e, group=group, person=e.person)
|
||||
|
||||
return redirect("ietf.group.views.streams")
|
||||
else:
|
||||
form = StreamEditForm(initial=dict(delegates=Email.objects.filter(role__group=group, role__name="delegate")))
|
||||
|
||||
return render_to_response('group/stream_edit.html',
|
||||
{'group': group,
|
||||
'chairs': chairs,
|
||||
'form': form,
|
||||
},
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
|
|
55
ietf/templates/group/stream_edit.html
Normal file
55
ietf/templates/group/stream_edit.html
Normal file
|
@ -0,0 +1,55 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Manage {{ group.name }} stream{% endblock %}
|
||||
|
||||
{% block morecss %}
|
||||
form.edit td { padding-bottom: .5em; }
|
||||
{% endblock %}
|
||||
|
||||
{% block pagehead %}
|
||||
<link rel="stylesheet" type="text/css" href="/css/token-input.css"></link>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% load ietf_filters %}
|
||||
<h1>Manage {{ group.name }} stream</h1>
|
||||
|
||||
<p>
|
||||
<b>Chair{{ chairs|pluralize }}:</b>
|
||||
{% for chair in chairs %}
|
||||
{{ chair.person.plain_name }} <{{ chair.address }}>{% if not forloop.last %}, {% endif %}
|
||||
{% endfor %}
|
||||
</p>
|
||||
|
||||
<p>Delegates can be assigned with permission to do the tasks of the
|
||||
chair{{ chairs|pluralize }}. Note that in order to actually do so, the delegates need a
|
||||
Datatracker account. New accounts can be
|
||||
<a href="{% url create_account %}">created here</a>.</p>
|
||||
|
||||
<form class="edit" action="" method="POST">
|
||||
<table>
|
||||
{% for field in form.visible_fields %}
|
||||
<tr>
|
||||
<th>{{ field.label_tag }}: {% if field.field.required %}*{% endif %}</th>
|
||||
<td>{{ field }}
|
||||
{% if field.help_text %}<div class="help">{{ field.help_text }}</div>{% endif %}
|
||||
{{ field.errors }}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
<tr>
|
||||
<td></td>
|
||||
<td class="actions">
|
||||
<a class="button" href="{% url ietf.group.views.streams %}">Cancel</a>
|
||||
<input class="button" type="submit" value="Save"/>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
{% endblock %}
|
||||
|
||||
{% block content_end %}
|
||||
<script type="text/javascript" src="/js/lib/jquery.tokeninput.js"></script>
|
||||
<script type="text/javascript" src="/js/lib/json2.js"></script>
|
||||
<script type="text/javascript" src="/js/tokenized-field.js"></script>
|
||||
{% endblock %}
|
Loading…
Reference in a new issue