From 7db98010e237ac7939084874b94c9b1582bcc3e1 Mon Sep 17 00:00:00 2001
From: Robert Sparks <rjsparks@nostrum.com>
Date: Thu, 26 Aug 2021 21:51:04 +0000
Subject: [PATCH 1/4] Include new conflict types in the session request
 notification email. Fixes #3381. Commit ready for merge.  - Legacy-Id: 19301

---
 ietf/secr/sreq/tests.py                       | 5 ++++-
 ietf/secr/sreq/views.py                       | 2 ++
 ietf/secr/templates/includes/session_info.txt | 9 ++-------
 3 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/ietf/secr/sreq/tests.py b/ietf/secr/sreq/tests.py
index f104558a8..a2c9fc11e 100644
--- a/ietf/secr/sreq/tests.py
+++ b/ietf/secr/sreq/tests.py
@@ -395,6 +395,7 @@ class SubmitRequestCase(TestCase):
         group = GroupFactory(acronym='ames', parent=area)
         group2 = GroupFactory(acronym='ames2', parent=area)
         group3 = GroupFactory(acronym='ames2', parent=area)
+        group4 = GroupFactory(acronym='ames3', parent=area)
         RoleFactory(name_id='chair', group=group, person__user__username='ameschairman')
         resource = ResourceAssociation.objects.create(name_id='project')
         # Bit of a test data hack - the fixture now has no used resources to pick from
@@ -409,7 +410,7 @@ class SubmitRequestCase(TestCase):
                      'length_session2':'3600',
                      'attendees':'10',
                      'bethere':str(ad.pk),
-                     'constraint_chair_conflict':'',
+                     'constraint_chair_conflict':group4.acronym,
                      'comments':'',
                      'resources': resource.pk,
                      'session_time_relation': 'subsequent-days',
@@ -450,6 +451,8 @@ class SubmitRequestCase(TestCase):
         self.assertTrue("Can't meet: Thursday early afternoon, Thursday late" in notification_payload)
         self.assertTrue('Second session joint with: {}'.format(group3.acronym) in notification_payload)
         self.assertTrue(ad.ascii_name() in notification_payload)
+        self.assertIn(ConstraintName.objects.get(slug='chair_confict').name, notification_payload)
+        self.assertIn(group.acronym, notification_payload)
 
 class LockAppTestCase(TestCase):
     def setUp(self):
diff --git a/ietf/secr/sreq/views.py b/ietf/secr/sreq/views.py
index 7e13e9224..281fc748a 100644
--- a/ietf/secr/sreq/views.py
+++ b/ietf/secr/sreq/views.py
@@ -373,6 +373,8 @@ def confirm(request, acronym):
         add_event_info_to_session_qs(Session.objects.filter(group=group, meeting=meeting)).filter(current_status='notmeet').delete()
 
         # send notification
+        session_data['outbound_conflicts'] = [f"{d['name']}: {d['groups']}" for d in outbound_conflicts]
+        debug.show('session_data["outbound_conflicts"]')
         send_notification(group,meeting,login,session_data,'new')
 
         status_text = 'IETF Agenda to be scheduled'
diff --git a/ietf/secr/templates/includes/session_info.txt b/ietf/secr/templates/includes/session_info.txt
index 9fc7f72fa..8e7b62e59 100644
--- a/ietf/secr/templates/includes/session_info.txt
+++ b/ietf/secr/templates/includes/session_info.txt
@@ -9,13 +9,8 @@ Number of Sessions: {{ session.num_session }}
 Length of Session(s):  {{ session.length_session1|display_duration }}{% if session.length_session2 %}, {{ session.length_session2|display_duration }}{% endif %}{% if session.length_session3 %}, {{ session.length_session3|display_duration }}{% endif %}
 Number of Attendees: {{ session.attendees }}
 Conflicts to Avoid: 
-{% if session.conflict1 %} Chair Conflict: {{ session.conflict1 }}{% endif %}
-{% if session.conflict2 %} Technology Overlap: {{ session.conflict2 }}{% endif %}
-{% if session.conflict3 %} Key Participant Conflict: {{ session.conflict3 }}{% endif %}
-{% if session.session_time_relation_display %} {{ session.session_time_relation_display }}{% endif %}
-{% if session.adjacent_with_wg %} Adjacent with WG: {{ session.adjacent_with_wg }}{% endif %}
-{% if session.timeranges_display %} Can't meet: {{ session.timeranges_display|join:", " }}{% endif %}
-
+{% for line in session.outbound_conflicts %}{{line}}
+{% endfor %}
 
 People who must be present:
 {% for person in session.bethere %}  {{ person.ascii_name }}

