def destroy(self, request, pk=None, **kwargs): registration = self.get_object() try: services.cancel_registration(registration.member, registration.event) return Response(status=204) except RegistrationError as e: raise PermissionDenied(detail=e) from e
def post(self, request, *args, **kwargs): event = get_object_or_404(Event, pk=kwargs["pk"]) try: services.cancel_registration(request.member, event) messages.success(request, _("Registration successfully cancelled.")) except RegistrationError as e: messages.error(request, e) return redirect(event)
def test_cancel_registration( self, perms_mock, notify_first_mock, notify_organiser_mock ): self.event.registration_start = timezone.now() - timedelta(hours=2) self.event.registration_end = timezone.now() + timedelta(hours=1) self.event.max_participants = 1 self.event.save() perms_mock.return_value = { "create_registration": False, "cancel_registration": False, "update_registration": False, } with self.assertRaises(RegistrationError): services.cancel_registration(self.member, self.event) registration = EventRegistration.objects.create( event=self.event, member=self.member, ) with self.assertRaises(RegistrationError): services.cancel_registration(self.member, self.event) perms_mock.return_value["cancel_registration"] = True services.cancel_registration(self.member, self.event) notify_first_mock.assert_called_once_with(self.event) self.event.send_cancel_email = True self.event.save() services.cancel_registration(self.member, self.event) self.event.cancel_deadline = timezone.make_aware(datetime(2017, 1, 1)) self.event.save() services.cancel_registration(self.member, self.event) notify_organiser_mock.assert_called_once_with(self.event, registration) registration.refresh_from_db() self.assertIsNotNone(registration.date_cancelled) registration.date_cancelled = None registration.save() EventRegistration.objects.create( event=self.event, member=Member.objects.filter(username="******").first(), date=timezone.make_aware(datetime(2017, 9, 1)), ) services.cancel_registration(self.member, self.event)