Add inteirm meeting request disapprove and cancel capabilities
- Legacy-Id: 11135
This commit is contained in:
parent
0ed8a5cb02
commit
facead5d95
|
@ -595,6 +595,8 @@ def emailwrap(email):
|
|||
|
||||
@register.filter
|
||||
def document_content(doc):
|
||||
if doc is None:
|
||||
return None
|
||||
path = os.path.join(doc.get_file_path(),doc.filename_with_rev())
|
||||
return get_document_content(doc.name,path,markup=False)
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ from django.forms.fields import Field
|
|||
from django.utils.encoding import force_text
|
||||
from django.utils import six
|
||||
|
||||
from ietf.doc.models import Document, DocAlias, DocEvent, State, NewRevisionDocEvent
|
||||
from ietf.doc.models import Document, DocAlias, State, NewRevisionDocEvent
|
||||
from ietf.group.models import Group
|
||||
from ietf.ietfauth.utils import has_role
|
||||
from ietf.meeting.models import Session, countries, timezones
|
||||
|
|
|
@ -6,7 +6,6 @@ import urlparse
|
|||
from django.core.urlresolvers import reverse as urlreverse
|
||||
from django.conf import settings
|
||||
from django.contrib.auth.models import User
|
||||
from django.http import HttpRequest
|
||||
|
||||
from pyquery import PyQuery
|
||||
|
||||
|
@ -696,6 +695,26 @@ class InterimTests(TestCase):
|
|||
r = self.client.get(url)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
|
||||
def test_interim_request_disapprove(self):
|
||||
make_meeting_test_data()
|
||||
meeting = Meeting.objects.filter(type='interim',session__status='apprw',session__group__acronym='mars').first()
|
||||
url = urlreverse('ietf.meeting.views.interim_request_details',kwargs={'number':meeting.number})
|
||||
login_testing_unauthorized(self,"secretary",url)
|
||||
r = self.client.post(url,{'disapprove':'Disapprove'})
|
||||
self.assertEqual(r.status_code, 200)
|
||||
for session in meeting.session_set.all():
|
||||
self.assertEqual(session.status_id,'disappr')
|
||||
|
||||
def test_interim_request_cancel(self):
|
||||
make_meeting_test_data()
|
||||
meeting = Meeting.objects.filter(type='interim',session__status='apprw',session__group__acronym='mars').first()
|
||||
url = urlreverse('ietf.meeting.views.interim_request_details',kwargs={'number':meeting.number})
|
||||
login_testing_unauthorized(self,"secretary",url)
|
||||
r = self.client.post(url,{'cancel':'Cancel'})
|
||||
self.assertEqual(r.status_code, 200)
|
||||
for session in meeting.session_set.all():
|
||||
self.assertEqual(session.status_id,'canceledpa')
|
||||
|
||||
def test_interim_request_details_permissions(self):
|
||||
make_meeting_test_data()
|
||||
meeting = Meeting.objects.filter(type='interim',session__status='apprw',session__group__acronym='mars').first()
|
||||
|
|
|
@ -992,6 +992,7 @@ def interim_request(request):
|
|||
if meeting_type == 'series':
|
||||
meeting = create_interim_meeting_from_forms(form,f)
|
||||
f.save(request,group,meeting,is_approved)
|
||||
messages.success(request,'Interim meeting request submitted')
|
||||
return redirect(upcoming)
|
||||
else:
|
||||
assert False, (form.errors, formset.errors)
|
||||
|
@ -1012,12 +1013,18 @@ def interim_request_details(request, number):
|
|||
if request.method == 'POST':
|
||||
if request.POST.get('approve'):
|
||||
meeting.session_set.update(status_id='scheda')
|
||||
messages.success(request,'Interim meeting approved')
|
||||
if has_role(request.user, 'Secretariat'):
|
||||
return redirect(interim_send_announcement, number=number)
|
||||
if request.POST.get('disapprove'):
|
||||
pass
|
||||
meeting.session_set.update(status_id='disappr')
|
||||
messages.success(request,'Interim meeting disapproved')
|
||||
if request.POST.get('cancel'):
|
||||
pass
|
||||
if meeting.session_set.first().status.slug == 'sched':
|
||||
meeting.session_set.update(status_id='canceled')
|
||||
else:
|
||||
meeting.session_set.update(status_id='canceledpa')
|
||||
messages.success(request,'Interim meeting cancelled')
|
||||
|
||||
return render(request, "meeting/interim_request_details.html",{
|
||||
"meeting":meeting,
|
||||
|
|
|
@ -2042,6 +2042,16 @@
|
|||
"model": "name.sessionstatusname",
|
||||
"pk": "canceled"
|
||||
},
|
||||
{
|
||||
"fields": {
|
||||
"order": 0,
|
||||
"used": true,
|
||||
"name": "Cancelled - Pre Announcement",
|
||||
"desc": ""
|
||||
},
|
||||
"model": "name.sessionstatusname",
|
||||
"pk": "canceledpa"
|
||||
},
|
||||
{
|
||||
"fields": {
|
||||
"order": 0,
|
||||
|
|
|
@ -6,7 +6,7 @@ from django.db import migrations
|
|||
def populate_names(apps, schema_editor):
|
||||
SessionStatusName = apps.get_model("name", "SessionStatusName")
|
||||
SessionStatusName.objects.create(slug="scheda",name="Scheduled - Announcement to be sent")
|
||||
|
||||
SessionStatusName.objects.create(slug="canceledpa",name="Cancelled - Pre Announcement")
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
|
|
|
@ -36,8 +36,8 @@ class MainTestCase(TestCase):
|
|||
self.assertEqual(r.status_code, 200)
|
||||
sched = r.context['scheduled_groups']
|
||||
unsched = r.context['unscheduled_groups']
|
||||
self.failUnless(len(unsched) == 0)
|
||||
self.failUnless(len(sched) > 0)
|
||||
self.assertEqual(len(unsched),2)
|
||||
self.assertEqual(len(sched),2)
|
||||
|
||||
class SubmitRequestCase(TestCase):
|
||||
def test_submit_request(self):
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
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.
|
||||
|
||||
Agenda:
|
||||
{{ meeting.session_set.first.agenda | document_content }}
|
||||
{{ meeting.session_set.first.agenda | document_content | default_if_none:"(No agenda submitted)" }}
|
||||
|
||||
To join the interim meeting:
|
||||
{{ meeting.session_set.first.remote_instructions }}
|
||||
|
|
|
@ -43,14 +43,18 @@
|
|||
<form method="post">
|
||||
{% csrf_token %}
|
||||
{% if can_edit %}
|
||||
<a class="btn btn-default" href="">Edit</a>
|
||||
{% if sessions.0.status.slug == 'apprw' or sessions.0.status.slug == 'scheda' %}
|
||||
<a class="btn btn-default" href="">Edit</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if can_approve %}
|
||||
{% if can_approve and sessions.0.status.slug == 'apprw' %}
|
||||
<input class="btn btn-default" type="submit" value="Approve" name='approve' />
|
||||
<input class="btn btn-default" type="submit" value="Disapprove" name='disapprove' />
|
||||
{% endif %}
|
||||
{% if can_edit %}
|
||||
<input class="btn btn-default" type="submit" value="Cancel" name='cancel' />
|
||||
{% if can_edit %}
|
||||
{% if sessions.0.status.slug == 'apprw' or sessions.0.status.slug == 'scheda' or sessions.0.status.slug == 'sched' %}
|
||||
<input class="btn btn-default" type="submit" value="Cancel" name='cancel' />
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</form>
|
||||
|
||||
|
|
|
@ -94,6 +94,7 @@ def make_immutable_base_data():
|
|||
create_person(opsarea, "ad")
|
||||
sops = create_group(name="Server Operations", acronym="sops", type_id="wg", parent=opsarea)
|
||||
create_person(sops, "chair", name="Sops Chairman", username="sopschairman")
|
||||
create_person(sops, "secr", name="Sops Secretary", username="sopssecretary")
|
||||
|
||||
# create a bunch of ads for swarm tests
|
||||
for i in range(1, 10):
|
||||
|
|
Loading…
Reference in a new issue