Skip to content

Commit facead5

Browse files
committed
Add inteirm meeting request disapprove and cancel capabilities
- Legacy-Id: 11135
1 parent 0ed8a5c commit facead5

10 files changed

Lines changed: 55 additions & 12 deletions

File tree

ietf/doc/templatetags/ietf_filters.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -595,6 +595,8 @@ def emailwrap(email):
595595

596596
@register.filter
597597
def document_content(doc):
598+
if doc is None:
599+
return None
598600
path = os.path.join(doc.get_file_path(),doc.filename_with_rev())
599601
return get_document_content(doc.name,path,markup=False)
600602

ietf/meeting/forms.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
from django.utils.encoding import force_text
99
from django.utils import six
1010

11-
from ietf.doc.models import Document, DocAlias, DocEvent, State, NewRevisionDocEvent
11+
from ietf.doc.models import Document, DocAlias, State, NewRevisionDocEvent
1212
from ietf.group.models import Group
1313
from ietf.ietfauth.utils import has_role
1414
from ietf.meeting.models import Session, countries, timezones

ietf/meeting/tests_views.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
from django.core.urlresolvers import reverse as urlreverse
77
from django.conf import settings
88
from django.contrib.auth.models import User
9-
from django.http import HttpRequest
109

1110
from pyquery import PyQuery
1211

@@ -696,6 +695,26 @@ def test_interim_request_details(self):
696695
r = self.client.get(url)
697696
self.assertEqual(r.status_code, 200)
698697

698+
def test_interim_request_disapprove(self):
699+
make_meeting_test_data()
700+
meeting = Meeting.objects.filter(type='interim',session__status='apprw',session__group__acronym='mars').first()
701+
url = urlreverse('ietf.meeting.views.interim_request_details',kwargs={'number':meeting.number})
702+
login_testing_unauthorized(self,"secretary",url)
703+
r = self.client.post(url,{'disapprove':'Disapprove'})
704+
self.assertEqual(r.status_code, 200)
705+
for session in meeting.session_set.all():
706+
self.assertEqual(session.status_id,'disappr')
707+
708+
def test_interim_request_cancel(self):
709+
make_meeting_test_data()
710+
meeting = Meeting.objects.filter(type='interim',session__status='apprw',session__group__acronym='mars').first()
711+
url = urlreverse('ietf.meeting.views.interim_request_details',kwargs={'number':meeting.number})
712+
login_testing_unauthorized(self,"secretary",url)
713+
r = self.client.post(url,{'cancel':'Cancel'})
714+
self.assertEqual(r.status_code, 200)
715+
for session in meeting.session_set.all():
716+
self.assertEqual(session.status_id,'canceledpa')
717+
699718
def test_interim_request_details_permissions(self):
700719
make_meeting_test_data()
701720
meeting = Meeting.objects.filter(type='interim',session__status='apprw',session__group__acronym='mars').first()

ietf/meeting/views.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -992,6 +992,7 @@ def interim_request(request):
992992
if meeting_type == 'series':
993993
meeting = create_interim_meeting_from_forms(form,f)
994994
f.save(request,group,meeting,is_approved)
995+
messages.success(request,'Interim meeting request submitted')
995996
return redirect(upcoming)
996997
else:
997998
assert False, (form.errors, formset.errors)
@@ -1012,12 +1013,18 @@ def interim_request_details(request, number):
10121013
if request.method == 'POST':
10131014
if request.POST.get('approve'):
10141015
meeting.session_set.update(status_id='scheda')
1016+
messages.success(request,'Interim meeting approved')
10151017
if has_role(request.user, 'Secretariat'):
10161018
return redirect(interim_send_announcement, number=number)
10171019
if request.POST.get('disapprove'):
1018-
pass
1020+
meeting.session_set.update(status_id='disappr')
1021+
messages.success(request,'Interim meeting disapproved')
10191022
if request.POST.get('cancel'):
1020-
pass
1023+
if meeting.session_set.first().status.slug == 'sched':
1024+
meeting.session_set.update(status_id='canceled')
1025+
else:
1026+
meeting.session_set.update(status_id='canceledpa')
1027+
messages.success(request,'Interim meeting cancelled')
10211028

