forked from CGM_Public/pretix_original
Fix iCal export for full-day events (DTEND is non-inclusive) (#1854)
This commit is contained in:
committed by
GitHub
parent
e5d554a7b3
commit
c340fd9d97
@@ -46,7 +46,9 @@ def get_ical(events):
|
|||||||
if event.settings.show_times:
|
if event.settings.show_times:
|
||||||
vevent.add('dtend').value = ev.date_to.astimezone(tz)
|
vevent.add('dtend').value = ev.date_to.astimezone(tz)
|
||||||
else:
|
else:
|
||||||
vevent.add('dtend').value = ev.date_to.astimezone(tz).date()
|
# with full-day events date_to in pretix is included (e.g. last day)
|
||||||
|
# whereas dtend in vcalendar is non-inclusive => add one day for export
|
||||||
|
vevent.add('dtend').value = ev.date_to.astimezone(tz).date() + datetime.timedelta(days=1)
|
||||||
|
|
||||||
descr = []
|
descr = []
|
||||||
descr.append(_('Tickets: {url}').format(url=url))
|
descr.append(_('Tickets: {url}').format(url=url))
|
||||||
|
|||||||
@@ -1172,7 +1172,7 @@ class EventIcalDownloadTest(EventTestMixin, SoupTest):
|
|||||||
self.event.save()
|
self.event.save()
|
||||||
ical = self.client.get('/%s/%s/ical/' % (self.orga.slug, self.event.slug)).content.decode()
|
ical = self.client.get('/%s/%s/ical/' % (self.orga.slug, self.event.slug)).content.decode()
|
||||||
self.assertIn('DTSTART;VALUE=DATE:%s' % self.event.date_from.strftime('%Y%m%d'), ical, 'incorrect start date')
|
self.assertIn('DTSTART;VALUE=DATE:%s' % self.event.date_from.strftime('%Y%m%d'), ical, 'incorrect start date')
|
||||||
self.assertIn('DTEND;VALUE=DATE:%s' % self.event.date_to.strftime('%Y%m%d'), ical, 'incorrect end date')
|
self.assertIn('DTEND;VALUE=DATE:%s' % (self.event.date_to + datetime.timedelta(days=1)).strftime('%Y%m%d'), ical, 'incorrect end date')
|
||||||
|
|
||||||
def test_no_date_to(self):
|
def test_no_date_to(self):
|
||||||
self.event.settings.timezone = 'Asia/Tokyo'
|
self.event.settings.timezone = 'Asia/Tokyo'
|
||||||
@@ -1202,7 +1202,7 @@ class EventIcalDownloadTest(EventTestMixin, SoupTest):
|
|||||||
self.event.save()
|
self.event.save()
|
||||||
ical = self.client.get('/%s/%s/ical/' % (self.orga.slug, self.event.slug)).content.decode()
|
ical = self.client.get('/%s/%s/ical/' % (self.orga.slug, self.event.slug)).content.decode()
|
||||||
self.assertIn('DTSTART;VALUE=DATE:20131227', ical, 'incorrect start date')
|
self.assertIn('DTSTART;VALUE=DATE:20131227', ical, 'incorrect start date')
|
||||||
self.assertIn('DTEND;VALUE=DATE:20131229', ical, 'incorrect end date')
|
self.assertIn('DTEND;VALUE=DATE:20131230', ical, 'incorrect end date')
|
||||||
|
|
||||||
def test_subevent_required(self):
|
def test_subevent_required(self):
|
||||||
self.event.has_subevents = True
|
self.event.has_subevents = True
|
||||||
@@ -1226,7 +1226,7 @@ class EventIcalDownloadTest(EventTestMixin, SoupTest):
|
|||||||
self.event.settings.show_times = False
|
self.event.settings.show_times = False
|
||||||
ical = self.client.get('/%s/%s/ical/%d/' % (self.orga.slug, self.event.slug, se1.pk)).content.decode()
|
ical = self.client.get('/%s/%s/ical/%d/' % (self.orga.slug, self.event.slug, se1.pk)).content.decode()
|
||||||
self.assertIn('DTSTART;VALUE=DATE:20141226', ical, 'incorrect start date')
|
self.assertIn('DTSTART;VALUE=DATE:20141226', ical, 'incorrect start date')
|
||||||
self.assertIn('DTEND;VALUE=DATE:20141228', ical, 'incorrect end date')
|
self.assertIn('DTEND;VALUE=DATE:20141229', ical, 'incorrect end date')
|
||||||
self.assertIn('SUMMARY:%s' % se1.name, ical, 'incorrect correct summary')
|
self.assertIn('SUMMARY:%s' % se1.name, ical, 'incorrect correct summary')
|
||||||
self.assertIn('LOCATION:Heeeeeere', ical, 'incorrect location')
|
self.assertIn('LOCATION:Heeeeeere', ical, 'incorrect location')
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user