From acbfbf53a3866aee2b5ee02278498881a77761cd Mon Sep 17 00:00:00 2001
From: Jennifer Richards <jennifer@painless-security.com>
Date: Mon, 2 Nov 2020 20:11:13 +0000
Subject: [PATCH] Do not require redundant meeting number for session materials
 view. Commit ready for merge.  - Legacy-Id: 18654

---
 ietf/meeting/tests_views.py                         |  6 ++----
 ietf/meeting/urls.py                                |  2 +-
 ietf/meeting/views.py                               | 13 +++++--------
 ietf/templates/meeting/session_agenda_include.html  |  2 +-
 ietf/templates/meeting/session_buttons_include.html |  2 +-
 5 files changed, 10 insertions(+), 15 deletions(-)

diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py
index 4a85738fd..210057bf4 100644
--- a/ietf/meeting/tests_views.py
+++ b/ietf/meeting/tests_views.py
@@ -159,8 +159,7 @@ class MeetingTests(TestCase):
         self.assertIn(registration_text, agenda_content)
 
         # Make sure there's a frame for the session agenda and it points to the right place
-        assignment_url = urlreverse('ietf.meeting.views.session_materials',
-                                    kwargs=dict(num=meeting.number, session_id=session.pk))
+        assignment_url = urlreverse('ietf.meeting.views.session_materials', kwargs=dict(session_id=session.pk))
         self.assertTrue(
             any(
                 [assignment_url in x.attrib["data-src"] 
@@ -851,8 +850,7 @@ class MeetingTests(TestCase):
         meeting = make_meeting_test_data()
         session = Session.objects.filter(meeting=meeting, group__acronym="mars").first()
 
-        url = urlreverse('ietf.meeting.views.session_materials', 
-                         kwargs=dict(num=meeting.number, session_id=session.pk))
+        url = urlreverse('ietf.meeting.views.session_materials', kwargs=dict(session_id=session.pk))
         r = self.client.get(url)
         self.assertEqual(r.status_code, 200)
         q = PyQuery(r.content)
diff --git a/ietf/meeting/urls.py b/ietf/meeting/urls.py
index c9db14df9..d37ab793d 100644
--- a/ietf/meeting/urls.py
+++ b/ietf/meeting/urls.py
@@ -21,7 +21,6 @@ safe_for_all_meeting_types = [
     url(r'^session/(?P<session_id>\d+)/doc/%(name)s/remove$' % settings.URL_REGEXPS, views.remove_sessionpresentation),
     url(r'^session/(?P<session_id>\d+)\.ics$',    views.agenda_ical),
     url(r'^sessions/(?P<acronym>[-a-z0-9]+)\.ics$', views.agenda_ical),
-    url(r'^session/(?P<session_id>\d+)/agenda_materials$', views.session_materials),
     url(r'^slidesubmission/(?P<slidesubmission_id>\d+)$', views.approve_proposed_slides)
 ]
 
@@ -125,6 +124,7 @@ urlpatterns = [
     url(r'^upcoming/?$', views.upcoming),
     url(r'^upcoming\.ics/?$', views.upcoming_ical),
     url(r'^upcoming\.json/?$', views.upcoming_json),
+    url(r'^session/(?P<session_id>\d+)/agenda_materials$', views.session_materials),
     # Then patterns from more specific to less
     url(r'^(?P<num>interim-[a-z0-9-]+)/', include(type_interim_patterns)),
     url(r'^(?P<num>\d+)/requests.html$', RedirectView.as_view(url='/meeting/%(num)s/requests', permanent=True)),
diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py
index 3625224f9..7ad74104b 100644
--- a/ietf/meeting/views.py
+++ b/ietf/meeting/views.py
@@ -1301,16 +1301,13 @@ def diff_schedules(request, num):
     })
 
 @ensure_csrf_cookie
-def session_materials(request, num, session_id):
+def session_materials(request, session_id):
     """Session details for agenda page pop-up"""
-    meeting = get_object_or_404(Meeting, number=num)
-    schedule = meeting.schedule
-    assignments = schedule.assignments.filter(session__id=int(session_id))
+    session = get_object_or_404(Session, id=session_id)
+    assignments = SchedTimeSessAssignment.objects.filter(session=session)
     if len(assignments) == 0:
-        raise Http404('No such session in this schedule')
-    assert len(assignments) == 1
-    meeting = assignments[0].timeslot.meeting  # timeslot is guaranteed to be non-null
-    assignments = preprocess_assignments_for_agenda(assignments, meeting)
+        raise Http404('No such scheduled session')
+    assignments = preprocess_assignments_for_agenda(assignments, session.meeting)
     assignment = assignments[0]
     return render(request, 'meeting/session_materials.html', dict(item=assignment))
 
diff --git a/ietf/templates/meeting/session_agenda_include.html b/ietf/templates/meeting/session_agenda_include.html
index 1a607fe68..86e8f03ce 100644
--- a/ietf/templates/meeting/session_agenda_include.html
+++ b/ietf/templates/meeting/session_agenda_include.html
@@ -16,7 +16,7 @@
                 </div>
                 <div class="modal-body">
                     <div class="session-materials"
-                           data-src="{% url 'ietf.meeting.views.session_materials' num=meeting.number session_id=session.pk %}">
+                           data-src="{% url 'ietf.meeting.views.session_materials' session_id=session.pk %}">
                     </div>
                 </div>
                 <div class="modal-footer">
diff --git a/ietf/templates/meeting/session_buttons_include.html b/ietf/templates/meeting/session_buttons_include.html
index 30fb21b0b..609a3ede7 100644
--- a/ietf/templates/meeting/session_buttons_include.html
+++ b/ietf/templates/meeting/session_buttons_include.html
@@ -8,7 +8,7 @@
 <span id="session-buttons-{{session.pk}}" class="text-nowrap">
   {% with acronym=session.historic_group.acronym %}
   {% if session.agenda and show_agenda %}
-    {% include "meeting/session_agenda_include.html" %}
+    {% include "meeting/session_agenda_include.html" with slug=slug session=session timeslot=timeslot only %}
     <!-- agenda pop-up button -->
     <a class="" data-toggle="modal" data-target="#modal-{{slug}}" title="Show meeting materials"><span class="fa fa-fw fa-arrows-alt"></span></a>
     <!-- materials tar file -->