10221029
return render(request, "meeting/interim_request_details.html",{
10231030
"meeting":meeting,

ietf/name/fixtures/names.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2042,6 +2042,16 @@
20422042
"model": "name.sessionstatusname",
20432043
"pk": "canceled"
20442044
},
2045+
{
2046+
"fields": {
2047+
"order": 0,
2048+
"used": true,
2049+
"name": "Cancelled - Pre Announcement",
2050+
"desc": ""
2051+
},
2052+
"model": "name.sessionstatusname",
2053+
"pk": "canceledpa"
2054+
},
20452055
{
20462056
"fields": {
20472057
"order": 0,

ietf/name/migrations/0011_add_session_status.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
def populate_names(apps, schema_editor):
77
SessionStatusName = apps.get_model("name", "SessionStatusName")
88
SessionStatusName.objects.create(slug="scheda",name="Scheduled - Announcement to be sent")
9-
9+
SessionStatusName.objects.create(slug="canceledpa",name="Cancelled - Pre Announcement")
1010

1111
class Migration(migrations.Migration):
1212

ietf/secr/sreq/tests.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ def test_main(self):
3636
self.assertEqual(r.status_code, 200)
3737
sched = r.context['scheduled_groups']
3838
unsched = r.context['unscheduled_groups']
39-
self.failUnless(len(unsched) == 0)
40-
self.failUnless(len(sched) > 0)
39+
self.assertEqual(len(unsched),2)
40+
self.assertEqual(len(sched),2)
4141

4242
class SubmitRequestCase(TestCase):
4343
def test_submit_request(self):

ietf/templates/meeting/interim_announcement.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
virtual interim meeting on {{ meeting.date }} from {{ meeting.session_set.first | session_start_time | date:"H:i" }} to {{ meeting.session_set.first | session_end_time | date:"H:i" }} UTC.
33

44
Agenda:
5-
{{ meeting.session_set.first.agenda | document_content }}
5+
{{ meeting.session_set.first.agenda | document_content | default_if_none:"(No agenda submitted)" }}
66

77
To join the interim meeting:
88
{{ meeting.session_set.first.remote_instructions }}

ietf/templates/meeting/interim_request_details.html

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,18 @@ <h1>Interim Meeting Request Details</h1>
4343
<form method="post">
4444
{% csrf_token %}
4545
{% if can_edit %}
46-
<a class="btn btn-default" href="">Edit</a>
46+
{% if sessions.0.status.slug == 'apprw' or sessions.0.status.slug == 'scheda' %}
47+
<a class="btn btn-default" href="">Edit</a>
48+
{% endif %}
4749
{% endif %}
48-
{% if can_approve %}
50+
{% if can_approve and sessions.0.status.slug == 'apprw' %}
4951
<input class="btn btn-default" type="submit" value="Approve" name='approve' />
5052
<input class="btn btn-default" type="submit" value="Disapprove" name='disapprove' />
5153
{% endif %}
52-
{% if can_edit %}
53-
<input class="btn btn-default" type="submit" value="Cancel" name='cancel' />
54+
{% if can_edit %}
55+
{% if sessions.0.status.slug == 'apprw' or sessions.0.status.slug == 'scheda' or sessions.0.status.slug == 'sched' %}
56+
<input class="btn btn-default" type="submit" value="Cancel" name='cancel' />
57+
{% endif %}
5458
{% endif %}
5559
</form>
5660

ietf/utils/test_data.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ def make_immutable_base_data():
9494
create_person(opsarea, "ad")
9595
sops = create_group(name="Server Operations", acronym="sops", type_id="wg", parent=opsarea)
9696
create_person(sops, "chair", name="Sops Chairman", username="sopschairman")
97+
create_person(sops, "secr", name="Sops Secretary", username="sopssecretary")
9798

9899
# create a bunch of ads for swarm tests
99100
for i in range(1, 10):

0 commit comments

Comments
 (0)