Skip to content

Commit

Permalink
Fixes #2172. Add Requested Resources and People who must be there, to…
Browse files Browse the repository at this point in the history
… email notifications of session requests. Commit ready for merge.

 - Legacy-Id: 12748
  • Loading branch information
rpcross committed Jan 27, 2017
1 parent 68bd38d commit eeb35e9
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 16 deletions.
59 changes: 45 additions & 14 deletions ietf/secr/sreq/tests.py
Expand Up @@ -2,18 +2,18 @@

from ietf.utils.test_utils import TestCase, unicontent
from ietf.group.models import Group
#from ietf.meeting.models import Session
#from ietf.utils.test_data import make_test_data
from ietf.meeting.test_data import make_meeting_test_data as make_test_data
from ietf.meeting.models import Meeting, Session
from ietf.meeting.test_data import make_meeting_test_data
from ietf.utils.mail import outbox, empty_outbox
from ietf.utils.test_data import make_test_data

from pyquery import PyQuery

SECR_USER='secretary'

class SreqUrlTests(TestCase):
def test_urls(self):
make_test_data()
make_meeting_test_data()

self.client.login(username="secretary", password="secretary+password")

Expand All @@ -29,7 +29,7 @@ def test_urls(self):

class SessionRequestTestCase(TestCase):
def test_main(self):
make_test_data()
make_meeting_test_data()
url = reverse('sessions')
self.client.login(username="secretary", password="secretary+password")
r = self.client.get(url)
Expand All @@ -42,20 +42,20 @@ def test_main(self):
class SubmitRequestCase(TestCase):
def test_submit_request(self):
make_test_data()
acronym = Group.objects.all()[0].acronym
url = reverse('sessions_new',kwargs={'acronym':acronym})
group = Group.objects.get(acronym='mars')
url = reverse('sessions_new',kwargs={'acronym':group.acronym})
post_data = {'num_session':'1',
'length_session1':'3600',
'attendees':'10',
'conflict1':'',
'comments':'need projector'}
self.client.login(username="secretary", password="secretary+password")
r = self.client.post(url,post_data)
self.assertEqual(r.status_code, 302)
self.assertRedirects(r, reverse('sessions_confirm', kwargs={'acronym':group.acronym}))

def test_submit_request_invalid(self):
make_test_data()
group = Group.objects.filter(type='wg').first()
group = Group.objects.get(acronym='mars')
url = reverse('sessions_new',kwargs={'acronym':group.acronym})
post_data = {'num_session':'2',
'length_session1':'3600',
Expand All @@ -69,9 +69,41 @@ def test_submit_request_invalid(self):
self.assertEqual(len(q('#session-request-form')),1)
self.assertTrue('You must enter a length for all sessions' in unicontent(r))

def test_request_notification(self):
make_test_data()
meeting = Meeting.objects.filter(type='ietf').first()
group = Group.objects.get(acronym='ames')
ad = group.parent.role_set.filter(name='ad').first().person
url = reverse('sessions_new',kwargs={'acronym':group.acronym})
confirm_url = reverse('sessions_confirm',kwargs={'acronym':group.acronym})
len_before = len(outbox)
post_data = {'num_session':'1',
'length_session1':'3600',
'attendees':'10',
'bethere':str(ad.pk),
'conflict1':'',
'comments':'',
'resources':'1'}
self.client.login(username="ameschairman", password="ameschairman+password")
# submit
r = self.client.post(url,post_data)
self.assertRedirects(r, confirm_url)
# confirm
r = self.client.post(confirm_url,{'submit':'Submit'})
self.assertRedirects(r, reverse('sessions'))
self.assertEqual(len(outbox),len_before+1)
notification = outbox[-1]
notification_payload = unicode(notification.get_payload(decode=True),"utf-8","replace")
session = Session.objects.get(meeting=meeting,group=group)
self.assertEqual(session.resources.count(),1)
self.assertEqual(session.people_constraints.count(),1)
resource = session.resources.first()
self.assertTrue(resource.desc in notification_payload)
self.assertTrue(ad.ascii_name() in notification_payload)

class LockAppTestCase(TestCase):
def test_edit_request(self):
meeting = make_test_data()
meeting = make_meeting_test_data()
meeting.session_request_lock_message='locked'
meeting.save()
group = Group.objects.get(acronym='mars')
Expand All @@ -83,7 +115,7 @@ def test_edit_request(self):
self.assertEqual(len(q(':disabled[name="submit"]')), 1)

def test_view_request(self):
meeting = make_test_data()
meeting = make_meeting_test_data()
meeting.session_request_lock_message='locked'
meeting.save()
group = Group.objects.get(acronym='mars')
Expand All @@ -95,7 +127,7 @@ def test_view_request(self):
self.assertEqual(len(q(':disabled[name="edit"]')), 1)

def test_new_request(self):
meeting = make_test_data()
meeting = make_meeting_test_data()
meeting.session_request_lock_message='locked'
meeting.save()
group = Group.objects.get(acronym='mars')
Expand All @@ -121,8 +153,7 @@ class EditRequestCase(TestCase):
class NotMeetingCase(TestCase):

def test_not_meeting(self):

make_test_data()
make_meeting_test_data()
group = Group.objects.get(acronym='mars')
url = reverse('sessions_no_session',kwargs={'acronym':group.acronym})
self.client.login(username="secretary", password="secretary+password")
Expand Down
6 changes: 6 additions & 0 deletions ietf/secr/templates/includes/session_info.txt
Expand Up @@ -13,6 +13,12 @@ Conflicts to Avoid:
{% if session.conflict3 %} Third Priority: {{ session.conflict3 }}{% endif %}


People who must be present:
{% for person in session.bethere %} {{ person.ascii_name }}
{% endfor %}
Resources Requested:
{% for resource in session.resources %} {{ resource.desc }}
{% endfor %}
Special Requests:
{{ session.comments }}
---------------------------------------------------------
8 changes: 6 additions & 2 deletions ietf/utils/test_data.py
Expand Up @@ -10,8 +10,8 @@
from ietf.group.models import Group, GroupHistory, Role, RoleHistory
from ietf.iesg.models import TelechatDate
from ietf.ipr.models import HolderIprDisclosure, IprDocRel, IprDisclosureStateName, IprLicenseTypeName
from ietf.meeting.models import Meeting
from ietf.name.models import StreamName, DocRelationshipName
from ietf.meeting.models import Meeting, ResourceAssociation
from ietf.name.models import StreamName, DocRelationshipName, RoomResourceName
from ietf.person.models import Person, Email
from ietf.group.utils import setup_default_community_list_for_group
from ietf.review.models import (ReviewRequest, ReviewerSettings, ReviewResultName, ReviewTypeName, ReviewTeamSettings )
Expand Down Expand Up @@ -377,6 +377,10 @@ def rfc_for_status_change_test_factory(name,rfc_num,std_level_id):
rfc_for_status_change_test_factory('draft-ietf-random-otherthing',9998,'inf')
rfc_for_status_change_test_factory('draft-was-never-issued',14,'unkn')

# Session Request ResourceAssociation
name = RoomResourceName.objects.get(slug='project')
ResourceAssociation.objects.create(name=name,icon='projector.png',desc='Projector in room')

# Instances of the remaining document types
# (Except liaison, liai-att, and recording which the code in ietf.doc does not use...)
# Meeting-related documents are created in make_meeting_test_data, and
Expand Down

0 comments on commit eeb35e9

Please sign in to comment.