Use unversioned links in ics agendas. Partially fixes #2542. Commit ready for merge.

- Legacy-Id: 15446
This commit is contained in:
Robert Sparks 2018-09-10 20:12:09 +00:00
parent fd8af4b6f7
commit d9b53a5d6c
3 changed files with 24 additions and 6 deletions

View file

@ -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)

View file

@ -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 = ''

View file

@ -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 %}