Skip to content

Commit eeb35e9

Browse files
committed
Fixes ietf-tools#2172. Add Requested Resources and People who must be there, to email notifications of session requests. Commit ready for merge.
- Legacy-Id: 12748
1 parent 68bd38d commit eeb35e9

3 files changed

Lines changed: 57 additions & 16 deletions

File tree

ietf/secr/sreq/tests.py

Lines changed: 45 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,18 @@
22

33
from ietf.utils.test_utils import TestCase, unicontent
44
from ietf.group.models import Group
5-
#from ietf.meeting.models import Session
6-
#from ietf.utils.test_data import make_test_data
7-
from ietf.meeting.test_data import make_meeting_test_data as make_test_data
5+
from ietf.meeting.models import Meeting, Session
6+
from ietf.meeting.test_data import make_meeting_test_data
87
from ietf.utils.mail import outbox, empty_outbox
8+
from ietf.utils.test_data import make_test_data
99

1010
from pyquery import PyQuery
1111

1212
SECR_USER='secretary'
1313

1414
class SreqUrlTests(TestCase):
1515
def test_urls(self):
16-
make_test_data()
16+
make_meeting_test_data()
1717

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

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

3030
class SessionRequestTestCase(TestCase):
3131
def test_main(self):
32-
make_test_data()
32+
make_meeting_test_data()
3333
url = reverse('sessions')
3434
self.client.login(username="secretary", password="secretary+password")
3535
r = self.client.get(url)
@@ -42,20 +42,20 @@ def test_main(self):
4242
class SubmitRequestCase(TestCase):
4343
def test_submit_request(self):
4444
make_test_data()
45-
acronym = Group.objects.all()[0].acronym
46-
url = reverse('sessions_new',kwargs={'acronym':acronym})
45+
group = Group.objects.get(acronym='mars')
46+
url = reverse('sessions_new',kwargs={'acronym':group.acronym})
4747
post_data = {'num_session':'1',
4848
'length_session1':'3600',
4949
'attendees':'10',
5050
'conflict1':'',
5151
'comments':'need projector'}
5252
self.client.login(username="secretary", password="secretary+password")
5353
r = self.client.post(url,post_data)
54-
self.assertEqual(r.status_code, 302)
54+
self.assertRedirects(r, reverse('sessions_confirm', kwargs={'acronym':group.acronym}))
5555

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

72+
def test_request_notification(self):
73+
make_test_data()
74+
meeting = Meeting.objects.filter(type='ietf').first()
75+
group = Group.objects.get(acronym='ames')
76+
ad = group.parent.role_set.filter(name='ad').first().person
77+
url = reverse('sessions_new',kwargs={'acronym':group.acronym})
78+
confirm_url = reverse('sessions_confirm',kwargs={'acronym':group.acronym})
79+
len_before = len(outbox)
80+
post_data = {'num_session':'1',
81+
'length_session1':'3600',
82+
'attendees':'10',
83+
'bethere':str(ad.pk),
84+
'conflict1':'',
85+
'comments':'',
86+
'resources':'1'}
87+
self.client.login(username="ameschairman", password="ameschairman+password")
88+
# submit
89+
r = self.client.post(url,post_data)
90+
self.assertRedirects(r, confirm_url)
91+
# confirm
92+
r = self.client.post(confirm_url,{'submit':'Submit'})
93+
self.assertRedirects(r, reverse('sessions'))
94+
self.assertEqual(len(outbox),len_before+1)
95+
notification = outbox[-1]
96+
notification_payload = unicode(notification.get_payload(decode=True),"utf-8","replace")
97+
session = Session.objects.get(meeting=meeting,group=group)
98+
self.assertEqual(session.resources.count(),1)
99+
self.assertEqual(session.people_constraints.count(),1)
100+
resource = session.resources.first()
101+
self.assertTrue(resource.desc in notification_payload)
102+
self.assertTrue(ad.ascii_name() in notification_payload)
103+
72104
class LockAppTestCase(TestCase):
73105
def test_edit_request(self):
74-
meeting = make_test_data()
106+
meeting = make_meeting_test_data()
75107
meeting.session_request_lock_message='locked'
76108
meeting.save()
77109
group = Group.objects.get(acronym='mars')
@@ -83,7 +115,7 @@ def test_edit_request(self):
83115
self.assertEqual(len(q(':disabled[name="submit"]')), 1)
84116

85117
def test_view_request(self):
86-
meeting = make_test_data()
118+
meeting = make_meeting_test_data()
87119
meeting.session_request_lock_message='locked'
88120
meeting.save()
89121
group = Group.objects.get(acronym='mars')
@@ -95,7 +127,7 @@ def test_view_request(self):
95127
self.assertEqual(len(q(':disabled[name="edit"]')), 1)
96128

97129
def test_new_request(self):
98-
meeting = make_test_data()
130+
meeting = make_meeting_test_data()
99131
meeting.session_request_lock_message='locked'
100132
meeting.save()
101133
group = Group.objects.get(acronym='mars')
@@ -121,8 +153,7 @@ class EditRequestCase(TestCase):
121153
class NotMeetingCase(TestCase):
122154

123155
def test_not_meeting(self):
124-
125-
make_test_data()
156+
make_meeting_test_data()
126157
group = Group.objects.get(acronym='mars')
127158
url = reverse('sessions_no_session',kwargs={'acronym':group.acronym})
128159
self.client.login(username="secretary", password="secretary+password")

ietf/secr/templates/includes/session_info.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,12 @@ Conflicts to Avoid:
1313
{% if session.conflict3 %} Third Priority: {{ session.conflict3 }}{% endif %}
1414

1515

16+
People who must be present:
17+
{% for person in session.bethere %} {{ person.ascii_name }}
18+
{% endfor %}
19+
Resources Requested:
20+
{% for resource in session.resources %} {{ resource.desc }}
21+
{% endfor %}
1622
Special Requests:
1723
{{ session.comments }}
1824
---------------------------------------------------------

ietf/utils/test_data.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
from ietf.group.models import Group, GroupHistory, Role, RoleHistory
1111
from ietf.iesg.models import TelechatDate
1212
from ietf.ipr.models import HolderIprDisclosure, IprDocRel, IprDisclosureStateName, IprLicenseTypeName
13-
from ietf.meeting.models import Meeting
14-
from ietf.name.models import StreamName, DocRelationshipName
13+
from ietf.meeting.models import Meeting, ResourceAssociation
14+
from ietf.name.models import StreamName, DocRelationshipName, RoomResourceName
1515
from ietf.person.models import Person, Email
1616
from ietf.group.utils import setup_default_community_list_for_group
1717
from ietf.review.models import (ReviewRequest, ReviewerSettings, ReviewResultName, ReviewTypeName, ReviewTeamSettings )
@@ -377,6 +377,10 @@ def rfc_for_status_change_test_factory(name,rfc_num,std_level_id):
377377
rfc_for_status_change_test_factory('draft-ietf-random-otherthing',9998,'inf')
378378
rfc_for_status_change_test_factory('draft-was-never-issued',14,'unkn')
379379

380+
# Session Request ResourceAssociation
381+
name = RoomResourceName.objects.get(slug='project')
382+
ResourceAssociation.objects.create(name=name,icon='projector.png',desc='Projector in room')
383+
380384
# Instances of the remaining document types
381385
# (Except liaison, liai-att, and recording which the code in ietf.doc does not use...)
382386
# Meeting-related documents are created in make_meeting_test_data, and

0 commit comments

Comments
 (0)