From 2256207ce42d9314ea50c9286e0db37098834530 Mon Sep 17 00:00:00 2001 From: Sawyer Bergeron Date: Mon, 8 Apr 2019 13:17:45 -0400 Subject: Limit total number of active bookings per user Change-Id: I4f79e3225f423274de3d2da912a080521447b185 Signed-off-by: Sawyer Bergeron --- dashboard/src/booking/quick_deployer.py | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'dashboard/src/booking/quick_deployer.py') 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) -- cgit 1.2.3-korg