示例#1
0
文件: views.py 项目: webkom/lego
    def payment(self, request, *args, **kwargs):
        event_id = self.kwargs.get("pk", None)
        event = Event.objects.get(id=event_id)
        registration = event.get_registration(request.user)

        if not event.is_priced or not event.use_stripe:
            raise APIEventNotPriced()

        if registration is None or not registration.can_pay:
            raise APIPaymentDenied()

        if registration.has_paid():
            raise APIPaymentExists()

        if registration.payment_intent_id is None:
            # If the payment_intent was not created when registering
            chain(
                async_initiate_payment.s(registration.id),
                save_and_notify_payment.s(registration.id),
            ).delay()
        else:
            async_retrieve_payment.delay(registration.id)

        payment_serializer = RegistrationPaymentReadSerializer(
            registration, context={"request": request})

        response_data = payment_serializer.data

        return Response(data=response_data, status=status.HTTP_202_ACCEPTED)
示例#2
0
 def get_registrations(self, obj):
     queryset = obj.registrations.all()
     if obj.event.is_priced:
         return RegistrationPaymentReadSerializer(queryset,
                                                  context=self.context,
                                                  many=True).data
     return RegistrationReadSerializer(queryset,
                                       context=self.context,
                                       many=True).data
示例#3
0
文件: views.py 项目: vhellem/lego
    def payment(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        event_id = self.kwargs.get('pk', None)
        event = Event.objects.get(id=event_id)
        registration = event.get_registration(request.user)

        if not event.is_priced or not event.use_stripe:
            raise PermissionDenied()

        if registration.has_paid():
            raise APIPaymentExists()
        registration.charge_status = constants.PAYMENT_PENDING
        registration.save()
        chain(
            async_payment.s(registration.id, serializer.data['token']),
            registration_payment_save.s(registration.id)
        ).delay()
        payment_serializer = RegistrationPaymentReadSerializer(
            registration, context={'request': request}
        )
        return Response(data=payment_serializer.data, status=status.HTTP_202_ACCEPTED)
示例#4
0
文件: sockets.py 项目: webkom/lego
class RegistrationPaymentReadSocketSerializer(WebsocketSerializer):
    payload = RegistrationPaymentReadSerializer()