Adds ability for staff to extend a user’s reservations

This commit is contained in:
Christopher Neugebauer 2016-10-06 12:44:06 -07:00
parent d31d812001
commit 6dbc303e7c
3 changed files with 25 additions and 0 deletions

View file

@ -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

View file

@ -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$",

View file

@ -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"])