Skip to content

Commit bfaf558

Browse files
committed
Liaison edit view. See ietf-tools#362
- Legacy-Id: 2475
1 parent 2cdc041 commit bfaf558

7 files changed

Lines changed: 50 additions & 9 deletions

File tree

ietf/liaisons/accounts.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
from ietf.idtracker.models import Role, PersonOrOrgInfo
22

33

4+
LIAISON_EDIT_GROUPS = ['Liaison_Manager', 'Secreatriat']
5+
46
def get_ietf_chair():
57
person = PersonOrOrgInfo.objects.filter(role=Role.IETF_CHAIR)
68
return person and person[0] or None

ietf/liaisons/forms.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,9 +251,17 @@ def save_extra_fields(self, liaison):
251251
liaison.save()
252252

253253

254+
class EditLiaisonForm(LiaisonForm):
255+
256+
pass
257+
258+
254259
def liaison_form_factory(request, **kwargs):
255260
user = request.user
256261
force_incoming = 'incoming' in request.GET.keys()
262+
liaison = kwargs.pop('liaison', None)
263+
if liaison:
264+
return EditLiaisonForm(instance=liaison, **kwargs)
257265
if not force_incoming and can_add_outgoing_liaison(user):
258266
return OutgoingLiaisonForm(user, **kwargs)
259267
elif can_add_incoming_liaison(user):

ietf/liaisons/urls.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
# there's an opportunity for date-based filtering.
1212
urlpatterns = patterns('django.views.generic.list_detail',
13-
url(r'^(?P<object_id>\d+)/$', 'object_detail', info_dict, name='liaison_detail'),
1413
)
1514

1615
urlpatterns += patterns('django.views.generic.simple',
@@ -23,6 +22,8 @@
2322

2423
urlpatterns += patterns('ietf.liaisons.views',
2524
url(r'^$', 'liaison_list', name='liaison_list'),
25+
url(r'^(?P<object_id>\d+)/$', 'liaison_detail', name='liaison_detail'),
26+
url(r'^(?P<object_id>\d+)/edit/$', 'liaison_edit', name='liaison_edit'),
2627
url(r'^for_approval/$', 'liaison_approval_list', name='liaison_approval_list'),
2728
url(r'^for_approval/(?P<object_id>\d+)/$', 'liaison_approval_detail', name='liaison_approval_detail'),
2829
url(r'^add/$', 'add_liaison', name='add_liaison'),

ietf/liaisons/views.py

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,24 @@
55
from django.core.urlresolvers import reverse
66
from django.db.models import Q
77
from django.http import HttpResponse, HttpResponseRedirect
8-
from django.shortcuts import render_to_response
8+
from django.shortcuts import render_to_response, get_object_or_404
99
from django.template import RequestContext
1010
from django.utils import simplejson
1111
from django.views.generic.list_detail import object_list, object_detail
1212

1313
from ietf.liaisons.accounts import (get_person_for_user, can_add_outgoing_liaison,
14-
can_add_incoming_liaison)
14+
can_add_incoming_liaison, LIAISON_EDIT_GROUPS)
1515
from ietf.liaisons.decorators import can_submit_liaison
1616
from ietf.liaisons.forms import liaison_form_factory
1717
from ietf.liaisons.models import LiaisonDetail, OutgoingLiaisonApproval
1818
from ietf.liaisons.utils import IETFHM
1919

2020

2121
@can_submit_liaison
22-
def add_liaison(request):
22+
def add_liaison(request, liaison=None):
2323
if request.method == 'POST':
2424
form = liaison_form_factory(request, data=request.POST.copy(),
25-
files = request.FILES)
25+
files = request.FILES, liaison=liaison)
2626
if form.is_valid():
2727
liaison = form.save()
2828
if request.POST.get('send', None):
@@ -32,11 +32,12 @@ def add_liaison(request):
3232
return _fake_email_view(request, liaison)
3333
return HttpResponseRedirect(reverse('liaison_list'))
3434
else:
35-
form = liaison_form_factory(request)
35+
form = liaison_form_factory(request, liaison=liaison)
3636

