Coverage for website/sales/views.py: 92.50%
30 statements
« prev ^ index » next coverage.py v7.6.7, created at 2025-08-14 10:31 +0000
« prev ^ index » next coverage.py v7.6.7, created at 2025-08-14 10:31 +0000
1from django.contrib import messages
2from django.contrib.auth.decorators import login_required
3from django.shortcuts import get_object_or_404, redirect, render
4from django.utils.decorators import method_decorator
5from django.utils.translation import gettext_lazy as _
6from django.views import View
8from sales import services
9from sales.models.order import Order
12@method_decorator(login_required, name="dispatch")
13class OrderPaymentView(View):
14 def get(self, request, *args, **kwargs):
15 order = get_object_or_404(Order, pk=kwargs["pk"])
16 if order.payment:
17 messages.warning(request, _("This order was already paid for."))
18 return redirect("index")
19 if order.payer is not None and order.payer != request.member:
20 messages.warning(request, _("This order is not yours."))
21 return redirect("index")
23 order.payer = request.member
24 order.save()
26 if order.age_restricted and not services.is_adult(request.member):
27 messages.error(
28 request,
29 _(
30 "The age restrictions on this order do not allow you to pay for this order."
31 ),
32 )
33 return redirect("index")
35 if ( 35 ↛ 40line 35 didn't jump to line 40
36 order.age_restricted
37 and services.is_adult(request.member)
38 and order.total_amount == 0
39 ):
40 messages.success(
41 request, _("You have successfully identified yourself for this order.")
42 )
43 return redirect("index")
45 if order.total_amount == 0:
46 messages.info(request, _("This order doesn't require payment."))
47 return redirect("index")
49 return render(request, "sales/order_payment.html", {"order": order})