Skip to content

Commit f82b239

Browse files
committed
Merged in [18653] from jennifer@painless-security.com:
Retrieve session agenda materials by meeting/session instead of by assignment. - Legacy-Id: 18660 Note: SVN reference [18653] has been migrated to Git commit 27d9df7
2 parents bd496b7 + 27d9df7 commit f82b239

7 files changed

Lines changed: 65 additions & 65 deletions

File tree

ietf/meeting/tests_views.py

Lines changed: 32 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -159,13 +159,12 @@ def test_meeting_agenda(self):
159159
self.assertIn(registration_text, agenda_content)
160160

161161
# Make sure there's a frame for the session agenda and it points to the right place
162-
assignment = session.official_timeslotassignment()
163-
assignment_url = urlreverse('ietf.meeting.views.assignment_materials',
164-
kwargs=dict(assignment_id=assignment.pk))
162+
assignment_url = urlreverse('ietf.meeting.views.session_materials',
163+
kwargs=dict(num=meeting.number, session_id=session.pk))
165164
self.assertTrue(
166165
any(
167166
[assignment_url in x.attrib["data-src"]
168-
for x in q('tr div.modal-body div.assignment-materials')]
167+
for x in q('tr div.modal-body div.session-materials')]
169168
)
170169
)
171170

@@ -848,49 +847,45 @@ def test_cancelled_ics(self):
848847
self.assertIn('STATUS:CANCELLED',unicontent(r))
849848
self.assertNotIn('STATUS:CONFIRMED',unicontent(r))
850849

851-
def test_assignment_materials(self):
850+
def test_session_materials(self):
852851
meeting = make_meeting_test_data()
853852
session = Session.objects.filter(meeting=meeting, group__acronym="mars").first()
854853

855-
for assignment in session.timeslotassignments.all():
856-
url = urlreverse('ietf.meeting.views.assignment_materials',
857-
kwargs=dict(assignment_id=assignment.pk))
858-
r = self.client.get(url)
859-
self.assertEqual(r.status_code, 200)
860-
q = PyQuery(r.content)
861-
862-
agenda_div = q('div.agenda-frame')
863-
self.assertIsNotNone(agenda_div)
864-
self.assertEqual(agenda_div.attr('data-src'), session.agenda().get_href())
854+
url = urlreverse('ietf.meeting.views.session_materials',
855+
kwargs=dict(num=meeting.number, session_id=session.pk))
856+
r = self.client.get(url)
857+
self.assertEqual(r.status_code, 200)
858+
q = PyQuery(r.content)
865859

866-
minutes_div = q('div.minutes-frame')
867-
self.assertIsNotNone(minutes_div)
868-
self.assertEqual(minutes_div.attr('data-src'), session.minutes().get_href())
860+
agenda_div = q('div.agenda-frame')
861+
self.assertIsNotNone(agenda_div)
862+
self.assertEqual(agenda_div.attr('data-src'), session.agenda().get_href())
869863

870-
# Make sure undeleted slides are present and deleted slides are not
871-
not_deleted_slides = session.materials.filter(
872-
type='slides'
873-
).exclude(
874-
states__type__slug='slides',states__slug='deleted'
875-
)
876-
self.assertGreater(not_deleted_slides.count(), 0) # make sure this isn't a pointless test
864+
minutes_div = q('div.minutes-frame')
865+
self.assertIsNotNone(minutes_div)
866+
self.assertEqual(minutes_div.attr('data-src'), session.minutes().get_href())
877867

878-
deleted_slides = session.materials.filter(
879-
type='slides', states__type__slug='slides', states__slug='deleted'
880-
)
881-
self.assertGreater(deleted_slides.count(), 0) # make sure this isn't a pointless test
868+
# Make sure undeleted slides are present and deleted slides are not
869+
not_deleted_slides = session.materials.filter(
870+
type='slides'
871+
).exclude(
872+
states__type__slug='slides',states__slug='deleted'
873+
)
874+
self.assertGreater(not_deleted_slides.count(), 0) # make sure this isn't a pointless test
882875

