Skip to content

Commit dd33e91

Browse files
committed
Merged in [19384] from jennifer@painless-security.com:
Update links in iCal description to be more useful. Fixes ietf-tools#3349. - Legacy-Id: 19388 Note: SVN reference [19384] has been migrated to Git commit 7d59456
2 parents 5238d1c + 7d59456 commit dd33e91

3 files changed

Lines changed: 33 additions & 9 deletions

File tree

ietf/doc/templatetags/ietf_filters.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import bleach
66
import datetime
77
import re
8+
from urllib.parse import urljoin
89

910
from email.utils import parseaddr
1011

@@ -413,7 +414,6 @@ def format_snippet(text, trunc_words=25):
413414
@register.simple_tag
414415
def doc_edit_button(url_name, *args, **kwargs):
415416
"""Given URL name/args/kwargs, looks up the URL just like "url" tag and returns a properly formatted button for the document material tables."""
416-
from django.urls import reverse as urlreverse
417417
return mark_safe('<a class="btn btn-default btn-xs" href="%s">Edit</a>' % (urlreverse(url_name, args=args, kwargs=kwargs)))
418418

419419
@register.filter
@@ -613,3 +613,11 @@ def action_holder_badge(action_holder):
613613
else:
614614
return '' # no alert needed
615615

616+
617+
@register.simple_tag
618+
def absurl(viewname, **kwargs):
619+
"""Get the absolute URL for a view by name
620+
621+
Uses settings.IDTRACKER_BASE_URL as the base.
622+
"""
623+
return urljoin(settings.IDTRACKER_BASE_URL, urlreverse(viewname, kwargs=kwargs))

ietf/meeting/tests_views.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -247,16 +247,26 @@ def test_meeting_agenda(self):
247247
# iCal
248248
r = self.client.get(urlreverse("ietf.meeting.views.agenda_ical", kwargs=dict(num=meeting.number))
249249
+ "?show=" + session.group.parent.acronym.upper())
250+
assert_ical_response_is_valid(self, r)
250251
self.assertContains(r, session.group.acronym)
251252
self.assertContains(r, session.group.name)
252253
self.assertContains(r, slot.location.name)
253254
self.assertContains(r, "BEGIN:VTIMEZONE")
254255
self.assertContains(r, "END:VTIMEZONE")
255256

256257
self.assertContains(r, session.agenda().get_href())
257-
self.assertContains(r, session.materials.filter(type='slides').exclude(states__type__slug='slides',states__slug='deleted').first().get_href())
258-
# TODO - the ics view uses .all on a queryset in a view so it's showing the deleted slides.
259-
#self.assertNotContains(r, session.materials.filter(type='slides',states__type__slug='slides',states__slug='deleted').first().get_absolute_url())
258+
self.assertContains(
259+
r,
260+
urlreverse(
261+
'ietf.meeting.views.session_details',
262+
kwargs=dict(num=meeting.number, acronym=session.group.acronym)),
263+
msg_prefix='ical should contain link to meeting materials page for session')
264+
self.assertContains(
265+
r,
266+
urlreverse(
267+
'ietf.meeting.views.agenda', kwargs=dict(num=meeting.number)
268+
) + f'#row-{session.official_timeslotassignment().slug()}',
269+
msg_prefix='ical should contain link to agenda entry for session')
260270

261271
# week view
262272
r = self.client.get(urlreverse("ietf.meeting.views.week_view", kwargs=dict(num=meeting.number)))

ietf/templates/meeting/agenda.ics

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{% load humanize %}{% autoescape off %}{% load ietf_filters %}{% load cache %}{% cache 1800 ietf_meeting_agenda_ics schedule.meeting.number request.path request.GET %}BEGIN:VCALENDAR
1+
{% load humanize %}{% autoescape off %}{% load ietf_filters textfilters %}{% load cache %}{% cache 1800 ietf_meeting_agenda_ics schedule.meeting.number request.path request.GET %}BEGIN:VCALENDAR
22
VERSION:2.0
33
METHOD:PUBLISH
44
PRODID:-//IETF//datatracker.ietf.org ical agenda//EN
@@ -14,9 +14,15 @@ DTSTAMP:{{ item.timeslot.modified|date:"Ymd" }}T{{ item.timeslot.modified|date:"
1414
URL:{{item.session.agenda.get_versionless_href}}{% endif %}
1515
DESCRIPTION:{{item.timeslot.name|ics_esc}}\n{% if item.session.agenda_note %}
1616
Note: {{item.session.agenda_note|ics_esc}}\n{% endif %}{% if item.timeslot.location.webex_url %}
17-
Webex: {{ item.timeslot.location.webex_url }}\n{% endif %}{% for material in item.session.materials.all %}
18-
\n{{material.type}}{% if material.type.name != "Agenda" %}
19-
({{material.title|ics_esc}}){% endif %}:
20-
{{material.get_versionless_href}}\n{% endfor %}
17+
\n
18+
Webex: {{ item.timeslot.location.webex_url }}\n{% endif %}{% if item.timeslot.location.video_stream_url %}
19+
\n
20+
Meetecho: {{ item.timeslot.location.video_stream_url|format:item.session }}\n{% endif %}{% if item.session.agenda %}{% with agenda=item.session.agenda %}
21+
\n
22+
{{agenda.type}} {{agenda.get_versionless_href}}\n{% endwith %}{% endif %}
23+
\n
24+
Session materials: {% absurl 'ietf.meeting.views.session_details' num=schedule.meeting.number acronym=item.session.group.acronym %}\n{% if schedule.meeting.get_number is not None %}
25+
\n{# link agenda for ietf meetings #}
26+
See in schedule: {% absurl 'ietf.meeting.views.agenda' num=schedule.meeting.number %}#row-{{ item.slug }}\n{% endif %}
2127
END:VEVENT
2228
{% endif %}{% endfor %}END:VCALENDAR{% endcache %}{% endautoescape %}

0 commit comments

Comments
 (0)