Fixes error on installer fail 44/71044/3
authorSean Smith <ssmith@iol.unh.edu>
Tue, 8 Sep 2020 19:13:23 +0000 (15:13 -0400)
committerSean Smith <ssmith@iol.unh.edu>
Wed, 24 Mar 2021 20:10:47 +0000 (16:10 -0400)
Signed-off-by: Sean Smith <ssmith@iol.unh.edu>
Change-Id: I823f3c5dd2b7677b428b88e1af4bba78d7dc698c

src/booking/views.py
src/static/js/dashboard.js

index c41a7d6..66cb594 100644 (file)
@@ -63,9 +63,12 @@ def quick_create(request):
                 return redirect(reverse('booking:booking_detail', kwargs={'booking_id': booking.id}))
             except Exception as e:
                 messages.error(request, "Whoops, an error occurred: " + str(e))
+                context.update(drop_filter(request.user))
                 return render(request, 'booking/quick_deploy.html', context)
         else:
             messages.error(request, "Looks like the form didn't validate. Check that you entered everything correctly")
+            context['status'] = 'false'
+            context.update(drop_filter(request.user))
             return render(request, 'booking/quick_deploy.html', context)
 
 
index efc0542..99f6717 100644 (file)
@@ -225,19 +225,35 @@ class MultipleSelectFilterWidget {
     make_selection(initial_data){
         if(!initial_data || jQuery.isEmptyObject(initial_data))
             return;
-        for(let item_class in initial_data) {
-            const selected_items = initial_data[item_class];
-            for( let node_id in selected_items ){
-                const node = this.filter_items[node_id];
-                const selection_data = selected_items[node_id]
-                if( selection_data.selected ) {
-                    this.select(node);
-                    this.markAndSweep(node);
-                    this.updateResult(node);
-                }
-                if(node['multiple']){
-                    this.make_multiple_selection(node, selection_data);
-                }
+
+        // Need to sort through labs first
+        let initial_lab = initial_data['lab'];
+        let initial_resources = initial_data['resource'];
+
+        for( let node_id in initial_lab) { // This should only be length one
+            const node = this.filter_items[node_id];
+            const selection_data = initial_lab[node_id];
+            if( selection_data.selected ) {
+                this.select(node);
+                this.markAndSweep(node);
+                this.updateResult(node);
+            }
+            if(node['multiple']){
+                this.make_multiple_selection(node, selection_data);
+            }
+            this.currentLab = node;
+        }
+
+        for( let node_id in initial_resources){
+            const node = this.filter_items[node_id];
+            const selection_data = initial_resources[node_id];
+            if( selection_data.selected ) {
+                this.select(node);
+                this.markAndSweep(node);
+                this.updateResult(node);
+            }
+            if(node['multiple']){
+                this.make_multiple_selection(node, selection_data);
             }
         }
     }
@@ -338,10 +354,13 @@ class MultipleSelectFilterWidget {
             this.available_resources = JSON.parse(node['available_resources']);
             this.updateAvailibility();
         } else {
-            // a lab is already selected, clear already selected resources 
-            if(confirm('Unselecting a lab will reset all selected resources, are you sure?'))
+            // a lab is already selected, clear already selected resources
+            if(confirm('Unselecting a lab will reset all selected resources, are you sure?')) {
                 location.reload();
+                return false;
+            }
         }
+        return true;
     }
 
     updateAvailibility() {
@@ -357,7 +376,6 @@ class MultipleSelectFilterWidget {
             let quantityDescription;
             let quantityNode;
 
-            // console.log(this.available_resources);
             for(let resource in required_resources) {
                 currCount = Math.floor(this.available_resources[resource] / required_resources[resource]);
                 if(currCount < leastAvailable)
@@ -407,13 +425,17 @@ class MultipleSelectFilterWidget {
     }
 
     processClick(id){
+        let lab_check;
         const node = this.filter_items[id];
         if(!node['selectable'])
             return;
 
         // If they are selecting a lab, update accordingly
-        if (node['class'] == 'lab')
-            this.labCheck(node);
+        if (node['class'] == 'lab') {
+            lab_check = this.labCheck(node);
+            if (!lab_check)
+                return;
+        }
 
         // Can only select a resource if a lab is selected
         if (!this.currentLab) {