Ejemplo n.º 1
0
 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
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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)