mirror of
https://github.com/pretix/pretix.git
synced 2026-05-07 15:34:02 +00:00
Refs #634 -- Re-allow deleting the last subevent and fix UI crashes
This commit is contained in:
@@ -14,7 +14,7 @@ from django.utils import formats
|
||||
from django.utils.formats import date_format
|
||||
from django.utils.html import escape
|
||||
from django.utils.timezone import now
|
||||
from django.utils.translation import ugettext_lazy as _, ungettext
|
||||
from django.utils.translation import ugettext_lazy as _, ungettext, pgettext
|
||||
|
||||
from pretix.base.models import (
|
||||
Item, Order, OrderPosition, RequiredAction, SubEvent, Voucher,
|
||||
@@ -329,10 +329,13 @@ def widgets_for_event_qs(request, qs, user, nmax):
|
||||
for event in events:
|
||||
tz = pytz.timezone(event.cache.get_or_set('timezone', lambda: event.settings.timezone))
|
||||
if event.has_subevents:
|
||||
dr = daterange(
|
||||
(event.min_from).astimezone(tz),
|
||||
(event.max_fromto or event.max_to or event.max_from).astimezone(tz)
|
||||
)
|
||||
if event.min_from is None:
|
||||
dr = pgettext("subevent", "No dates")
|
||||
else:
|
||||
dr = daterange(
|
||||
(event.min_from).astimezone(tz),
|
||||
(event.max_fromto or event.max_to or event.max_from).astimezone(tz)
|
||||
)
|
||||
else:
|
||||
if event.date_to:
|
||||
dr = daterange(event.date_from.astimezone(tz), event.date_to.astimezone(tz))
|
||||
|
||||
@@ -98,7 +98,7 @@ class SubEventDelete(EventPermissionRequiredMixin, DeleteView):
|
||||
raise Http404(pgettext_lazy("subevent", "The requested date does not exist."))
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
if self.get_object().orderposition_set.count() > 0:
|
||||
if not self.get_object().allow_delete():
|
||||
messages.error(request, pgettext_lazy('subevent', 'A date can not be deleted if orders already have been '
|
||||
'placed.'))
|
||||
return HttpResponseRedirect(self.get_success_url())
|
||||
@@ -109,13 +109,10 @@ class SubEventDelete(EventPermissionRequiredMixin, DeleteView):
|
||||
self.object = self.get_object()
|
||||
success_url = self.get_success_url()
|
||||
|
||||
if self.object.orderposition_set.count() > 0:
|
||||
if not self.object.allow_delete():
|
||||
messages.error(request, pgettext_lazy('subevent', 'A date can not be deleted if orders already have been '
|
||||
'placed.'))
|
||||
return HttpResponseRedirect(self.get_success_url())
|
||||
elif not self.object.allow_delete(): # checking if this is the last date in the event series
|
||||
messages.error(request, pgettext_lazy('subevent', 'The last date of an event series can not be deleted.'))
|
||||
return HttpResponseRedirect(self.get_success_url())
|
||||
else:
|
||||
self.object.log_action('pretix.subevent.deleted', user=self.request.user)
|
||||
self.object.delete()
|
||||
|
||||
@@ -8,7 +8,7 @@ from django.db.models.functions import Coalesce, Greatest
|
||||
from django.http import JsonResponse
|
||||
from django.urls import reverse
|
||||
from django.utils.timezone import make_aware
|
||||
from django.utils.translation import ugettext as _
|
||||
from django.utils.translation import ugettext as _, pgettext
|
||||
|
||||
from pretix.base.models import Organizer, User
|
||||
from pretix.control.permissions import event_permission_required
|
||||
@@ -38,11 +38,14 @@ def event_list(request):
|
||||
|
||||
dr = e.get_date_range_display()
|
||||
if e.has_subevents:
|
||||
tz = pytz.timezone(e.settings.timezone)
|
||||
dr = _('Series:') + ' ' + daterange(
|
||||
e.min_from.astimezone(tz),
|
||||
(e.max_fromto or e.max_to or e.max_from).astimezone(tz)
|
||||
)
|
||||
if e.min_from is None:
|
||||
dr = pgettext('subevent', 'No dates')
|
||||
else:
|
||||
tz = pytz.timezone(e.settings.timezone)
|
||||
dr = _('Series:') + ' ' + daterange(
|
||||
e.min_from.astimezone(tz),
|
||||
(e.max_fromto or e.max_to or e.max_from).astimezone(tz)
|
||||
)
|
||||
return {
|
||||
'id': e.pk,
|
||||
'slug': e.slug,
|
||||
|
||||
Reference in New Issue
Block a user