From d9b53a5d6cd9b0cc066119a4b813b834bac172f5 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Mon, 10 Sep 2018 20:12:09 +0000 Subject: [PATCH] Use unversioned links in ics agendas. Partially fixes #2542. Commit ready for merge. - Legacy-Id: 15446 --- ietf/doc/models.py | 17 +++++++++++++---- ietf/settings.py | 9 +++++++++ ietf/templates/meeting/agenda.ics | 4 ++-- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/ietf/doc/models.py b/ietf/doc/models.py index fce3ca516..99adc2f91 100644 --- a/ietf/doc/models.py +++ b/ietf/doc/models.py @@ -177,7 +177,16 @@ class DocumentInfo(models.Model): revisions.sort() return revisions + def href(self, meeting=None): + return self._get_ref(meeting=meeting,meeting_doc_refs=settings.MEETING_DOC_HREFS) + + + def gref(self, meeting=None): + return self._get_ref(meeting=meeting,meeting_doc_refs=settings.MEETING_DOC_GREFS) + + + def _get_ref(self, meeting=None, meeting_doc_refs=settings.MEETING_DOC_HREFS): """ Returns an url to the document text. This differs from .get_absolute_url(), which returns an url to the datatracker page for the document. @@ -198,10 +207,10 @@ class DocumentInfo(models.Model): pass - if self.type_id in settings.DOC_HREFS and self.type_id in settings.MEETING_DOC_HREFS: + if self.type_id in settings.DOC_HREFS and self.type_id in meeting_doc_refs: if self.meeting_related(): self.is_meeting_related = True - format = settings.MEETING_DOC_HREFS[self.type_id] + format = meeting_doc_refs[self.type_id] else: self.is_meeting_related = False format = settings.DOC_HREFS[self.type_id] @@ -211,7 +220,7 @@ class DocumentInfo(models.Model): format = settings.DOC_HREFS['rfc'] else: format = settings.DOC_HREFS[self.type_id] - elif self.type_id in settings.MEETING_DOC_HREFS: + elif self.type_id in meeting_doc_refs: self.is_meeting_related = True else: if len(self.external_url): @@ -231,7 +240,7 @@ class DocumentInfo(models.Model): # After IETF 96, meeting materials acquired revision # handling, and the document naming changed. if meeting.number.isdigit() and int(meeting.number) > 96: - format = settings.MEETING_DOC_HREFS[self.type_id] + format = meeting_doc_refs[self.type_id] else: format = settings.MEETING_DOC_OLD_HREFS[self.type_id] info = dict(doc=self, meeting=meeting) diff --git a/ietf/settings.py b/ietf/settings.py index 6e33087f5..a0a42fa14 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -621,6 +621,15 @@ MEETING_DOC_OLD_HREFS = { "bluesheets": "https://www.ietf.org/proceedings/{meeting.number}/bluesheets/{doc.external_url}", } +# For http references to documents without a version number (that is, to the current version at the time of reference) +MEETING_DOC_GREFS = { + "agenda": "/meeting/{meeting.number}/materials/{doc.name}", + "minutes": "/meeting/{meeting.number}/materials/{doc.name}", + "slides": "/meeting/{meeting.number}/materials/{doc.name}", + "recording": "{doc.external_url}", + "bluesheets": "https://www.ietf.org/proceedings/{meeting.number}/bluesheets/{doc.external_url}", +} + # Override this in settings_local.py if needed CACHE_MIDDLEWARE_SECONDS = 300 CACHE_MIDDLEWARE_KEY_PREFIX = '' diff --git a/ietf/templates/meeting/agenda.ics b/ietf/templates/meeting/agenda.ics index a5b153168..92d64588c 100644 --- a/ietf/templates/meeting/agenda.ics +++ b/ietf/templates/meeting/agenda.ics @@ -11,11 +11,11 @@ CLASS:PUBLIC DTSTART{% if schedule.meeting.time_zone %};TZID="{{schedule.meeting.time_zone}}"{%endif%}:{{ item.timeslot.time|date:"Ymd" }}T{{item.timeslot.time|date:"Hi"}}00 DTEND{% if schedule.meeting.time_zone %};TZID="{{schedule.meeting.time_zone}}"{%endif%}:{{ item.timeslot.end_time|date:"Ymd" }}T{{item.timeslot.end_time|date:"Hi"}}00 DTSTAMP:{{ item.timeslot.modified|date:"Ymd" }}T{{ item.timeslot.modified|date:"His" }}Z -{% if item.session.agenda %}URL:{{item.session.agenda.href}} +{% if item.session.agenda %}URL:{{item.session.agenda.gref}} DESCRIPTION:{{item.timeslot.name|ics_esc}}\n{% if item.session.agenda_note %} Note: {{item.session.agenda_note|ics_esc}}\n{% endif %}{% for material in item.session.materials.all %} \n{{material.type}}{% if material.type.name != "Agenda" %} ({{material.title|ics_esc}}){% endif %}: - {{material.href}}\n{% endfor %} + {{material.gref}}\n{% endfor %} {% endif %}END:VEVENT {% endif %}{% endfor %}END:VCALENDAR{% endautoescape %}