Tweaked the iCalendar urls, and added a test for interim meeting iCalendar files.

- Legacy-Id: 14764
This commit is contained in:
Henrik Levkowetz 2018-03-10 18:06:54 +00:00
parent a11cdd3b20
commit 1954fc1d9f
2 changed files with 38 additions and 6 deletions

View file

@ -1469,6 +1469,40 @@ class InterimTests(TestCase):
self.assertTrue('Action Required: Minutes' in outbox[-1]['Subject'])
def test_group_ical(self):
make_meeting_test_data()
meeting = Meeting.objects.filter(type='interim', session__group__acronym='mars').first()
s1 = Session.objects.filter(meeting=meeting, group__acronym="mars").first()
a1 = s1.official_timeslotassignment()
t1 = a1.timeslot
# Create an extra session
t2 = TimeSlotFactory.create(meeting=meeting, time=datetime.datetime.combine(meeting.date, datetime.time(11, 30)))
s2 = SessionFactory.create(meeting=meeting, group=s1.group, add_to_schedule=False)
SchedTimeSessAssignment.objects.create(timeslot=t2, session=s2, schedule=meeting.agenda)
#
url = urlreverse('ietf.meeting.views.ical_agenda', kwargs={'num':meeting.number, 'acronym':s1.group.acronym, })
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertEqual(r.get('Content-Type'), "text/calendar")
self.assertContains(r, 'BEGIN:VEVENT')
self.assertEqual(r.content.count('UID'), 2)
self.assertContains(r, 'SUMMARY:mars - Martian Special Interest Group')
self.assertContains(r, t1.time.strftime('%Y%m%dT%H%M%S'))
self.assertContains(r, t2.time.strftime('%Y%m%dT%H%M%S'))
self.assertContains(r, 'END:VEVENT')
#
url = urlreverse('ietf.meeting.views.ical_agenda', kwargs={'num':meeting.number, 'session_id':s1.id, })
r = self.client.get(url)
self.assertEqual(r.status_code, 200)
self.assertEqual(r.get('Content-Type'), "text/calendar")
self.assertContains(r, 'BEGIN:VEVENT')
self.assertEqual(r.content.count('UID'), 1)
self.assertContains(r, 'SUMMARY:mars - Martian Special Interest Group')
self.assertContains(r, t1.time.strftime('%Y%m%dT%H%M%S'))
self.assertNotContains(r, t2.time.strftime('%Y%m%dT%H%M%S'))
self.assertContains(r, 'END:VEVENT')
class AjaxTests(TestCase):
def test_ajax_get_utc(self):
# test bad queries

View file

@ -9,6 +9,7 @@ from ietf.utils.urls import url
safe_for_all_meeting_types = [
url(r'^session/(?P<acronym>[-a-z0-9]+)/?$', views.session_details),
url(r'^session/(?P<acronym>[-a-z0-9]+)\.ics$', views.ical_agenda),
url(r'^session/(?P<session_id>\d+)/drafts$', views.add_session_drafts),
url(r'^session/(?P<session_id>\d+)/bluesheets$', views.upload_session_bluesheets),
url(r'^session/(?P<session_id>\d+)/minutes$', views.upload_session_minutes),
@ -17,7 +18,6 @@ safe_for_all_meeting_types = [
url(r'^session/(?P<session_id>\d+)/slides/%(name)s/order$' % settings.URL_REGEXPS, views.set_slide_order),
url(r'^session/(?P<session_id>\d+)/doc/%(name)s/remove$' % settings.URL_REGEXPS, views.remove_sessionpresentation),
url(r'^session/(?P<session_id>\d+)\.ics$', views.ical_agenda),
url(r'^session/(?P<acronym>[-a-z0-9]+).ics$', views.ical_agenda),
]
@ -73,10 +73,8 @@ type_ietf_only_patterns_id_optional = [
url(r'^agenda(?P<ext>.csv)$', views.agenda),
url(r'^agenda/edit$', views.edit_agenda),
url(r'^requests$', views.meeting_requests),
url(r'^agenda/agenda.ics$', views.ical_agenda),
url(r'^agenda.ics$', views.ical_agenda),
url(r'^session/(?P<session_id>\d+)\.ics$', views.ical_agenda),
url(r'^session/(?P<acronym>[-a-z0-9]+).ics$', views.ical_agenda),
url(r'^agenda/agenda\.ics$', views.ical_agenda),
url(r'^agenda\.ics$', views.ical_agenda),
url(r'^agenda.json$', views.json_agenda),
url(r'^agenda/week-view(?:.html)?/?$', views.week_view),
url(r'^agenda/room-view(?:.html)?/?$', views.room_view),
@ -112,7 +110,7 @@ urlpatterns = [
url(r'^requests.html$', RedirectView.as_view(url='/meeting/requests', permanent=True)),
url(r'^past/?$', views.past),
url(r'^upcoming/?$', views.upcoming),
url(r'^upcoming.ics/?$', views.upcoming_ical),
url(r'^upcoming\.ics/?$', views.upcoming_ical),
# Then patterns from more specific to less
url(r'^(?P<num>interim-[a-z0-9-]+)/', include(type_interim_patterns)),
url(r'^(?P<num>\d+)/requests.html$', RedirectView.as_view(url='/meeting/%(num)s/requests', permanent=True)),