mirror of
https://github.com/pretix/pretix.git
synced 2026-04-29 00:12:38 +00:00
Fix timezone handling in widget
This commit is contained in:
@@ -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({
|
||||
|
||||
@@ -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': []},
|
||||
|
||||
Reference in New Issue
Block a user