883-
# live slides should be found
884-
for slide in not_deleted_slides:
885-
self.assertTrue(q('ul li a:contains("%s")' % slide.title))
876+
deleted_slides = session.materials.filter(
877+
type='slides', states__type__slug='slides', states__slug='deleted'
878+
)
879+
self.assertGreater(deleted_slides.count(), 0) # make sure this isn't a pointless test
886880

887-
# deleted slides should not be found
888-
for slide in deleted_slides:
889-
self.assertFalse(q('ul li a:contains("%s")' % slide.title))
881+
# live slides should be found
882+
for slide in not_deleted_slides:
883+
self.assertTrue(q('ul li a:contains("%s")' % slide.title))
890884

885+
# deleted slides should not be found
886+
for slide in deleted_slides:
887+
self.assertFalse(q('ul li a:contains("%s")' % slide.title))
891888

892-
for slide in session.slides():
893-
self.assertContains(r, slide.title)
894889

895890
class ReorderSlidesTests(TestCase):
896891

ietf/meeting/urls.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
url(r'^session/(?P<session_id>\d+)/doc/%(name)s/remove$' % settings.URL_REGEXPS, views.remove_sessionpresentation),
2222
url(r'^session/(?P<session_id>\d+)\.ics$', views.agenda_ical),
2323
url(r'^sessions/(?P<acronym>[-a-z0-9]+)\.ics$', views.agenda_ical),
24+
url(r'^session/(?P<session_id>\d+)/agenda_materials$', views.session_materials),
2425
url(r'^slidesubmission/(?P<slidesubmission_id>\d+)$', views.approve_proposed_slides)
2526
]
2627

@@ -111,7 +112,6 @@
111112
# First patterns which start with unique strings
112113
url(r'^$', views.current_materials),
113114
url(r'^ajax/get-utc/?$', views.ajax_get_utc),
114-
url(r'^assignment/(?P<assignment_id>\d+)/materials.html$', views.assignment_materials),
115115
url(r'^interim/announce/?$', views.interim_announce),
116116
url(r'^interim/announce/(?P<number>[A-Za-z0-9._+-]+)/?$', views.interim_send_announcement),
117117
url(r'^interim/skip_announce/(?P<number>[A-Za-z0-9._+-]+)/?$', views.interim_skip_announcement),

ietf/meeting/views.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1300,16 +1300,18 @@ def diff_schedules(request, num):
13001300
})
13011301

13021302
@ensure_csrf_cookie
1303-
def assignment_materials(request, assignment_id):
1304-
"""Assignment details for agenda page pop-up"""
1305-
assignments = SchedTimeSessAssignment.objects.filter(pk=int(assignment_id))
1303+
def session_materials(request, num, session_id):
1304+
"""Session details for agenda page pop-up"""
1305+
meeting = get_object_or_404(Meeting, number=num)
1306+
schedule = meeting.schedule
1307+
assignments = schedule.assignments.filter(session__id=int(session_id))
13061308
if len(assignments) == 0:
1307-
raise Http404('No such assignment')
1309+
raise Http404('No such session in this schedule')
13081310
assert len(assignments) == 1
13091311
meeting = assignments[0].timeslot.meeting # timeslot is guaranteed to be non-null
13101312
assignments = preprocess_assignments_for_agenda(assignments, meeting)
13111313
assignment = assignments[0]
1312-
return render(request, 'meeting/assignment_materials.html', dict(item=assignment))
1314+
return render(request, 'meeting/session_materials.html', dict(item=assignment))
13131315

13141316
@ensure_csrf_cookie
13151317
def agenda(request, num=None, name=None, base=None, ext=None, owner=None, utc=""):

ietf/templates/meeting/agenda.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
background-color: inherit !important;
2626
border: none !important;
2727
}
28-
.assignment-materials .agenda-frame,.minutes-frame {
28+
.session-materials .agenda-frame,.minutes-frame {
2929
white-space: normal;
3030
}
3131
{% endblock %}
@@ -178,7 +178,7 @@ <h2>
178178
<div class="pull-right padded-left">
179179
{% if item.timeslot.type.slug == 'other' %}
180180
{% if item.session.agenda or item.session.remote_instructions or item.session.agenda_note %}
181-
{% include "meeting/session_buttons_include.html" with show_agenda=True session=item.session meeting=schedule.meeting %}
181+
{% include "meeting/session_buttons_include.html" with show_agenda=True item=item schedule=schedule only %}
182182
{% else %}
183183
{% for slide in item.session.slides %}
184184
<a href="{{slide.get_href}}">{{ slide.title|clean_whitespace }}</a>
@@ -459,7 +459,7 @@ <h2>
459459
}
460460

