Fix timezone handling in widget

This commit is contained in:
Raphael Michel
2019-04-17 14:42:00 +02:00
parent 420d44e909
commit 58b1a2f115
2 changed files with 21 additions and 14 deletions

View File

@@ -294,12 +294,14 @@ class WidgetAPIProductList(EventListMixin, View):
event = ev.event
else:
event = ev
tz = pytz.timezone(e['timezone'])
events.append({
'name': str(ev.name),
'time': date_format(e['time'], 'TIME_FORMAT') if e.get('time') and event.settings.show_times else None,
'time': date_format(ev.date_from.astimezone(tz), 'TIME_FORMAT') if e.get('time') and event.settings.show_times else
None,
'continued': e['continued'],
'date_range': ev.get_date_range_display() + (
" " + date_format(ev.date_from, "TIME_FORMAT") if event.settings.show_times else ""
" " + date_format(ev.date_from.astimezone(tz), "TIME_FORMAT") if event.settings.show_times else ""
),
'availability': self._get_availability(ev, event),
'event_url': build_absolute_uri(event, 'presale:event.index'),
@@ -370,11 +372,12 @@ class WidgetAPIProductList(EventListMixin, View):
evs = self.request.event.subevents_sorted(
self.request.event.subevents_annotated(self.request.sales_channel)
)
tz = pytz.timezone(request.event.settings.timezone)
data['events'] = [
{
'name': str(ev.name),
'date_range': ev.get_date_range_display() + (
" " + date_format(ev.date_from, "TIME_FORMAT") if ev.event.settings.show_times else ""
'date_range': ev.get_date_range_display(tz) + (
(" " + ev.get_time_from_display(tz)) if ev.event.settings.show_times else ""
),
'availability': self._get_availability(ev, ev.event),
'event_url': build_absolute_uri(ev.event, 'presale:event.index'),
@@ -393,8 +396,8 @@ class WidgetAPIProductList(EventListMixin, View):
)
avail = {'color': 'none', 'text': ugettext('Event series')}
else:
dr = event.get_date_range_display() + (
" " + date_format(event.date_from, "TIME_FORMAT") if event.settings.show_times else ""
dr = event.get_date_range_display(tz) + (
" " + event.get_time_from_display(tz) if event.settings.show_times else ""
)
avail = self._get_availability(event, event)
data['events'].append({

View File

@@ -327,6 +327,7 @@ class WidgetCartTest(CartTestMixin, TestCase):
def test_subevent_list(self):
self.event.has_subevents = True
self.event.settings.timezone = 'Europe/Berlin'
self.event.save()
with freeze_time("2019-01-01 10:00:00"):
self.event.subevents.create(name="Past", active=True, date_from=now() - datetime.timedelta(days=3))
@@ -340,15 +341,16 @@ class WidgetCartTest(CartTestMixin, TestCase):
assert data == {
'list_type': 'list',
'events': [
{'name': 'Present', 'date_range': 'Jan. 1, 2019 10:00', 'availability': {'color': 'green', 'text': 'Tickets on sale'},
{'name': 'Present', 'date_range': 'Jan. 1, 2019 11:00', 'availability': {'color': 'green', 'text': 'Tickets on sale'},
'event_url': 'http://example.com/ccc/30c3/', 'subevent': se1.pk},
{'name': 'Future', 'date_range': 'Jan. 4, 2019 10:00', 'availability': {'color': 'green', 'text': 'Tickets on sale'},
{'name': 'Future', 'date_range': 'Jan. 4, 2019 11:00', 'availability': {'color': 'green', 'text': 'Tickets on sale'},
'event_url': 'http://example.com/ccc/30c3/', 'subevent': se2.pk}
]
}
def test_subevent_calendar(self):
self.event.has_subevents = True
self.event.settings.timezone = 'Europe/Berlin'
self.event.save()
with freeze_time("2019-01-01 10:00:00"):
self.event.subevents.create(name="Past", active=True, date_from=now() - datetime.timedelta(days=3))
@@ -366,13 +368,13 @@ class WidgetCartTest(CartTestMixin, TestCase):
[
None,
{'day': 1, 'date': '2019-01-01', 'events': [
{'name': 'Present', 'time': '10:00', 'continued': False, 'date_range': 'Jan. 1, 2019 10:00',
{'name': 'Present', 'time': '11:00', 'continued': False, 'date_range': 'Jan. 1, 2019 11:00',
'availability': {'color': 'green', 'text': 'Tickets on sale'},
'event_url': 'http://example.com/ccc/30c3/', 'subevent': se1.pk}]},
{'day': 2, 'date': '2019-01-02', 'events': []},
{'day': 3, 'date': '2019-01-03', 'events': []},
{'day': 4, 'date': '2019-01-04', 'events': [
{'name': 'Future', 'time': '10:00', 'continued': False, 'date_range': 'Jan. 4, 2019 10:00',
{'name': 'Future', 'time': '11:00', 'continued': False, 'date_range': 'Jan. 4, 2019 11:00',
'availability': {'color': 'green', 'text': 'Tickets on sale'},
'event_url': 'http://example.com/ccc/30c3/', 'subevent': se2.pk}]},
{'day': 5, 'date': '2019-01-05', 'events': []},
@@ -417,6 +419,7 @@ class WidgetCartTest(CartTestMixin, TestCase):
def test_event_list(self):
self.event.has_subevents = True
self.event.settings.timezone = 'Europe/Berlin'
self.event.save()
with freeze_time("2019-01-01 10:00:00"):
self.orga.events.create(name="Past", live=True, is_public=True, slug='past', date_from=now() - datetime.timedelta(days=3))
@@ -452,6 +455,7 @@ class WidgetCartTest(CartTestMixin, TestCase):
def test_event_calendar(self):
self.event.has_subevents = True
self.event.settings.timezone = 'Europe/Berlin'
self.event.save()
with freeze_time("2019-01-01 10:00:00"):
self.orga.events.create(name="Past", live=True, is_public=True, slug='past', date_from=now() - datetime.timedelta(days=3))
@@ -485,11 +489,11 @@ class WidgetCartTest(CartTestMixin, TestCase):
{'availability': {'color': 'green',
'text': 'Tickets on sale'},
'continued': False,
'date_range': 'Jan. 1, 2019 10:00',
'date_range': 'Jan. 1, 2019 11:00',
'event_url': 'http://example.com/ccc/30c3/',
'name': 'Present',
'subevent': se1.pk,
'time': '10:00'}]},
'time': '11:00'}]},
{'date': '2019-01-02', 'day': 2, 'events': []},
{'date': '2019-01-03', 'day': 3, 'events': []},
{'date': '2019-01-04',
@@ -505,11 +509,11 @@ class WidgetCartTest(CartTestMixin, TestCase):
{'availability': {'color': 'green',
'text': 'Tickets on sale'},
'continued': False,
'date_range': 'Jan. 4, 2019 10:00',
'date_range': 'Jan. 4, 2019 11:00',
'event_url': 'http://example.com/ccc/30c3/',
'name': 'Future',
'subevent': se2.pk,
'time': '10:00'}]},
'time': '11:00'}]},
{'date': '2019-01-05', 'day': 5, 'events': []},
{'date': '2019-01-06', 'day': 6, 'events': []}],
[{'date': '2019-01-07', 'day': 7, 'events': []},