Refs #634 -- Re-allow deleting the last subevent and fix UI crashes

This commit is contained in:
Raphael Michel
2018-04-13 10:14:54 +02:00
parent fd9f521c60
commit b2721db8e0
4 changed files with 20 additions and 17 deletions

View File

@@ -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))

View File

@@ -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()

View File

@@ -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,