mirror of
https://github.com/pretix/pretix.git
synced 2026-05-05 15:14:04 +00:00
* Checking for the last date in the event series before deleting a date. Last date in a event series should never be delted. * Adding check to ensure that last date in a event series is not deleted. Editing unit test around deleting subevent to assert on alert-danger * Increasing the scope of test_delete. We are now creating 2 subevents and testing deleting one and ensuring that the last one is not deleted * Fixing alert text. Removing a redundant if condition for checking subevent count * Adding assert for second event to ensure its not deleted * Minor fixes and rebase
This commit is contained in:
committed by
Raphael Michel
parent
50575d45c1
commit
dd42037f21
@@ -639,6 +639,9 @@ class SubEvent(EventMixin, LoggedModel):
|
||||
data.update({v.property.name: v.value for v in self.meta_values.select_related('property').all()})
|
||||
return data
|
||||
|
||||
def allow_delete(self):
|
||||
return self.event.subevents.count() > 1
|
||||
|
||||
def delete(self, *args, **kwargs):
|
||||
super().delete(*args, **kwargs)
|
||||
if self.event:
|
||||
|
||||
@@ -101,10 +101,13 @@ class SubEventDelete(EventPermissionRequiredMixin, DeleteView):
|
||||
self.object = self.get_object()
|
||||
success_url = self.get_success_url()
|
||||
|
||||
if self.get_object().orderposition_set.count() > 0:
|
||||
if self.object.orderposition_set.count() > 0:
|
||||
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 pytz import timezone
|
||||
from tests.base import SoupTest, extract_form_fields
|
||||
|
||||
from pretix.base.models import (
|
||||
Event, Order, OrderPosition, Organizer, Team, User,
|
||||
Event, Order, OrderPosition, Organizer, SubEvent, Team, User,
|
||||
)
|
||||
from pretix.base.models.items import SubEventItem
|
||||
from pretix.testutils.mock import mocker_context
|
||||
@@ -594,6 +594,7 @@ class SubEventsTest(SoupTest):
|
||||
self.client.login(email='dummy@dummy.dummy', password='dummy')
|
||||
|
||||
self.subevent1 = self.event1.subevents.create(name='SE1', date_from=now())
|
||||
self.subevent2 = self.event1.subevents.create(name='SE2', date_from=now())
|
||||
|
||||
def test_list(self):
|
||||
doc = self.get_doc('/control/event/ccc/30c3/subevents/')
|
||||
@@ -699,7 +700,11 @@ class SubEventsTest(SoupTest):
|
||||
assert doc.select("button")
|
||||
doc = self.post_doc('/control/event/ccc/30c3/subevents/%d/delete' % self.subevent1.pk, {})
|
||||
assert doc.select(".alert-success")
|
||||
assert not SubEventItem.objects.filter(pk=self.subevent1.pk).exists()
|
||||
# deleting the second event
|
||||
doc = self.post_doc('/control/event/ccc/30c3/subevents/%d/delete' % self.subevent2.pk, {})
|
||||
assert doc.select(".alert-danger")
|
||||
assert SubEvent.objects.filter(pk=self.subevent2.pk).exists()
|
||||
assert not SubEvent.objects.filter(pk=self.subevent1.pk).exists()
|
||||
|
||||
def test_delete_with_orders(self):
|
||||
o = Order.objects.create(
|
||||
|
||||
Reference in New Issue
Block a user