Update links in iCal description to be more useful. Fixes #3349. Commit ready for merge.
- Legacy-Id: 19384
This commit is contained in:
parent
fc9864114b
commit
7d59456103
|
@ -5,6 +5,7 @@
|
|||
import bleach
|
||||
import datetime
|
||||
import re
|
||||
from urllib.parse import urljoin
|
||||
|
||||
from email.utils import parseaddr
|
||||
|
||||
|
@ -413,7 +414,6 @@ def format_snippet(text, trunc_words=25):
|
|||
@register.simple_tag
|
||||
def doc_edit_button(url_name, *args, **kwargs):
|
||||
"""Given URL name/args/kwargs, looks up the URL just like "url" tag and returns a properly formatted button for the document material tables."""
|
||||
from django.urls import reverse as urlreverse
|
||||
return mark_safe('<a class="btn btn-default btn-xs" href="%s">Edit</a>' % (urlreverse(url_name, args=args, kwargs=kwargs)))
|
||||
|
||||
@register.filter
|
||||
|
@ -613,3 +613,11 @@ def action_holder_badge(action_holder):
|
|||
else:
|
||||
return '' # no alert needed
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def absurl(viewname, **kwargs):
|
||||
"""Get the absolute URL for a view by name
|
||||
|
||||
Uses settings.IDTRACKER_BASE_URL as the base.
|
||||
"""
|
||||
return urljoin(settings.IDTRACKER_BASE_URL, urlreverse(viewname, kwargs=kwargs))
|
|
@ -247,6 +247,7 @@ class MeetingTests(BaseMeetingTestCase):
|
|||
# iCal
|
||||
r = self.client.get(urlreverse("ietf.meeting.views.agenda_ical", kwargs=dict(num=meeting.number))
|
||||
+ "?show=" + session.group.parent.acronym.upper())
|
||||
assert_ical_response_is_valid(self, r)
|
||||
self.assertContains(r, session.group.acronym)
|
||||
self.assertContains(r, session.group.name)
|
||||
self.assertContains(r, slot.location.name)
|
||||
|
@ -254,9 +255,18 @@ class MeetingTests(BaseMeetingTestCase):
|
|||
self.assertContains(r, "END:VTIMEZONE")
|
||||
|
||||
self.assertContains(r, session.agenda().get_href())
|
||||
self.assertContains(r, session.materials.filter(type='slides').exclude(states__type__slug='slides',states__slug='deleted').first().get_href())
|
||||
# TODO - the ics view uses .all on a queryset in a view so it's showing the deleted slides.
|
||||
#self.assertNotContains(r, session.materials.filter(type='slides',states__type__slug='slides',states__slug='deleted').first().get_absolute_url())
|
||||
self.assertContains(
|
||||
r,
|
||||
urlreverse(
|
||||
'ietf.meeting.views.session_details',
|
||||
kwargs=dict(num=meeting.number, acronym=session.group.acronym)),
|
||||
msg_prefix='ical should contain link to meeting materials page for session')
|
||||
self.assertContains(
|
||||
r,
|
||||
urlreverse(
|
||||
'ietf.meeting.views.agenda', kwargs=dict(num=meeting.number)
|
||||
) + f'#row-{session.official_timeslotassignment().slug()}',
|
||||
msg_prefix='ical should contain link to agenda entry for session')
|
||||
|
||||
# week view
|
||||
r = self.client.get(urlreverse("ietf.meeting.views.week_view", kwargs=dict(num=meeting.number)))
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{% load humanize %}{% autoescape off %}{% load ietf_filters %}{% load cache %}{% cache 1800 ietf_meeting_agenda_ics schedule.meeting.number request.path request.GET %}BEGIN:VCALENDAR
|
||||
{% 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
|
||||
VERSION:2.0
|
||||
METHOD:PUBLISH
|
||||
PRODID:-//IETF//datatracker.ietf.org ical agenda//EN
|
||||
|
@ -14,9 +14,15 @@ DTSTAMP:{{ item.timeslot.modified|date:"Ymd" }}T{{ item.timeslot.modified|date:"
|
|||
URL:{{item.session.agenda.get_versionless_href}}{% endif %}
|
||||
DESCRIPTION:{{item.timeslot.name|ics_esc}}\n{% if item.session.agenda_note %}
|
||||
Note: {{item.session.agenda_note|ics_esc}}\n{% endif %}{% if item.timeslot.location.webex_url %}
|
||||
Webex: {{ item.timeslot.location.webex_url }}\n{% endif %}{% for material in item.session.materials.all %}
|
||||
\n{{material.type}}{% if material.type.name != "Agenda" %}
|
||||
({{material.title|ics_esc}}){% endif %}:
|
||||
{{material.get_versionless_href}}\n{% endfor %}
|
||||
\n
|
||||
Webex: {{ item.timeslot.location.webex_url }}\n{% endif %}{% if item.timeslot.location.video_stream_url %}
|
||||
\n
|
||||
Meetecho: {{ item.timeslot.location.video_stream_url|format:item.session }}\n{% endif %}{% if item.session.agenda %}{% with agenda=item.session.agenda %}
|
||||
\n
|
||||
{{agenda.type}} {{agenda.get_versionless_href}}\n{% endwith %}{% endif %}
|
||||
\n
|
||||
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 %}
|
||||
\n{# link agenda for ietf meetings #}
|
||||
See in schedule: {% absurl 'ietf.meeting.views.agenda' num=schedule.meeting.number %}#row-{{ item.slug }}\n{% endif %}
|
||||
END:VEVENT
|
||||
{% endif %}{% endfor %}END:VCALENDAR{% endcache %}{% endautoescape %}
|
||||
|
|
Loading…
Reference in a new issue