diff --git a/src/backoffice/templates/tickets/scan.html b/src/backoffice/templates/info_desk/scan.html similarity index 68% rename from src/backoffice/templates/tickets/scan.html rename to src/backoffice/templates/info_desk/scan.html index 692d74a4..628d2629 100644 --- a/src/backoffice/templates/tickets/scan.html +++ b/src/backoffice/templates/info_desk/scan.html @@ -27,7 +27,6 @@ {% if ticket %} -
@@ -110,7 +109,61 @@ {% endif %} +
+ + {% csrf_token %} + + + + + + +{% if view.order_search %} + + {% if order %} + +

Order #{{ order.id }}

+ +
+ + + +
+ Total + + {{ order.total }} DKK +
+ Paid? + + {{ order.paid }} + +
+ Payment type + + {{ order.get_payment_method_display }} + +
+ + {% if not order.paid and order.payment_method == order.CASH %} +
+ {% csrf_token %} + +
+ {% endif %} + + {% else %} + + Order not found... + + {% endif %} + + Clear + +{% endif %} diff --git a/src/backoffice/urls.py b/src/backoffice/urls.py index 86a4d1a5..dd6fefd5 100644 --- a/src/backoffice/urls.py +++ b/src/backoffice/urls.py @@ -7,9 +7,11 @@ app_name = "backoffice" urlpatterns = [ path("", BackofficeIndexView.as_view(), name="index"), # infodesk - path( - "tickets/", include([path("", ScanTicketsView.as_view(), name="scan_tickets")]) - ), + path("infodesk/", include( + [ + path("", ScanTicketsView.as_view(), name="scan_tickets"), + ] + )), path("product_handout/", ProductHandoutView.as_view(), name="product_handout"), path("badge_handout/", BadgeHandoutView.as_view(), name="badge_handout"), path("ticket_checkin/", TicketCheckinView.as_view(), name="ticket_checkin"), diff --git a/src/backoffice/views.py b/src/backoffice/views.py index b9817b80..a689a523 100644 --- a/src/backoffice/views.py +++ b/src/backoffice/views.py @@ -2,7 +2,7 @@ import logging, os from itertools import chain import qrcode -from django.contrib.auth.mixins import PermissionRequiredMixin, UserPassesTestMixin +from django.contrib.auth.mixins import PermissionRequiredMixin, UserPassesTestMixin, LoginRequiredMixin from django.contrib.auth.models import User from django.views.generic import TemplateView, ListView, DetailView from django.views.generic.edit import CreateView, UpdateView, DeleteView @@ -565,10 +565,12 @@ def _ticket_getter_by_pk(pk): pass -class ScanTicketsView(TemplateView): - template_name = "tickets/scan.html" +class ScanTicketsView(LoginRequiredMixin, InfoTeamPermissionMixin, CampViewMixin,TemplateView): + template_name = "info_desk/scan.html" ticket = None + order = None + order_search = False def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) @@ -589,6 +591,9 @@ class ScanTicketsView(TemplateView): else: messages.warning(self.request, "Ticket not found!") + elif self.order_search: + context['order'] = self.order + return context def post(self, request, **kwargs): @@ -596,6 +601,15 @@ class ScanTicketsView(TemplateView): self.ticket = self.check_in_ticket(request) elif 'badge_ticket_id' in request.POST: self.ticket = self.hand_out_badge(request) + elif 'find_order_id' in request.POST: + self.order_search = True + try: + order_id = self.request.POST.get('find_order_id') + self.order = Order.objects.get(id=order_id) + except Order.DoesNotExist: + pass + elif 'mark_as_paid' in request.POST: + self.mark_order_as_paid(request) return super().get(request, **kwargs) @@ -614,3 +628,8 @@ class ScanTicketsView(TemplateView): ticket_to_handout_badge_for.save() messages.info(request, "Badge marked as handed out!") return ticket_to_handout_badge_for + + def mark_order_as_paid(self, request): + order = Order.objects.get(id=request.POST.get('mark_as_paid')) + order.mark_as_paid() + messages.success(request, "Order #{} has been marked as paid!".format(order.id))