Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion ietf/meeting/tests_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -385,7 +385,20 @@ def test_meeting_agenda(self):
assert_ical_response_is_valid(self, r)
self.assertContains(r, "BEGIN:VTIMEZONE")
self.assertContains(r, "END:VTIMEZONE")

self.assertContains(r, meeting.time_zone, msg_prefix="time_zone should appear in its original case")
self.assertNotEqual(
meeting.time_zone,
meeting.time_zone.lower(),
"meeting needs a mixed-case tz for this test",
)
self.assertNotContains(r, meeting.time_zone.lower(), msg_prefix="time_zone should not be lower-cased")
self.assertNotEqual(
meeting.time_zone,
meeting.time_zone.upper(),
"meeting needs a mixed-case tz for this test",
)
self.assertNotContains(r, meeting.time_zone.upper(), msg_prefix="time_zone should not be upper-cased")

# iCal, single group
r = self.client.get(ical_url + "?show=" + session.group.parent.acronym.upper())
assert_ical_response_is_valid(self, r)
Expand Down
9 changes: 7 additions & 2 deletions ietf/submit/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@
from ietf.utils.mail import is_valid_email
from ietf.utils.text import parse_unicode, normalize_text
from ietf.utils.timezone import date_today
from ietf.utils.xmldraft import XMLDraft
from ietf.utils.xmldraft import InvalidMetadataError, XMLDraft
from ietf.person.name import unidecode_name


Expand Down Expand Up @@ -1201,6 +1201,11 @@ def process_submission_xml(filename, revision):
if not title:
raise SubmissionError("Could not extract a valid title from the XML")

try:
document_date = xml_draft.get_creation_date()
except InvalidMetadataError as err:
raise SubmissionError(str(err)) from err

return {
"filename": xml_draft.filename,
"rev": xml_draft.revision,
Expand All @@ -1210,7 +1215,7 @@ def process_submission_xml(filename, revision):
for auth in xml_draft.get_author_list()
],
"abstract": None, # not supported from XML
"document_date": xml_draft.get_creation_date(),
"document_date": document_date,
"pages": None, # not supported from XML
"words": None, # not supported from XML
"first_two_pages": None, # not supported from XML
Expand Down
2 changes: 1 addition & 1 deletion ietf/templates/meeting/agenda.ics
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{% load humanize tz %}{% autoescape off %}{% timezone schedule.meeting.tz %}{% with tzname=schedule.meeting.time_zone|lower %}{% load ietf_filters textfilters %}{% load cache %}{% cache 1800 ietf_meeting_agenda_ics schedule.meeting.number request.path request.GET %}BEGIN:VCALENDAR
{% load humanize tz %}{% autoescape off %}{% timezone schedule.meeting.tz %}{% with tzname=schedule.meeting.time_zone %}{% 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
Expand Down
15 changes: 14 additions & 1 deletion ietf/utils/xmldraft.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,16 @@ def parse_creation_date(date_elt):
day = today.day
else:
day = 15
return datetime.date(year, month, day)
try:
creation_date = datetime.date(year, month, day)
except Exception:
raise InvalidMetadataError(
"The <date> element in the <front> section specified an incomplete date "
"that was not consistent with today's date. If you specify only a year, "
"it must be the four-digit current year. To use today's date, omit the "
"date tag or use <date/>."
)
return creation_date

def get_creation_date(self):
return self.parse_creation_date(self.xmlroot.find("front/date"))
Expand Down Expand Up @@ -269,3 +278,7 @@ def parser_msgs(self):
class InvalidXMLError(Exception):
"""File is not valid XML"""
pass


class InvalidMetadataError(Exception):
"""XML is well-formed but has invalid metadata"""