コード例 #1
0
    def test_voucher_reuse(self):
        self.quota.items.add(self.item1)
        v = Voucher.objects.create(quota=self.quota, event=self.event, valid_until=now() + timedelta(days=5))
        self.assertTrue(v.is_active())
        self.assertFalse(v.is_in_cart())
        self.assertFalse(v.is_ordered())

        # use a voucher normally
        cart = CartPosition.objects.create(event=self.event, item=self.item1, price=self.item1.default_price,
                                           expires=now() + timedelta(days=3), voucher=v)
        self.assertTrue(v.is_active())
        self.assertTrue(v.is_in_cart())
        self.assertFalse(v.is_ordered())

        order = perform_order(event=self.event.id, payment_provider='free', positions=[cart.id])
        v.refresh_from_db()
        self.assertFalse(v.is_active())
        self.assertFalse(v.is_in_cart())
        self.assertTrue(v.is_ordered())

        # assert that the voucher cannot be reused
        cart = CartPosition.objects.create(event=self.event, item=self.item1, price=self.item1.default_price,
                                           expires=now() + timedelta(days=3), voucher=v)
        self.assertRaises(OrderError, perform_order, event=self.event.id, payment_provider='free', positions=[cart.id])

        # assert that the voucher can be re-used after cancelling the successful order
        cancel_order(order)
        v.refresh_from_db()
        self.assertTrue(v.is_active())
        self.assertFalse(v.is_in_cart())
        self.assertTrue(v.is_ordered())

        cart = CartPosition.objects.create(event=self.event, item=self.item1, price=self.item1.default_price,
                                           expires=now() + timedelta(days=3), voucher=v)
        perform_order(event=self.event.id, payment_provider='free', positions=[cart.id])
コード例 #2
0
ファイル: test_models.py プロジェクト: cherti/pretix
    def test_voucher_reuse(self):
        self.quota.items.add(self.item1)
        v = Voucher.objects.create(quota=self.quota, event=self.event, valid_until=now() + timedelta(days=5))

        # use a voucher normally
        cart = CartPosition.objects.create(event=self.event, item=self.item1, price=self.item1.default_price,
                                           expires=now() + timedelta(days=3), voucher=v)
        order = perform_order(event=self.event.id, payment_provider='free', positions=[cart.id])

        # assert that the voucher cannot be reused
        cart = CartPosition.objects.create(event=self.event, item=self.item1, price=self.item1.default_price,
                                           expires=now() + timedelta(days=3), voucher=v)
        self.assertRaises(OrderError, perform_order, event=self.event.id, payment_provider='free', positions=[cart.id])

        # assert that the voucher can be re-used after cancelling the successful order
        cancel_order(order)
        cart = CartPosition.objects.create(event=self.event, item=self.item1, price=self.item1.default_price,
                                           expires=now() + timedelta(days=3), voucher=v)
        perform_order(event=self.event.id, payment_provider='free', positions=[cart.id])
コード例 #3
0
ファイル: checkout.py プロジェクト: abrock/pretix
 def perform_order(self, request: HttpRequest):
     try:
         order = perform_order(self.request.event, self.request.user, self.payment_provider, self.positions)
     except OrderError as e:
         messages.error(request, str(e))
         return redirect(self.get_confirm_url())
     else:
         messages.success(request, _('Your order has been placed.'))
         resp = self.payment_provider.payment_perform(request, order)
         return redirect(resp or self.get_order_url(order))
コード例 #4
0
ファイル: checkout.py プロジェクト: akuks/pretix
 def perform_order(self, request: HttpRequest):
     try:
         order = perform_order(self.request.event, self.payment_provider, self.positions,
                               user=request.user if request.user.is_authenticated() else None,
                               email=request.session.get('guest_email', None),
                               locale=translation.get_language())
     except OrderError as e:
         messages.error(request, str(e))
         return redirect(self.get_confirm_url())
     else:
         # Message is delivered via GET parameter
         # messages.success(request, _('Your order has been placed.'))
         resp = self.payment_provider.payment_perform(request, order)
         return redirect(resp or self.get_order_url(order, not request.user.is_authenticated()))