Merged in [18654] from jennifer@painless-security.com:

Do not require redundant meeting number for session materials view.
 - Legacy-Id: 18661
Note: SVN reference [18654] has been migrated to Git commit acbfbf53a3
This commit is contained in:
Henrik Levkowetz 2020-11-08 12:27:04 +00:00
commit 9da87c59e1
5 changed files with 10 additions and 15 deletions

View file

@ -159,8 +159,7 @@ class MeetingTests(TestCase):
self.assertIn(registration_text, agenda_content) self.assertIn(registration_text, agenda_content)
# Make sure there's a frame for the session agenda and it points to the right place # 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', assignment_url = urlreverse('ietf.meeting.views.session_materials', kwargs=dict(session_id=session.pk))
kwargs=dict(num=meeting.number, session_id=session.pk))
self.assertTrue( self.assertTrue(
any( any(
[assignment_url in x.attrib["data-src"] [assignment_url in x.attrib["data-src"]
@ -851,8 +850,7 @@ class MeetingTests(TestCase):
meeting = make_meeting_test_data() meeting = make_meeting_test_data()
session = Session.objects.filter(meeting=meeting, group__acronym="mars").first() session = Session.objects.filter(meeting=meeting, group__acronym="mars").first()
url = urlreverse('ietf.meeting.views.session_materials', url = urlreverse('ietf.meeting.views.session_materials', kwargs=dict(session_id=session.pk))
kwargs=dict(num=meeting.number, session_id=session.pk))
r = self.client.get(url) r = self.client.get(url)
self.assertEqual(r.status_code, 200) self.assertEqual(r.status_code, 200)
q = PyQuery(r.content) q = PyQuery(r.content)

View file

@ -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+)/doc/%(name)s/remove$' % settings.URL_REGEXPS, views.remove_sessionpresentation),
url(r'^session/(?P<session_id>\d+)\.ics$', views.agenda_ical), 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'^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) url(r'^slidesubmission/(?P<slidesubmission_id>\d+)$', views.approve_proposed_slides)
] ]
@ -125,6 +124,7 @@ urlpatterns = [
url(r'^upcoming/?$', views.upcoming), url(r'^upcoming/?$', views.upcoming),
url(r'^upcoming\.ics/?$', views.upcoming_ical), url(r'^upcoming\.ics/?$', views.upcoming_ical),
url(r'^upcoming\.json/?$', views.upcoming_json), 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 # Then patterns from more specific to less
url(r'^(?P<num>interim-[a-z0-9-]+)/', include(type_interim_patterns)), 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)), url(r'^(?P<num>\d+)/requests.html$', RedirectView.as_view(url='/meeting/%(num)s/requests', permanent=True)),

View file

@ -1300,16 +1300,13 @@ def diff_schedules(request, num):
}) })
@ensure_csrf_cookie @ensure_csrf_cookie
def session_materials(request, num, session_id): def session_materials(request, session_id):
"""Session details for agenda page pop-up""" """Session details for agenda page pop-up"""
meeting = get_object_or_404(Meeting, number=num) session = get_object_or_404(Session, id=session_id)
schedule = meeting.schedule assignments = SchedTimeSessAssignment.objects.filter(session=session)
assignments = schedule.assignments.filter(session__id=int(session_id))
if len(assignments) == 0: if len(assignments) == 0:
raise Http404('No such session in this schedule') raise Http404('No such scheduled session')
assert len(assignments) == 1 assignments = preprocess_assignments_for_agenda(assignments, session.meeting)
meeting = assignments[0].timeslot.meeting # timeslot is guaranteed to be non-null
assignments = preprocess_assignments_for_agenda(assignments, meeting)
assignment = assignments[0] assignment = assignments[0]
return render(request, 'meeting/session_materials.html', dict(item=assignment)) return render(request, 'meeting/session_materials.html', dict(item=assignment))

View file

@ -16,7 +16,7 @@
</div> </div>
<div class="modal-body"> <div class="modal-body">
<div class="session-materials" <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> </div>
<div class="modal-footer"> <div class="modal-footer">

View file

@ -8,7 +8,7 @@
<span id="session-buttons-{{session.pk}}" class="text-nowrap"> <span id="session-buttons-{{session.pk}}" class="text-nowrap">
{% with acronym=session.historic_group.acronym %} {% with acronym=session.historic_group.acronym %}
{% if session.agenda and show_agenda %} {% 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 --> <!-- 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> <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 --> <!-- materials tar file -->