Esempio n. 1
0
File: views.py Progetto: mklarz/lego
    def admin_unregister(self, request, *args, **kwargs):
        admin_user = request.user
        event_id = self.kwargs.get("event_pk", None)
        event = Event.objects.get(id=event_id)
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        try:
            registration = event.admin_unregister(
                admin_user=admin_user, **serializer.validated_data
            )
            if (
                registration.payment_intent_id
                and registration.payment_status != constants.PAYMENT_SUCCESS
            ):
                async_cancel_payment.delay(registration.id)
            notify_event_registration(
                constants.SOCKET_UNREGISTRATION_SUCCESS, registration
            )
        except NoSuchRegistration:
            raise APINoSuchRegistration()
        except RegistrationExists:
            raise APIRegistrationExists()
        reg_data = RegistrationReadDetailedSerializer(registration).data

        return Response(data=reg_data, status=status.HTTP_200_OK)
Esempio n. 2
0
File: tasks.py Progetto: webkom/lego
def async_register(self, registration_id, logger_context=None):
    self.setup_logger(logger_context)

    self.registration = Registration.objects.get(id=registration_id)
    try:
        with transaction.atomic():
            self.registration.event.register(self.registration)
            transaction.on_commit(
                lambda: notify_event_registration(
                    constants.SOCKET_REGISTRATION_SUCCESS, self.registration
                )
            )
        log.info("registration_success", registration_id=self.registration.id)
        if self.registration.can_pay:
            chain(
                async_initiate_payment.s(registration_id),
                save_and_notify_payment.s(registration_id),
            ).delay()

    except EventHasClosed as e:
        log.warn(
            "registration_tried_after_started",
            exception=e,
            registration_id=self.registration.id,
        )
    except (ValueError, IntegrityError) as e:
        log.error(
            "registration_error", exception=e, registration_id=self.registration.id
        )
        raise self.retry(exc=e, max_retries=3)
Esempio n. 3
0
def async_unregister(self, registration_id, logger_context=None):
    self.setup_logger(logger_context)

    registration = Registration.objects.get(id=registration_id)
    pool_id = registration.pool_id
    try:
        with transaction.atomic():
            registration.event.unregister(registration)
            activation_time = registration.event.get_earliest_registration_time(
                registration.user
            )
            transaction.on_commit(
                lambda: notify_event_registration(
                    constants.SOCKET_UNREGISTRATION_SUCCESS,
                    registration,
                    from_pool=pool_id,
                    activation_time=activation_time,
                )
            )
        log.info("unregistration_success", registration_id=registration.id)
    except EventHasClosed as e:
        log.warn(
            "unregistration_tried_after_started",
            exception=e,
            registration_id=registration.id,
        )
    except IntegrityError as e:
        log.error("unregistration_error", exception=e, registration_id=registration.id)
        registration.status = constants.FAILURE_UNREGISTER
        registration.save()
        notify_user_registration(
            constants.SOCKET_UNREGISTRATION_FAILURE,
            registration,
            error_message="Avregistrering feilet",
        )
Esempio n. 4
0
File: views.py Progetto: webkom/lego
 def admin_register(self, request, *args, **kwargs):
     admin_user = request.user
     event_id = self.kwargs.get("event_pk", None)
     try:
         event = Event.objects.get(id=event_id)
     except Event.DoesNotExist:
         raise APIEventNotFound()
     serializer = self.get_serializer(data=request.data)
     serializer.is_valid(raise_exception=True)
     try:
         registration = event.admin_register(admin_user=admin_user,
                                             **serializer.validated_data)
         notify_event_registration(constants.SOCKET_REGISTRATION_SUCCESS,
                                   registration)
     except NoSuchPool:
         raise APINoSuchPool()
     except RegistrationExists:
         raise APIRegistrationExists()
     reg_data = RegistrationReadDetailedSerializer(registration).data
     return Response(data=reg_data, status=status.HTTP_201_CREATED)
Esempio n. 5
0
def async_register(self, registration_id, logger_context=None):
    self.setup_logger(logger_context)

    self.registration = Registration.objects.get(id=registration_id)
    try:
        with transaction.atomic():
            self.registration.event.register(self.registration)
            transaction.on_commit(lambda: notify_event_registration(
                constants.SOCKET_REGISTRATION_SUCCESS, self.registration))
        log.info('registration_success', registration_id=self.registration.id)
    except EventHasClosed as e:
        log.warn('registration_tried_after_started',
                 exception=e,
                 registration_id=self.registration.id)
    except (ValueError, IntegrityError) as e:
        log.error('registration_error',
                  exception=e,
                  registration_id=self.registration.id)
        raise self.retry(exc=e, max_retries=3)