summaryrefslogtreecommitdiffstats
path: root/dashboard/src/booking
diff options
context:
space:
mode:
authorSawyer Bergeron <sbergeron@iol.unh.edu>2019-04-08 13:17:45 -0400
committerSawyer Bergeron <sbergeron@iol.unh.edu>2019-04-16 12:51:41 -0400
commit2256207ce42d9314ea50c9286e0db37098834530 (patch)
treebdc1104b34a94971c8193af989ee94d2a3047544 /dashboard/src/booking
parent9c8ccc26cfbaae98e9ada79a9e26c64a576e71d4 (diff)
Limit total number of active bookings per user
Change-Id: I4f79e3225f423274de3d2da912a080521447b185 Signed-off-by: Sawyer Bergeron <sbergeron@iol.unh.edu>
Diffstat (limited to 'dashboard/src/booking')
-rw-r--r--dashboard/src/booking/quick_deployer.py8
1 files changed, 8 insertions, 0 deletions
diff --git a/dashboard/src/booking/quick_deployer.py b/dashboard/src/booking/quick_deployer.py
index f076a2e..7059313 100644
--- a/dashboard/src/booking/quick_deployer.py
+++ b/dashboard/src/booking/quick_deployer.py
@@ -90,6 +90,10 @@ class NoRemainingPublicNetwork(Exception):
pass
+class BookingPermissionException(Exception):
+ pass
+
+
def parse_host_field(host_field_contents):
host_json = json.loads(host_field_contents)
lab_dict = host_json['labs'][0]
@@ -246,6 +250,10 @@ def create_from_form(form, request):
data['host_profile'] = host_profile
check_invariants(request, **data)
+ # check booking privileges
+ if Booking.objects.filter(owner=request.user, end__gt=timezone.now()).count() >= 3 and not request.user.userprofile.booking_privledge:
+ raise BookingPermissionException("You do not have permission to have more than 3 bookings at a time.")
+
check_available_matching_host(lab, host_profile) # requires cleanup if failure after this point
grbundle = generate_grb(request.user, lab, quick_booking_id)