diff --git a/src/pretix/presale/templates/pretixpresale/fragment_week_calendar.html b/src/pretix/presale/templates/pretixpresale/fragment_week_calendar.html index 732c6e6ec..b1161d1d6 100644 --- a/src/pretix/presale/templates/pretixpresale/fragment_week_calendar.html +++ b/src/pretix/presale/templates/pretixpresale/fragment_week_calendar.html @@ -41,6 +41,9 @@ {% endif %} {{ event.time|date:"TIME_FORMAT" }} + {% if event.time_end %} + – {{ event.time_end|date:"TIME_FORMAT" }} + {% endif %} {% if not show_names|default_if_none:True %} {% endif %} diff --git a/src/pretix/presale/views/organizer.py b/src/pretix/presale/views/organizer.py index 2824f0332..95233dc2a 100644 --- a/src/pretix/presale/views/organizer.py +++ b/src/pretix/presale/views/organizer.py @@ -313,6 +313,7 @@ def add_events_for_days(request, baseqs, before, after, ebd, timezones): datetime_from = event.date_from.astimezone(tz) date_from = datetime_from.date() if event.settings.show_date_to and event.date_to: + datetime_to = event.date_to.astimezone(tz) date_to = event.date_to.astimezone(tz).date() d = max(date_from, before.date()) while d <= date_to and d <= after.date(): @@ -321,6 +322,7 @@ def add_events_for_days(request, baseqs, before, after, ebd, timezones): 'event': event, 'continued': not first, 'time': datetime_from.time().replace(tzinfo=None) if first and event.settings.show_times else None, + 'time_end': datetime_to.time().replace(tzinfo=None) if date_to == date_from and event.settings.show_times else None, 'url': eventreverse(event, 'presale:event.index'), 'timezone': event.settings.timezone, }) @@ -374,6 +376,7 @@ def add_subevents_for_days(qs, before, after, ebd, timezones, event=None, cart_n elif str(se.name) != name: ebd['_subevents_different_names'] = True if se.event.settings.show_date_to and se.date_to: + datetime_to = se.date_to.astimezone(tz) date_to = se.date_to.astimezone(tz).date() d = max(date_from, before.date()) while d <= date_to and d <= after.date(): @@ -382,6 +385,7 @@ def add_subevents_for_days(qs, before, after, ebd, timezones, event=None, cart_n 'continued': not first, 'timezone': settings.timezone, 'time': datetime_from.time().replace(tzinfo=None) if first and settings.show_times else None, + 'time_end': datetime_to.time().replace(tzinfo=None) if date_to == date_from and settings.show_times else None, 'event': se, 'url': eventreverse(se.event, 'presale:event.index', kwargs=kwargs) }) diff --git a/src/pretix/presale/views/widget.py b/src/pretix/presale/views/widget.py index ccd200260..b3f89bb6d 100644 --- a/src/pretix/presale/views/widget.py +++ b/src/pretix/presale/views/widget.py @@ -344,10 +344,12 @@ class WidgetAPIProductList(EventListMixin, View): else: event = ev tz = pytz.timezone(e['timezone']) + time = date_format(ev.date_from.astimezone(tz), 'TIME_FORMAT') if e.get('time') and event.settings.show_times else None + if time and ev.date_to and ev.date_from.astimezone(tz).date() == ev.date_to.astimezone(tz).date() and event.settings.show_date_to: + time += ' – ' + date_format(ev.date_to.astimezone(tz), 'TIME_FORMAT') events.append({ 'name': str(ev.name), - 'time': date_format(ev.date_from.astimezone(tz), 'TIME_FORMAT') if e.get('time') and event.settings.show_times else - None, + 'time': time, 'continued': e['continued'], 'location': str(ev.location), 'date_range': ev.get_date_range_display() + (