3737
return render_to_response(
3838
'liaisons/liaisondetail_edit.html',
39-
{'form': form},
39+
{'form': form,
40+
'liaison': liaison},
4041
context_instance=RequestContext(request),
4142
)
4243

@@ -88,6 +89,7 @@ def liaison_list(request):
8889
can_send_outgoing = can_add_outgoing_liaison(user)
8990
can_send_incoming = can_add_incoming_liaison(user)
9091
can_approve = False
92+
can_edit = False
9193

9294
person = get_person_for_user(request.user)
9395
if person:
@@ -101,6 +103,7 @@ def liaison_list(request):
101103
template_name='liaisons/liaisondetail_list.html',
102104
extra_context={'can_manage': can_approve or can_send_incoming or can_send_outgoing,
103105
'can_approve': can_approve,
106+
'can_edit': can_edit,
104107
'can_send_incoming': can_send_incoming,
105108
'can_send_outgoing': can_send_outgoing},
106109
)
@@ -147,3 +150,19 @@ def liaison_approval_detail(request, object_id):
147150
object_id=object_id,
148151
template_name='liaisons/liaisondetail_approval_detail.html',
149152
)
153+
154+
155+
def liaison_detail(request, object_id):
156+
public_liaisons = LiaisonDetail.objects.filter(Q(approval__isnull=True)|Q(approval__approved=True)).order_by("-submitted_date")
157+
can_edit = False
158+
if request.user.groups.filter(name__in=LIAISON_EDIT_GROUPS):
159+
can_edit = True
160+
return object_detail(request,
161+
public_liaisons,
162+
object_id=object_id,
163+
extra_context = {'can_edit': can_edit}
164+
)
165+
166+
def liaison_edit(request, object_id):
167+
liaison = get_object_or_404(LiaisonDetail, pk=object_id)
168+
return add_liaison(request, liaison=liaison)

ietf/templates/liaisons/liaisondetail_detail.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,4 +67,9 @@ <h1>Liaison Statement: {% include 'liaisons/liaison_title.html' %}</h1>
6767
{% endif %}
6868
</table>
6969

70+
{% if can_edit %}
71+
<form method="get" action="{% url liaison_edit object.pk %}">
72+
<input type="submit" value="Edit" />
73+
</form>
74+
{% endif %}
7075
{% endblock %}

ietf/templates/liaisons/liaisondetail_edit.html

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
11
{% extends "base.html" %}
22
{# Copyright The IETF Trust 2007, All Rights Reserved #}
33
{% load ietf_filters %}
4-
{% block title %}Liaison Statement: {% include 'liaisons/liaison_title.html' %}{% endblock %}
4+
{% block title %}{% if liaison %}Edit liaison: {{ liaison }}{% else %}Send Liaison Statement{% endif %}{% endblock %}
55

66
{% block pagehead %}
77
{{ form.media }}
88
{% endblock %}
99

1010
{% block content %}
11-
<h1>Send Liaison Statement</h1>
11+
<h1>{% if liaison %}Edit liaison: {{ liaison }}{% else %}Send Liaison Statement{% endif %}</h1>
1212

13+
{% if not liaison %}
1314
<ul>
1415
<li>If you wish to submit your liaison statement by e-mail, then please send it to <a href="mailto:statements@ietf.org">statements@ietf.org</a></li>
1516
<li>Fields marked with <span class="requiredField">*</span> are required. For detailed descriptions of the fields see <a href="https://datatracker.ietf.org/liaison/help/fields/">Field help</a></li>
1617
</ul>
18+
{% endif %}
1719

1820
{{ form }}
1921

ietf/templates/liaisons/liaisonform.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,12 @@ <h2>{{ fieldset.name }}</h2>
4343
{% endfor %}
4444

4545
<div class="submitrow">
46+
{% if form.liaison %}
47+
<input type="submit" value="Edit" name="edit" />
48+
{% else %}
4649
<input type="submit" value="Send and Post" name="send" />
4750
<input type="submit" value="Post Only" name="post_only" />
51+
{% endif %}
4852
</div>
4953
</div>
5054

0 commit comments

Comments
 (0)