Skip to content

Commit 4cce1b5

Browse files
committed
Make internal review email about an RG use the IRSG instead of the IESG in text and addresses. Fixes ietf-tools#2881. Commit ready for merge.
- Legacy-Id: 17288
1 parent 3568e72 commit 4cce1b5

4 files changed

Lines changed: 14343 additions & 14270 deletions

File tree

ietf/doc/mails.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright The IETF Trust 2010-2019, All Rights Reserved
1+
# Copyright The IETF Trust 2010-2020, All Rights Reserved
22
# -*- coding: utf-8 -*-
33
# generation of mails
44

@@ -542,5 +542,5 @@ def email_charter_internal_review(request, charter):
542542
milestones=charter.group.groupmilestone_set.filter(state="charter"),
543543
),
544544
cc=addrs.cc,
545-
extra={'Reply-To': ["iesg@ietf.org", ]},
545+
extra={'Reply-To': ["irsg@irtf.org" if charter.group.type_id == 'rg' else "iesg@ietf.org", ]},
546546
)

ietf/doc/tests_charter.py

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,44 @@ def find_event(t):
228228
self.assertEqual(r.status_code, 302)
229229
self.assertTrue("A new charter" in get_payload(outbox[-3]))
230230

231+
def test_change_rg_state(self):
232+
233+
irtf = Group.objects.get(acronym='irtf')
234+
235+
group = GroupFactory(acronym='somerg', type_id='rg', state_id='proposed',list_email='somerg@ietf.org',parent=irtf)
236+
charter = CharterFactory(group=group)
237+
238+
url = urlreverse('ietf.doc.views_charter.change_state', kwargs=dict(name=charter.name))
239+
login_testing_unauthorized(self, "secretary", url)
240+
241+
s = State.objects.get(used=True, type="charter", slug="intrev")
242+
empty_outbox()
243+
244+
r = self.client.post(url, dict(charter_state=str(s.pk), message="test message"))
245+
self.assertEqual(r.status_code, 302)
246+
247+
self.assertIn("Internal RG Review", outbox[-3]['Subject'])
248+
self.assertIn("iab@", outbox[-3]['To'])
249+
self.assertIn("irsg@", outbox[-3]['To'])
250+
body = get_payload(outbox[-3])
251+
for word in ["A new IRTF RG",
252+
"Mailing list", "somerg@ietf.org",
253+
"Charter", "Milestones"]:
254+
255+
self.assertIn(word, body)
256+
257+
self.assertIn("state changed", outbox[-2]['Subject'].lower())
258+
self.assertIn("iesg-secretary@", outbox[-2]['To'])
259+
body = get_payload(outbox[-2])
260+
for word in ["RG", "Charter", ]:
261+
self.assertIn(word, body)
262+
263+
self.assertIn("State Update Notice", outbox[-1]['Subject'])
264+
self.assertIn("somerg-chairs@", outbox[-1]['To'])
265+
body = get_payload(outbox[-1])
266+
for word in ["State changed", "Datatracker URL", ]:
267+
self.assertIn(word, body)
268+
231269
def test_abandon_bof(self):
232270
charter = CharterFactory(group__state_id='bof',group__type_id='wg')
233271
url = urlreverse('ietf.doc.views_charter.change_state',kwargs={'name':charter.name,'option':'abandon'})
@@ -575,6 +613,41 @@ def test_edit_review_announcement_text(self):
575613
self.assertTrue(group.name in charter.latest_event(WriteupDocEvent, type="changed_review_announcement").text)
576614
self.assertTrue(charter.group.name in charter.latest_event(WriteupDocEvent, type="changed_new_work_text").text)
577615

616+
def test_rg_edit_review_announcement_text(self):
617+
irtf = Group.objects.get(acronym='irtf')
618+
charter = CharterFactory(
619+
group__acronym = 'somerg',
620+
group__type_id = 'rg',
621+
group__list_email = 'somerg@ietf.org',
622+
group__parent = irtf,
623+
)
624+
group = charter.group
625+
626+
url = urlreverse('ietf.doc.views_charter.review_announcement_text', kwargs=dict(name=charter.name))
627+
self.client.logout()
628+
login_testing_unauthorized(self, "secretary", url)
629+
630+
by = Person.objects.get(user__username="secretary")
631+
(e1, e2) = default_review_text(group, charter, by)
632+
announcement_text = e1.text
633+
new_work_text = e2.text
634+
635+
empty_outbox()
636+
r = self.client.post(url, dict(
637+
announcement_text=announcement_text,
638+
new_work_text=new_work_text,
639+
send_both="1"))
640+
self.assertEqual(r.status_code, 302)
641+
self.assertEqual(len(outbox), 2)
642+
self.assertTrue(all(['RG Review' in m['Subject'] for m in outbox]))
643+
self.assertTrue('ietf-announce@' in outbox[0]['To'])
644+
self.assertTrue('somerg@' in outbox[0]['Cc'])
645+
self.assertTrue('new-work@' in outbox[1]['To'])
646+
self.assertIsNotNone(outbox[0]['Reply-To'])
647+
self.assertIsNotNone(outbox[1]['Reply-To'])
648+
self.assertTrue('irsg@irtf.org' in outbox[0]['Reply-To'])
649+
self.assertTrue('irsg@irtf.org' in outbox[1]['Reply-To'])
650+
578651
def test_edit_action_announcement_text(self):
579652
area = GroupFactory(type_id='area')
580653
RoleFactory(name_id='ad',group=area,person=Person.objects.get(user__username='ad'))

0 commit comments

Comments
 (0)