diff --git a/src/pretix/presale/views/event.py b/src/pretix/presale/views/event.py index 489376b423..a250a27aad 100644 --- a/src/pretix/presale/views/event.py +++ b/src/pretix/presale/views/event.py @@ -42,7 +42,6 @@ from importlib import import_module from urllib.parse import urlencode import isoweek -import pytz from django.conf import settings from django.core.exceptions import PermissionDenied from django.db.models import ( @@ -578,7 +577,7 @@ class EventIndex(EventViewMixin, EventListMixin, CartMixin, TemplateView): if context['list_type'] == "calendar": self._set_month_year() - tz = pytz.timezone(self.request.event.settings.timezone) + tz = self.request.event.timezone _, ndays = calendar.monthrange(self.year, self.month) before = datetime(self.year, self.month, 1, 0, 0, 0, tzinfo=tz) - timedelta(days=1) after = datetime(self.year, self.month, ndays, 0, 0, 0, tzinfo=tz) + timedelta(days=1) @@ -608,7 +607,7 @@ class EventIndex(EventViewMixin, EventListMixin, CartMixin, TemplateView): context['years'] = range(now().year - 2, now().year + 3) elif context['list_type'] == "week": self._set_week_year() - tz = pytz.timezone(self.request.event.settings.timezone) + tz = self.request.event.timezone week = isoweek.Week(self.year, self.week) before = datetime( week.monday().year, week.monday().month, week.monday().day, 0, 0, 0, tzinfo=tz diff --git a/src/pretix/presale/views/organizer.py b/src/pretix/presale/views/organizer.py index 1d2c6ef817..778ec25f70 100644 --- a/src/pretix/presale/views/organizer.py +++ b/src/pretix/presale/views/organizer.py @@ -55,7 +55,6 @@ from django.utils.timezone import get_current_timezone, now from django.views import View from django.views.decorators.cache import cache_page from django.views.generic import ListView, TemplateView -from pytz import UTC from pretix.base.i18n import language from pretix.base.models import ( @@ -178,7 +177,7 @@ class EventListMixin: return qs def _set_month_to_next_subevent(self): - tz = pytz.timezone(self.request.event.settings.timezone) + tz = self.request.event.timezone next_sev = self.request.event.subevents.using(settings.DATABASE_REPLICA).filter( Q(date_from__gte=now()) | Q(date_to__isnull=False, date_to__gte=now()), active=True, @@ -218,7 +217,7 @@ class EventListMixin: datetime_from = next_ev.date_from if datetime_from: - tz = pytz.timezone(next_ev.settings.timezone) + tz = next_ev.timezone self.year = datetime_from.astimezone(tz).year self.month = datetime_from.astimezone(tz).month else: @@ -240,7 +239,7 @@ class EventListMixin: self._set_month_to_next_event() def _set_week_to_next_subevent(self): - tz = pytz.timezone(self.request.event.settings.timezone) + tz = self.request.event.timezone next_sev = self.request.event.subevents.using(settings.DATABASE_REPLICA).filter( Q(date_from__gte=now()) | Q(date_to__isnull=False, date_to__gte=now()), active=True, @@ -280,7 +279,7 @@ class EventListMixin: datetime_from = next_ev.date_from if datetime_from: - tz = pytz.timezone(next_ev.settings.timezone) + tz = next_ev.timezone self.year = datetime_from.astimezone(tz).isocalendar()[0] self.week = datetime_from.astimezone(tz).isocalendar()[1] else: @@ -428,8 +427,8 @@ def add_events_for_days(request, baseqs, before, after, ebd, timezones): if hasattr(request, 'organizer'): qs = filter_qs_by_attr(qs, request) for event in qs: - timezones.add(event.settings.timezones) - tz = pytz.timezone(event.settings.timezone) + timezones.add(event.settings.timezone) + tz = event.timezone datetime_from = event.date_from.astimezone(tz) date_from = datetime_from.date() if event.settings.show_date_to and event.date_to: @@ -508,7 +507,7 @@ def add_subevents_for_days(qs, before, after, ebd, timezones, event=None, cart_n if hide: continue - timezones.add(s.timezones) + timezones.add(s.timezone) tz = pytz.timezone(s.timezone) datetime_from = se.date_from.astimezone(tz) date_from = datetime_from.date() @@ -619,8 +618,10 @@ class CalendarView(OrganizerViewMixin, EventListMixin, TemplateView): _, ndays = calendar.monthrange(self.year, self.month) except calendar.IllegalMonthError: raise Http404() - before = datetime(self.year, self.month, 1, 0, 0, 0, tzinfo=UTC) - timedelta(days=1) - after = datetime(self.year, self.month, ndays, 0, 0, 0, tzinfo=UTC) + timedelta(days=1) + + tz = get_current_timezone() + before = tz.localize(datetime(self.year, self.month, 1, 0, 0, 0)) - timedelta(days=1) + after = tz.localize(datetime(self.year, self.month, ndays, 0, 0, 0)) + timedelta(days=1) ctx['date'] = date(self.year, self.month, 1) ctx['before'] = before @@ -694,13 +695,14 @@ class WeekCalendarView(OrganizerViewMixin, EventListMixin, TemplateView): def get_context_data(self, **kwargs): ctx = super().get_context_data() + tz = get_current_timezone() week = isoweek.Week(self.year, self.week) - before = datetime( - week.monday().year, week.monday().month, week.monday().day, 0, 0, 0, tzinfo=UTC - ) - timedelta(days=1) - after = datetime( - week.sunday().year, week.sunday().month, week.sunday().day, 0, 0, 0, tzinfo=UTC - ) + timedelta(days=1) + before = tz.localize(datetime( + week.monday().year, week.monday().month, week.monday().day, 0, 0, 0, + )) - timedelta(days=1) + after = tz.localize(datetime( + week.sunday().year, week.sunday().month, week.sunday().day, 0, 0, 0, + )) + timedelta(days=1) ctx['date'] = week.monday() ctx['before'] = before @@ -798,7 +800,7 @@ class DayCalendarView(OrganizerViewMixin, EventListMixin, TemplateView): datetime_from = next_ev.date_from if datetime_from: - self.tz = pytz.timezone(next_ev.settings.timezone) + self.tz = next_ev.timezone self.date = datetime_from.astimezone(self.tz).date() else: self.tz = self.request.organizer.timezone @@ -821,12 +823,13 @@ class DayCalendarView(OrganizerViewMixin, EventListMixin, TemplateView): def get_context_data(self, **kwargs): ctx = super().get_context_data() - before = datetime( - self.date.year, self.date.month, self.date.day, 0, 0, 0, tzinfo=UTC - ) - timedelta(days=1) - after = datetime( - self.date.year, self.date.month, self.date.day, 0, 0, 0, tzinfo=UTC - ) + timedelta(days=1) + tz = get_current_timezone() + before = tz.localize(datetime( + self.date.year, self.date.month, self.date.day, 0, 0, 0, + )) - timedelta(days=1) + after = tz.localize(datetime( + self.date.year, self.date.month, self.date.day, 0, 0, 0, + )) + timedelta(days=1) ctx['date'] = self.date ctx['cal_tz'] = self.tz diff --git a/src/pretix/presale/views/widget.py b/src/pretix/presale/views/widget.py index c0b6cbc449..1e51abd05f 100644 --- a/src/pretix/presale/views/widget.py +++ b/src/pretix/presale/views/widget.py @@ -481,9 +481,9 @@ class WidgetAPIProductList(EventListMixin, View): data['date'] = date(self.year, self.month, 1) if hasattr(self.request, 'event'): - tz = pytz.timezone(self.request.event.settings.timezone) + tz = self.request.event.timezone else: - tz = pytz.UTC + tz = self.request.organizer.timezone before = datetime(self.year, self.month, 1, 0, 0, 0, tzinfo=tz) - timedelta(days=1) after = datetime(self.year, self.month, ndays, 0, 0, 0, tzinfo=tz) + timedelta(days=1) @@ -529,9 +529,9 @@ class WidgetAPIProductList(EventListMixin, View): self._set_week_year() if hasattr(self.request, 'event'): - tz = pytz.timezone(self.request.event.settings.timezone) + tz = self.request.event.timezone else: - tz = pytz.UTC + tz = self.request.organizer.timezone week = isoweek.Week(self.year, self.week) data['week'] = [self.year, self.week] @@ -583,7 +583,7 @@ class WidgetAPIProductList(EventListMixin, View): data['has_more_events'] = True evs = evs[:limit] - tz = pytz.timezone(request.event.settings.timezone) + tz = request.event.timezone if self.request.event.settings.event_list_available_only: evs = [ se for se in evs