manager: do not delete used check types (#63847)
This commit is contained in:
parent
4b842886b0
commit
75044ae4f2
|
@ -715,6 +715,19 @@ class CheckTypeGroupDeleteView(DeleteView):
|
|||
raise PermissionDenied()
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
context['cannot_delete'] = Booking.objects.filter(user_check_type__group=self.get_object()).exists()
|
||||
context['cannot_delete_msg'] = _(
|
||||
'Can not delete this check type group: a check type of this group is set on some existing bookings.'
|
||||
)
|
||||
return context
|
||||
|
||||
def delete(self, request, *args, **kwargs):
|
||||
if Booking.objects.filter(user_check_type__group=self.get_object()).exists():
|
||||
raise Http404
|
||||
return super().delete(request, *args, **kwargs)
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse('chrono-manager-check-type-list')
|
||||
|
||||
|
@ -803,6 +816,19 @@ class CheckTypeDeleteView(DeleteView):
|
|||
def get_queryset(self):
|
||||
return CheckType.objects.filter(group=self.group_pk)
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
context['cannot_delete'] = Booking.objects.filter(user_check_type=self.get_object()).exists()
|
||||
context['cannot_delete_msg'] = _(
|
||||
'Can not delete this check type: it is set on some existing bookings.'
|
||||
)
|
||||
return context
|
||||
|
||||
def delete(self, request, *args, **kwargs):
|
||||
if Booking.objects.filter(user_check_type=self.get_object()).exists():
|
||||
raise Http404
|
||||
return super().delete(request, *args, **kwargs)
|
||||
|
||||
def get_success_url(self):
|
||||
return reverse('chrono-manager-check-type-list')
|
||||
|
||||
|
|
|
@ -71,6 +71,9 @@ def test_edit_group_as_manager(app, manager_user, agenda_with_restrictions):
|
|||
def test_delete_group(app, admin_user):
|
||||
group = CheckTypeGroup.objects.create(label='Foo bar')
|
||||
CheckType.objects.create(label='Foo reason', group=group)
|
||||
agenda = Agenda.objects.create(label='Foo bar')
|
||||
event = Event.objects.create(agenda=agenda, start_datetime=now(), places=10)
|
||||
Booking.objects.create(event=event)
|
||||
|
||||
app = login(app)
|
||||
resp = app.get('/manage/check-types/')
|
||||
|
@ -80,6 +83,17 @@ def test_delete_group(app, admin_user):
|
|||
assert CheckTypeGroup.objects.exists() is False
|
||||
assert CheckType.objects.exists() is False
|
||||
|
||||
# check_type is used
|
||||
group = CheckTypeGroup.objects.create(label='Foo bar')
|
||||
check_type = CheckType.objects.create(label='Foo reason', group=group)
|
||||
Booking.objects.update(user_check_type=check_type)
|
||||
resp = app.get('/manage/check-type/group/%s/delete/' % group.pk)
|
||||
assert (
|
||||
'Can not delete this check type group: a check type of this group is set on some existing bookings.'
|
||||
in resp
|
||||
)
|
||||
resp.form.submit(status=404)
|
||||
|
||||
|
||||
def test_delete_group_as_manager(app, manager_user, agenda_with_restrictions):
|
||||
group = CheckTypeGroup.objects.create(label='Foo bar')
|
||||
|
@ -230,6 +244,9 @@ def test_edit_check_type_pricing(settings, app, admin_user):
|
|||
def test_delete_check_type(app, admin_user):
|
||||
group = CheckTypeGroup.objects.create(label='Foo bar')
|
||||
check_type = CheckType.objects.create(label='Foo reason', group=group)
|
||||
agenda = Agenda.objects.create(label='Foo bar')
|
||||
event = Event.objects.create(agenda=agenda, start_datetime=now(), places=10)
|
||||
Booking.objects.create(event=event)
|
||||
|
||||
app = login(app)
|
||||
resp = app.get('/manage/check-types/')
|
||||
|
@ -239,6 +256,13 @@ def test_delete_check_type(app, admin_user):
|
|||
assert CheckTypeGroup.objects.exists() is True
|
||||
assert CheckType.objects.exists() is False
|
||||
|
||||
# check_type is used
|
||||
check_type = CheckType.objects.create(label='Foo reason', group=group)
|
||||
Booking.objects.update(user_check_type=check_type)
|
||||
resp = app.get('/manage/check-type/group/%s/%s/delete/' % (group.pk, check_type.pk))
|
||||
assert 'Can not delete this check type: it is set on some existing bookings.' in resp
|
||||
resp.form.submit(status=404)
|
||||
|
||||
group2 = CheckTypeGroup.objects.create(label='Foo bar baz')
|
||||
app.get('/manage/check-type/group/%s/%s/delete/' % (group2.pk, check_type.pk), status=404)
|
||||
|
||||
|
|
Loading…
Reference in New Issue