461461
$(".modal").on("show.bs.modal", function () {
462-
retrieve_session_modal($(this).find(".assignment-materials"));
462+
retrieve_session_modal($(this).find(".session-materials"));
463463
});
464464

465465
</script>

ietf/templates/meeting/session_agenda_include.html

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
{# Copyright The IETF Trust 2015, All Rights Reserved #}
2+
{# expects slug, session, and timeslot to be in the context #}
23
{% load origin %}{% origin %}
34
{% load static %}
45
{% load textfilters %}
56
{% load ietf_filters %}
6-
<div class="modal fade text-left" id="modal-{{ item.slug }}" tabindex="-1" role="dialog" aria-labelledby="label-{{ item.slug }}" aria-hidden="true">
7+
<div class="modal fade text-left" id="modal-{{ slug }}" tabindex="-1" role="dialog" aria-labelledby="label-{{ slug }}" aria-hidden="true">
78
<div class="modal-dialog modal-lg">
89
<div class="modal-content">
910
<div class="modal-header">
1011
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
11-
<h4 class="modal-title" id="label-{{item.slug}}">
12+
<h4 class="modal-title" id="label-{{slug}}">
1213
Meeting materials for
13-
{% if item.timeslot.type.slug == 'plenary' %}{{item.timeslot.name}}{% else %}{{item.session.historic_group.name}}{% endif %}
14+
{% if timeslot.type.slug == 'plenary' %}{{timeslot.name}}{% else %}{{session.historic_group.name}}{% endif %}
1415
</h4>
1516
</div>
1617
<div class="modal-body">
17-
<div class="assignment-materials"
18-
data-src="{% url 'ietf.meeting.views.assignment_materials' assignment_id=item.pk %}">
18+
<div class="session-materials"
19+
data-src="{% url 'ietf.meeting.views.session_materials' num=meeting.number session_id=session.pk %}">
1920
</div>
2021
</div>
2122
<div class="modal-footer">

ietf/templates/meeting/session_buttons_include.html

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,13 @@
44
{% load textfilters %}
55
{% origin %}
66

7+
{% with slug=item.slug %}{% with session=item.session %}{% with timeslot=item.timeslot %}{% with meeting=schedule.meeting %}
78
<span id="session-buttons-{{session.pk}}" class="text-nowrap">
89
{% with acronym=session.historic_group.acronym %}
910
{% if session.agenda and show_agenda %}
1011
{% include "meeting/session_agenda_include.html" %}
1112
<!-- agenda pop-up button -->
12-
<a class="" data-toggle="modal" data-target="#modal-{{item.slug}}" title="Show meeting materials"><span class="fa fa-fw fa-arrows-alt"></span></a>
13+
<a class="" data-toggle="modal" data-target="#modal-{{slug}}" title="Show meeting materials"><span class="fa fa-fw fa-arrows-alt"></span></a>
1314
<!-- materials tar file -->
1415
<a class="" href="/meeting/{{meeting.number}}/agenda/{{acronym}}-drafts.tgz" title="Download meeting materials as .tar archive"><span class="fa fa-fw fa-file-archive-o"></span></a>
1516
<!-- materials PDF file -->
@@ -18,36 +19,36 @@
1819

1920
<!-- etherpad -->
2021
{% if use_codimd %}
21-
{% if item.timeslot.type.slug == 'plenary' %}
22-
<a class="" href="https://codimd.ietf.org/notes-ietf-{{ meeting.number }}-plenary title="Etherpad for note-takers"><span class="fa fa-fw fa-edit"></span></a>
22+
{% if timeslot.type.slug == 'plenary' %}
23+
<a class="" href="https://codimd.ietf.org/notes-ietf-{{ meeting.number }}-plenary" title="Etherpad for note-takers"><span class="fa fa-fw fa-edit"></span></a>
2324
{% else %}
2425
<a class="" href="https://codimd.ietf.org/notes-ietf-{{ meeting.number }}-{{acronym}}" title="Etherpad for note-takers"><span class="fa fa-fw fa-edit"></span></a>
2526
{% endif %}
2627
{% else %}
27-
{% if item.timeslot.type.slug == 'plenary' %}
28+
{% if timeslot.type.slug == 'plenary' %}
2829
<a class="" href="https://etherpad.ietf.org:9009/p/notes-ietf-{{ meeting.number }}-plenary?useMonospaceFont=true" title="Etherpad for note-takers"><span class="fa fa-fw fa-edit"></span></a>
2930
{% else %}
3031
<a class="" href="https://etherpad.ietf.org:9009/p/notes-ietf-{{ meeting.number }}-{{acronym}}?useMonospaceFont=true" title="Etherpad for note-takers"><span class="fa fa-fw fa-edit"></span></a>
3132
{% endif %}
3233
{% endif %}
3334

3435
{# show stream buttons up till end of session, then show archive buttons #}
35-
{% if now < item.timeslot.end_time %}
36+
{% if now < timeslot.end_time %}
3637
<!-- Jabber -->
3738
<a class=""
3839
href="xmpp:{{session.jabber_room_name}}@jabber.ietf.org?join"
3940
title="Jabber room for {{session.jabber_room_name}}"><span class="fa fa-fw fa-lightbulb-o"></span></a>
4041
<!-- Video stream (meetecho) -->
41-
{% if item.timeslot.location.video_stream_url %}
42+
{% if timeslot.location.video_stream_url %}
4243
<a class=""
43-
href="{{item.timeslot.location.video_stream_url|format:session }}"
44+
href="{{timeslot.location.video_stream_url|format:session }}"
4445
title="Meetecho video stream"><span class="fa fa-fw fa-video-camera"></span>
4546
</a>
4647
{% endif %}
4748
<!-- Audio stream -->
48-
{% if item.timeslot.location.audio_stream_url %}
49+
{% if timeslot.location.audio_stream_url %}
4950
<a class=""
50-
href="{{item.timeslot.location.audio_stream_url|format:session }}"
51+
href="{{timeslot.location.audio_stream_url|format:session }}"
5152
title="Audio stream"><span class="glyphicon glyphicon-headphones"></span>
5253
</a>
5354
{% endif %}
@@ -62,16 +63,16 @@
6263
href="{{ session.remote_instructions|first_url }}"
6364
title="Online conference"><span class="fa fa-fw fd-group"></span>
6465
</a>
65-
{% elif item.timeslot.location.webex_url %}
66+
{% elif timeslot.location.webex_url %}
6667
<a class=""
67-
href="{{item.timeslot.location.webex_url|format:session }}"
68+
href="{{timeslot.location.webex_url|format:session }}"
6869
title="Webex session"><span class="fa fa-fw fd-group"></span>
6970
</a>
7071
{% endif %}
7172
<!-- iCalendar item -->
7273
<a
7374
href="{% url 'ietf.meeting.views.agenda_ical' num=meeting.number session_id=session.id %}"
74-
title="icalendar entry for {{acronym}} session on {{item.timeslot.utc_start_time|date:'Y-m-d H:i'}} UTC">
75+
title="icalendar entry for {{acronym}} session on {{timeslot.utc_start_time|date:'Y-m-d H:i'}} UTC">
7576
<span class="fa fa-fw fa-calendar-o"></span>
7677
</a>
7778
{% else %}
@@ -106,12 +107,13 @@
106107
{% endfor %}
107108
{% endif %}
108109
{% endwith %}
109-
{% if item.timeslot.location.video_stream_url %}
110+
{% if timeslot.location.video_stream_url %}
110111
<a class=""
111112
href="http://www.meetecho.com/ietf{{meeting.number}}/recordings#{{acronym.upper}}"
112113
title="Meetecho session recording"><span class="fd fa-fw fd-meetecho"></span></a>
113114
{% endif %}
114115
{% endif %}
115116
{% endif %}
116117
{% endwith %}
117-
</span>
118+
</span>
119+
{% endwith %}{% endwith %}{% endwith %}{% endwith %}
File renamed without changes.

0 commit comments

Comments
 (0)