Skip to content

Commit 9d4ca61

Browse files
committed
Merged in [16607] from rcross@amsl.com:
Fix issue where third session requests, which rerequire AD approval, get left with approved status, instead of scheduled, after Secretraiat sends out notifications of official schedule. Fixes ietf-tools#2765. - Legacy-Id: 16817 Note: SVN reference [16607] has been migrated to Git commit 9a82586
2 parents 7931b31 + f950f1b commit 9d4ca61

3 files changed

Lines changed: 22 additions & 9 deletions

File tree

ietf/secr/meetings/tests.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
from ietf.group.models import Group, GroupEvent
1919
from ietf.meeting.models import Meeting, Room, TimeSlot, SchedTimeSessAssignment, Session
2020
from ietf.meeting.test_data import make_meeting_test_data
21+
from ietf.name.models import SessionStatusName
2122
from ietf.person.models import Person
2223
from ietf.secr.meetings.forms import get_times
2324
from ietf.utils.mail import outbox
@@ -148,16 +149,21 @@ def test_blue_sheets_generate(self):
148149
def test_notifications(self):
149150
"Test Notifications"
150151
meeting = make_meeting_test_data()
152+
mars_group = Group.objects.get(acronym='mars')
153+
ames_group = Group.objects.get(acronym='ames')
154+
ames_stsa = meeting.agenda.assignments.get(session__group=ames_group)
155+
assert ames_stsa.session.status_id == 'schedw'
156+
mars_stsa = meeting.agenda.assignments.get(session__group=mars_group)
157+
mars_stsa.session.status = SessionStatusName.objects.get(slug='appr')
158+
mars_stsa.session.save()
151159
url = reverse('ietf.secr.meetings.views.notifications',kwargs={'meeting_id':72})
152160
self.client.login(username="secretary", password="secretary+password")
153161
response = self.client.get(url)
154162
self.assertEqual(response.status_code, 200)
155163
q = PyQuery(response.content)
156164
self.assertEqual(q('#id_notification_list').html(),'ames, mars')
157-
165+
158166
# test that only changes since last notification show up
159-
mars_group = Group.objects.get(acronym='mars')
160-
ames_group = Group.objects.get(acronym='ames')
161167
now = datetime.datetime.now()
162168
then = datetime.datetime.now()+datetime.timedelta(hours=1)
163169
person = Person.objects.get(name="(System)")
@@ -172,13 +178,17 @@ def test_notifications(self):
172178
q = PyQuery(response.content)
173179
self.assertEqual(q('#id_notification_list').html(),'ames')
174180

175-
# test that email goes out
181+
# test post: email goes out, status changed
176182
mailbox_before = len(outbox)
177183
self.client.login(username="secretary", password="secretary+password")
178184
response = self.client.post(url)
179185
self.assertEqual(response.status_code, 302)
180186
self.assertEqual(len(outbox), mailbox_before + 1)
181-
187+
ames_stsa = meeting.agenda.assignments.get(session__group=ames_group)
188+
assert ames_stsa.session.status_id == 'sched'
189+
mars_stsa = meeting.agenda.assignments.get(session__group=mars_group)
190+
assert mars_stsa.session.status_id == 'sched'
191+
182192
def test_meetings_rooms(self):
183193
meeting = make_meeting_test_data()
184194
url = reverse('ietf.secr.meetings.views.rooms',kwargs={'meeting_id':72,'schedule_name':'test-agenda'})

ietf/secr/meetings/views.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -571,7 +571,7 @@ def notifications(request, meeting_id):
571571
# ensure session state is scheduled
572572
for ss in meeting.agenda.assignments.all():
573573
session = ss.session
574-
if session.status.slug == "schedw":
574+
if session.status.slug in ["schedw", "appr"]:
575575
session.status_id = "sched"
576576
session.scheduled = datetime.datetime.now()
577577
session.save()

ietf/submit/tests.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
import debug # pyflakes:ignore
2525

26-
from ietf.submit.utils import expirable_submissions, expire_submission, ensure_person_email_info_exists
26+
from ietf.submit.utils import expirable_submissions, expire_submission
2727
from ietf.doc.factories import DocumentFactory, WgDraftFactory, IndividualDraftFactory
2828
from ietf.doc.models import Document, DocAlias, DocEvent, State, BallotPositionDocEvent, DocumentAuthor
2929
from ietf.doc.utils import create_ballot_if_not_open
@@ -378,8 +378,11 @@ def submit_existing(self, formats, change_authors=True, group_type='wg', stream_
378378
prev_author = draft.documentauthor_set.all()[0]
379379
if change_authors:
380380
# Make it such that one of the previous authors has an invalid email address
381-
bogus_person, bogus_email = ensure_person_email_info_exists('Bogus Person', None, draft.name)
382-
DocumentAuthor.objects.create(document=draft, person=bogus_person, email=bogus_email, order=draft.documentauthor_set.latest('order').order+1)
381+
nomail_author = PersonFactory()
382+
email = nomail_author.email()
383+
email.address='unknown-email-%s' % nomail_author.plain_ascii().replace(' ', '-')
384+
email.save()
385+
DocumentAuthor.objects.create(document=draft, person=nomail_author, email=email, order=draft.documentauthor_set.latest('order').order+1)
383386

384387
# Set the revision needed tag
385388
draft.tags.add("need-rev")

0 commit comments

Comments
 (0)