From dfa4bc0695c0c9694029eed99f4fb783836a138a Mon Sep 17 00:00:00 2001 From: russhousley Date: Sat, 18 Jul 2026 08:10:24 -0400 Subject: [PATCH] fix: Use 'Working Group' or 'BOF' on session notification messages (#11028) --- ietf/meeting/tests_session_requests.py | 65 +++++++++++++++++++ ietf/meeting/views_session_request.py | 7 +- .../meeting/session_request_info.txt | 2 +- .../meeting/session_request_view_table.html | 2 +- 4 files changed, 72 insertions(+), 4 deletions(-) diff --git a/ietf/meeting/tests_session_requests.py b/ietf/meeting/tests_session_requests.py index 42dbee5f230..1ea7d42f22a 100644 --- a/ietf/meeting/tests_session_requests.py +++ b/ietf/meeting/tests_session_requests.py @@ -12,6 +12,7 @@ from ietf.group.factories import GroupFactory, RoleFactory from ietf.meeting.models import Session, ResourceAssociation, SchedulingEvent, Constraint from ietf.meeting.factories import MeetingFactory, SessionFactory +from ietf.meeting.views_session_request import get_requester_text from ietf.name.models import ConstraintName, TimerangeName from ietf.person.factories import PersonFactory from ietf.person.models import Person @@ -724,6 +725,70 @@ def test_request_notification_msg(self): get_payload_text(msg), ) + def test_wg_request_notification_msg(self): + to = "" + subject = "Dummy subject" + template = "meeting/session_request_notification.txt" + header = "A new" + meeting = MeetingFactory(type_id="ietf", date=date_today()) + area = GroupFactory(type_id='area') + mars = GroupFactory(parent=area, acronym='mars') + secretariat_role = RoleFactory(group__acronym='secretariat', name_id='secr') + requester = get_requester_text(secretariat_role.person, mars) + context = {"header": header, "meeting": meeting, "requester": requester} + cc = "cc.a@example.com, cc.b@example.com" + bcc = "bcc@example.com" + + msg = send_mail( + None, + to, + None, + subject, + template, + context, + cc=cc, + bcc=bcc, + ) + # Undo the text wrapping for simple checking + payload = get_payload_text(msg).replace("\n"," ") + self.assertIn( + f"{header} meeting session request has just been submitted by {requester}", + payload, + ) + self.assertIn("MARS Working Group", payload) + + def test_bof_request_notification_msg(self): + to = "" + subject = "Dummy subject" + template = "meeting/session_request_notification.txt" + header = "A new" + meeting = MeetingFactory(type_id="ietf", date=date_today()) + bof = RoleFactory(group__type_id="wg", group__state_id="bof", name_id="chair").group + secretariat_role = RoleFactory(group__acronym='secretariat', name_id='secr') + requester = get_requester_text(secretariat_role.person, bof) + context = {"header": header, "meeting": meeting, "requester": requester} + cc = "cc.a@example.com, cc.b@example.com" + bcc = "bcc@example.com" + + msg = send_mail( + None, + to, + None, + subject, + template, + context, + cc=cc, + bcc=bcc, + ) + # Undo the text wrapping for simple checking + payload = get_payload_text(msg).replace("\n"," ") + self.assertIn( + f"{header} meeting session request has just been submitted by {requester}", + payload, + ) + self.assertIn("BOF", payload) + self.assertNotIn("Working Group", payload) + def test_request_notification_third_session(self): meeting = MeetingFactory(type_id='ietf', date=date_today()) ad = Person.objects.get(user__username='ad') diff --git a/ietf/meeting/views_session_request.py b/ietf/meeting/views_session_request.py index a1ef74f1b88..924249e9d4c 100644 --- a/ietf/meeting/views_session_request.py +++ b/ietf/meeting/views_session_request.py @@ -200,6 +200,9 @@ def get_requester_text(person, group): in the session request notification email, ie. Joe Smith, a Chair of the ancp working group """ + group_type = group.type.verbose_name + if group_type == "Working Group" and group.state_id == "bof": + group_type = group.state_id.upper() roles = group.role_set.filter(name__in=("chair", "secr", "ad"), person=person) if roles: rolename = str(roles[0].name) @@ -207,13 +210,13 @@ def get_requester_text(person, group): person.name, inflect.engine().a(rolename), group.acronym.upper(), - group.type.verbose_name, + group_type, ) if person.role_set.filter(name="secr", group__acronym="secretariat"): return "%s, on behalf of the %s %s" % ( person.name, group.acronym.upper(), - group.type.verbose_name, + group_type, ) diff --git a/ietf/templates/meeting/session_request_info.txt b/ietf/templates/meeting/session_request_info.txt index 2e96efb31f1..99502a5c573 100644 --- a/ietf/templates/meeting/session_request_info.txt +++ b/ietf/templates/meeting/session_request_info.txt @@ -1,7 +1,7 @@ {# Copyright The IETF Trust 2025, All Rights Reserved #} {% load ams_filters %} --------------------------------------------------------- -Working Group Name: {{ group.name }} +Group Name: {{ group.name }} Area Name: {{ group.parent }} Session Requester: {{ login }} {% if session.joint_with_groups %}{{ session.joint_for_session_display }} joint with: {{ session.joint_with_groups }}{% endif %} diff --git a/ietf/templates/meeting/session_request_view_table.html b/ietf/templates/meeting/session_request_view_table.html index a5cb85c2520..a5939f4755b 100644 --- a/ietf/templates/meeting/session_request_view_table.html +++ b/ietf/templates/meeting/session_request_view_table.html @@ -3,7 +3,7 @@
- Working Group Name + Group Name
{{ group.name }} ({{ group.acronym }})