From 6dbc303e7c380cf5aecc70ffa2498d90cc1aa4d4 2016-10-06 19:44:06 From: Christopher Neugebauer Date: 2016-10-06 19:44:06 Subject: [PATCH] Adds ability for staff to extend a user’s reservations --- diff --git a/registrasion/reporting/views.py b/registrasion/reporting/views.py index d5ba66a3b6f52868734d71e241493fc572ccd697..2c1c8a868aa1cdfff1e0b1b7ce491f60a6dc4c1a 100644 --- a/registrasion/reporting/views.py +++ b/registrasion/reporting/views.py @@ -15,6 +15,7 @@ from django.db.models import Case, When, Value from django.db.models.fields.related import RelatedField from django.shortcuts import render +from registrasion.controllers.cart import CartController from registrasion.controllers.item import ItemController from registrasion.models import commerce from registrasion.models import people @@ -417,6 +418,10 @@ def attendee(request, form, user_id=None): value = getattr(profile, field.name) profile_data.append((field.verbose_name, value)) + cart = CartController.for_user(attendee.user) + reservation = cart.cart.reservation_duration + cart.cart.time_last_updated + profile_data.append(("Current cart reserved until", reservation)) + reports.append(ListReport("Profile", ["", ""], profile_data)) links = [] @@ -424,6 +429,11 @@ def attendee(request, form, user_id=None): reverse(views.amend_registration, args=[user_id]), "Amend current cart", )) + links.append(( + reverse(views.extend_reservation, args=[user_id]), + "Extend reservation", + )) + reports.append(Links("Actions for " + name, links)) # Paid and pending products diff --git a/registrasion/urls.py b/registrasion/urls.py index c7f008d0c2954a23ecccdf28e0100b02b6ebaa51..05b10aab8d0cac7ee5aec74ffcb06d072ec62afe 100644 --- a/registrasion/urls.py +++ b/registrasion/urls.py @@ -8,6 +8,7 @@ from .views import ( checkout, credit_note, edit_profile, + extend_reservation, guided_registration, invoice, invoice_access, @@ -24,6 +25,7 @@ public = [ url(r"^checkout$", checkout, name="checkout"), url(r"^checkout/([0-9]+)$", checkout, name="checkout"), url(r"^credit_note/([0-9]+)$", credit_note, name="credit_note"), + url(r"^extend/([0-9]+)$", extend_reservation, name="extend_reservation"), url(r"^invoice/([0-9]+)$", invoice, name="invoice"), url(r"^invoice/([0-9]+)/([A-Z0-9]+)$", invoice, name="invoice"), url(r"^invoice/([0-9]+)/manual_payment$", diff --git a/registrasion/views.py b/registrasion/views.py index 724c2aae49d7b4c0f8d9be3f894c00883ccb7447..8b0d2b5de587f86396d02b168039f674a83684f4 100644 --- a/registrasion/views.py +++ b/registrasion/views.py @@ -1,3 +1,4 @@ +import datetime import sys import util @@ -903,3 +904,15 @@ def amend_registration(request, user_id): } return render(request, "registrasion/amend_registration.html", data) + + +@user_passes_test(_staff_only) +def extend_reservation(request, user_id, days=7): + ''' Allows staff to extend the reservation on a given user's cart. + ''' + + user = User.objects.get(id=int(user_id)) + cart = CartController.for_user(user) + cart.extend_reservation(datetime.timedelta(days=days)) + + return redirect(request.META["HTTP_REFERER"])