Ejemplo n.º 1
0
    def create(self, request, *args, **kwargs):
        if request.user.is_staff:
            serializer = CoworkingSpaceSubscriptionAdminCreateSerializer(
                data=request.data)
            serializer.is_valid(raise_exception=True)
            self.perform_create(serializer)
            headers = self.get_success_headers(serializer.data)
            return Response(serializer.data,
                            status=status.HTTP_201_CREATED,
                            headers=headers)

        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        # Payment
        package = serializer.validated_data['package']
        payment = Payment.pay(serializer.validated_data['card_token'],
                              package.price)
        if payment is None:
            return Response({"error": "Cannot make payment."},
                            status=status.HTTP_402_PAYMENT_REQUIRED)
        # Date
        date_start = timezone.localdate()
        query = CoworkingSpaceSubscription.objects.filter(
            user=request.user, is_canceled=False, date_end__gte=date_start)
        if query.exists():
            date_start = query.latest('date_end').date_end + timedelta(days=1)
        serializer.save(date_start=date_start,
                        date_end=date_start +
                        timedelta(days=package.duration - 1),
                        payment=payment,
                        user=request.user)
        headers = self.get_success_headers(serializer.data)
        return Response(serializer.data,
                        status=status.HTTP_201_CREATED,
                        headers=headers)
Ejemplo n.º 2
0
def book(request, id):
    book = Book.objects.get(pk=id)
    if not request.user.has_perm('shop.view_book') and book.id == 5:
        pass
    p = Payment(amount=1000, user=request.user, description="Blah Blah")
    p.save()
    return p.pay()

    context = {
        'book': book,
    }
    return render(request, 'shop/book.html', context)
    def create(self, request, *args, **kwargs):
        if request.user.is_staff:
            serializer = MeetingRoomBookingAdminCreateSerializer(
                data=request.data)
            serializer.is_valid(raise_exception=True)
            self.perform_create(serializer)
            headers = self.get_success_headers(serializer.data)
            return Response(serializer.data,
                            status=status.HTTP_201_CREATED,
                            headers=headers)

        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        # Date
        room_type = serializer.validated_data['room_type']
        date_start = serializer.validated_data['date_start']
        date_end = serializer.validated_data['date_end']
        room = MeetingRoom.objects.filter(
            type=room_type, is_active=True).exclude(
                meetingroombooking__date_end__gt=date_start,
                meetingroombooking__date_start__lt=date_end,
                meetingroombooking__is_canceled=False).first()
        if room is None:
            return Response({"room_type": "Not available."},
                            status=status.HTTP_400_BAD_REQUEST)
        # Payment
        room_type = serializer.validated_data['room_type']
        payment = Payment.pay(
            serializer.validated_data['card_token'],
            room_type.price * round((date_end - date_start).seconds / 3600))
        if payment is None:
            return Response({"error": "Cannot make payment."},
                            status=status.HTTP_402_PAYMENT_REQUIRED)
        # Save
        serializer.save(room=room, payment=payment, user=request.user)
        headers = self.get_success_headers(serializer.data)
        return Response(serializer.data,
                        status=status.HTTP_201_CREATED,
                        headers=headers)