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)
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)
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", )
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)
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)