From 27d9df7bff82af5e94bb684a9c49cb29adf75bcc Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 2 Nov 2020 19:30:23 +0000 Subject: [PATCH] Retrieve session agenda materials by meeting/session instead of by assignment. Commit ready for merge. - Legacy-Id: 18653 --- ietf/meeting/tests_views.py | 69 +++++++++---------- ietf/meeting/urls.py | 2 +- ietf/meeting/views.py | 12 ++-- ietf/templates/meeting/agenda.html | 6 +- .../meeting/session_agenda_include.html | 11 +-- .../meeting/session_buttons_include.html | 30 ++++---- ..._materials.html => session_materials.html} | 0 7 files changed, 65 insertions(+), 65 deletions(-) rename ietf/templates/meeting/{assignment_materials.html => session_materials.html} (100%) diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py index f7406c6b3..4a85738fd 100644 --- a/ietf/meeting/tests_views.py +++ b/ietf/meeting/tests_views.py @@ -159,13 +159,12 @@ 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 = session.official_timeslotassignment() - assignment_url = urlreverse('ietf.meeting.views.assignment_materials', - kwargs=dict(assignment_id=assignment.pk)) + assignment_url = urlreverse('ietf.meeting.views.session_materials', + kwargs=dict(num=meeting.number, session_id=session.pk)) self.assertTrue( any( [assignment_url in x.attrib["data-src"] - for x in q('tr div.modal-body div.assignment-materials')] + for x in q('tr div.modal-body div.session-materials')] ) ) @@ -848,50 +847,46 @@ class MeetingTests(TestCase): self.assertIn('STATUS:CANCELLED',unicontent(r)) self.assertNotIn('STATUS:CONFIRMED',unicontent(r)) - def test_assignment_materials(self): + def test_session_materials(self): meeting = make_meeting_test_data() session = Session.objects.filter(meeting=meeting, group__acronym="mars").first() - for assignment in session.timeslotassignments.all(): - url = urlreverse('ietf.meeting.views.assignment_materials', - kwargs=dict(assignment_id=assignment.pk)) - r = self.client.get(url) - self.assertEqual(r.status_code, 200) - q = PyQuery(r.content) + url = urlreverse('ietf.meeting.views.session_materials', + kwargs=dict(num=meeting.number, session_id=session.pk)) + r = self.client.get(url) + self.assertEqual(r.status_code, 200) + q = PyQuery(r.content) - agenda_div = q('div.agenda-frame') - self.assertIsNotNone(agenda_div) - self.assertEqual(agenda_div.attr('data-src'), session.agenda().get_href()) + agenda_div = q('div.agenda-frame') + self.assertIsNotNone(agenda_div) + self.assertEqual(agenda_div.attr('data-src'), session.agenda().get_href()) - minutes_div = q('div.minutes-frame') - self.assertIsNotNone(minutes_div) - self.assertEqual(minutes_div.attr('data-src'), session.minutes().get_href()) + minutes_div = q('div.minutes-frame') + self.assertIsNotNone(minutes_div) + self.assertEqual(minutes_div.attr('data-src'), session.minutes().get_href()) - # Make sure undeleted slides are present and deleted slides are not - not_deleted_slides = session.materials.filter( - type='slides' - ).exclude( - states__type__slug='slides',states__slug='deleted' - ) - self.assertGreater(not_deleted_slides.count(), 0) # make sure this isn't a pointless test + # Make sure undeleted slides are present and deleted slides are not + not_deleted_slides = session.materials.filter( + type='slides' + ).exclude( + states__type__slug='slides',states__slug='deleted' + ) + self.assertGreater(not_deleted_slides.count(), 0) # make sure this isn't a pointless test - deleted_slides = session.materials.filter( - type='slides', states__type__slug='slides', states__slug='deleted' - ) - self.assertGreater(deleted_slides.count(), 0) # make sure this isn't a pointless test + deleted_slides = session.materials.filter( + type='slides', states__type__slug='slides', states__slug='deleted' + ) + self.assertGreater(deleted_slides.count(), 0) # make sure this isn't a pointless test - # live slides should be found - for slide in not_deleted_slides: - self.assertTrue(q('ul li a:contains("%s")' % slide.title)) + # live slides should be found + for slide in not_deleted_slides: + self.assertTrue(q('ul li a:contains("%s")' % slide.title)) - # deleted slides should not be found - for slide in deleted_slides: - self.assertFalse(q('ul li a:contains("%s")' % slide.title)) + # deleted slides should not be found + for slide in deleted_slides: + self.assertFalse(q('ul li a:contains("%s")' % slide.title)) - for slide in session.slides(): - self.assertContains(r, slide.title) - class ReorderSlidesTests(TestCase): def test_add_slides_to_session(self): diff --git a/ietf/meeting/urls.py b/ietf/meeting/urls.py index a0f8690c6..c9db14df9 100644 --- a/ietf/meeting/urls.py +++ b/ietf/meeting/urls.py @@ -21,6 +21,7 @@ safe_for_all_meeting_types = [ url(r'^session/(?P\d+)/doc/%(name)s/remove$' % settings.URL_REGEXPS, views.remove_sessionpresentation), url(r'^session/(?P\d+)\.ics$', views.agenda_ical), url(r'^sessions/(?P[-a-z0-9]+)\.ics$', views.agenda_ical), + url(r'^session/(?P\d+)/agenda_materials$', views.session_materials), url(r'^slidesubmission/(?P\d+)$', views.approve_proposed_slides) ] @@ -111,7 +112,6 @@ urlpatterns = [ # First patterns which start with unique strings url(r'^$', views.current_materials), url(r'^ajax/get-utc/?$', views.ajax_get_utc), - url(r'^assignment/(?P\d+)/materials.html$', views.assignment_materials), url(r'^interim/announce/?$', views.interim_announce), url(r'^interim/announce/(?P[A-Za-z0-9._+-]+)/?$', views.interim_send_announcement), url(r'^interim/skip_announce/(?P[A-Za-z0-9._+-]+)/?$', views.interim_skip_announcement), diff --git a/ietf/meeting/views.py b/ietf/meeting/views.py index 4360eea79..3625224f9 100644 --- a/ietf/meeting/views.py +++ b/ietf/meeting/views.py @@ -1301,16 +1301,18 @@ def diff_schedules(request, num): }) @ensure_csrf_cookie -def assignment_materials(request, assignment_id): - """Assignment details for agenda page pop-up""" - assignments = SchedTimeSessAssignment.objects.filter(pk=int(assignment_id)) +def session_materials(request, num, 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)) if len(assignments) == 0: - raise Http404('No such assignment') + 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) assignment = assignments[0] - return render(request, 'meeting/assignment_materials.html', dict(item=assignment)) + return render(request, 'meeting/session_materials.html', dict(item=assignment)) @ensure_csrf_cookie def agenda(request, num=None, name=None, base=None, ext=None, owner=None, utc=""): diff --git a/ietf/templates/meeting/agenda.html b/ietf/templates/meeting/agenda.html index ba929bbbb..8b3b8a6f2 100644 --- a/ietf/templates/meeting/agenda.html +++ b/ietf/templates/meeting/agenda.html @@ -25,7 +25,7 @@ background-color: inherit !important; border: none !important; } - .assignment-materials .agenda-frame,.minutes-frame { + .session-materials .agenda-frame,.minutes-frame { white-space: normal; } {% endblock %} @@ -178,7 +178,7 @@
{% if item.timeslot.type.slug == 'other' %} {% if item.session.agenda or item.session.remote_instructions or item.session.agenda_note %} - {% include "meeting/session_buttons_include.html" with show_agenda=True session=item.session meeting=schedule.meeting %} + {% include "meeting/session_buttons_include.html" with show_agenda=True item=item schedule=schedule only %} {% else %} {% for slide in item.session.slides %} {{ slide.title|clean_whitespace }} @@ -459,7 +459,7 @@ } $(".modal").on("show.bs.modal", function () { - retrieve_session_modal($(this).find(".assignment-materials")); + retrieve_session_modal($(this).find(".session-materials")); }); diff --git a/ietf/templates/meeting/session_agenda_include.html b/ietf/templates/meeting/session_agenda_include.html index eeedc16ea..1a607fe68 100644 --- a/ietf/templates/meeting/session_agenda_include.html +++ b/ietf/templates/meeting/session_agenda_include.html @@ -1,21 +1,22 @@ {# Copyright The IETF Trust 2015, All Rights Reserved #} +{# expects slug, session, and timeslot to be in the context #} {% load origin %}{% origin %} {% load static %} {% load textfilters %} {% load ietf_filters %} -