From 771e854a18b3a513a0ff1c7e3d5c114907a6d9b5 Mon Sep 17 00:00:00 2001
From: Robert Sparks <rjsparks@nostrum.com>
Date: Thu, 26 Aug 2021 22:03:21 +0000
Subject: [PATCH 2/4] Removed unused cache_page import from mailinglists.views.
 Commit ready for merge  - Legacy-Id: 19302

---
 ietf/mailinglists/views.py | 1 -
 1 file changed, 1 deletion(-)

diff --git a/ietf/mailinglists/views.py b/ietf/mailinglists/views.py
index 6bec1dafe..9d3e12bad 100644
--- a/ietf/mailinglists/views.py
+++ b/ietf/mailinglists/views.py
@@ -3,7 +3,6 @@
 import re
 
 from django.shortcuts import render
-from django.views.decorators.cache import cache_page
 
 import debug                            # pyflakes:ignore
 

From 5f465caa185362bf5665bb7a057fc8b55e577dd3 Mon Sep 17 00:00:00 2001
From: Robert Sparks <rjsparks@nostrum.com>
Date: Thu, 26 Aug 2021 22:18:37 +0000
Subject: [PATCH 3/4] Remove unintended debug statement. Commit ready for
 merge.  - Legacy-Id: 19303

---
 ietf/secr/sreq/views.py | 1 -
 1 file changed, 1 deletion(-)

diff --git a/ietf/secr/sreq/views.py b/ietf/secr/sreq/views.py
index 281fc748a..121f15a00 100644
--- a/ietf/secr/sreq/views.py
+++ b/ietf/secr/sreq/views.py
@@ -374,7 +374,6 @@ def confirm(request, acronym):
 
         # send notification
         session_data['outbound_conflicts'] = [f"{d['name']}: {d['groups']}" for d in outbound_conflicts]
-        debug.show('session_data["outbound_conflicts"]')
         send_notification(group,meeting,login,session_data,'new')
 
         status_text = 'IETF Agenda to be scheduled'

From 05390ebb7a8ca97303acb51b33b6e10d4812ef48 Mon Sep 17 00:00:00 2001
From: Robert Sparks <rjsparks@nostrum.com>
Date: Thu, 26 Aug 2021 22:42:37 +0000
Subject: [PATCH 4/4] r19301 on session request notificaiton email was faulty
 (buffers reverted between test and commit). This corrects it. Commit ready
 for merge.  - Legacy-Id: 19304

---
 ietf/secr/sreq/tests.py                       | 2 +-
 ietf/secr/templates/includes/session_info.txt | 6 ++++--
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/ietf/secr/sreq/tests.py b/ietf/secr/sreq/tests.py
index a2c9fc11e..9beb96ed7 100644
--- a/ietf/secr/sreq/tests.py
+++ b/ietf/secr/sreq/tests.py
@@ -451,7 +451,7 @@ class SubmitRequestCase(TestCase):
         self.assertTrue("Can't meet: Thursday early afternoon, Thursday late" in notification_payload)
         self.assertTrue('Second session joint with: {}'.format(group3.acronym) in notification_payload)
         self.assertTrue(ad.ascii_name() in notification_payload)
-        self.assertIn(ConstraintName.objects.get(slug='chair_confict').name, notification_payload)
+        self.assertIn(ConstraintName.objects.get(slug='chair_conflict').name, notification_payload)
         self.assertIn(group.acronym, notification_payload)
 
 class LockAppTestCase(TestCase):
diff --git a/ietf/secr/templates/includes/session_info.txt b/ietf/secr/templates/includes/session_info.txt
index 8e7b62e59..db22a520b 100644
--- a/ietf/secr/templates/includes/session_info.txt
+++ b/ietf/secr/templates/includes/session_info.txt
@@ -9,8 +9,10 @@ Number of Sessions: {{ session.num_session }}
 Length of Session(s):  {{ session.length_session1|display_duration }}{% if session.length_session2 %}, {{ session.length_session2|display_duration }}{% endif %}{% if session.length_session3 %}, {{ session.length_session3|display_duration }}{% endif %}
 Number of Attendees: {{ session.attendees }}
 Conflicts to Avoid: 
-{% for line in session.outbound_conflicts %}{{line}}
-{% endfor %}
+{% for line in session.outbound_conflicts %} {{line}}
+{% endfor %}{% if session.session_time_relation_display %} {{ session.session_time_relation_display }}{% endif %}
+{% if session.adjacent_with_wg %} Adjacent with WG: {{ session.adjacent_with_wg }}{% endif %}       
+{% if session.timeranges_display %} Can't meet: {{ session.timeranges_display|join:", " }}{% endif %}
 
 People who must be present:
 {% for person in session.bethere %}  {{ person.ascii_name }}