Merge branch 'onelab' of ssh://git.onelab.eu/git/myslice into fibre
authorLoic Baron <loic.baron@lip6.fr>
Wed, 23 Jul 2014 16:13:01 +0000 (13:13 -0300)
committerLoic Baron <loic.baron@lip6.fr>
Wed, 23 Jul 2014 16:13:01 +0000 (13:13 -0300)
Conflicts:
portal/registrationview.py
portal/slicerequestview.py
ui/topmenu.py

plugins/filter_status/templates/filter_status.html
plugins/scheduler2/static/js/scheduler2.js
plugins/testbeds/templates/testbeds.html
portal/sliceresourceview.py
portal/templates/onelab/onelab_management-tab-about.html
portal/templates/slice-tab-users-view.html
ui/topmenu.py

index 498c149..654d280 100644 (file)
@@ -3,7 +3,7 @@
   
   <a href="#" 
      class="list-group-item sl-resources active" 
-     style='display: inline-block !important;' 
+     style='display: inline-block !important; font-size: inherit;
      id="{{ domid }}__all" 
      data-status="all"
         title="View resources that are available to be reserved."
@@ -13,7 +13,7 @@
   
   <a href="#"
      class="list-group-item sl-resources" 
-     style='display: inline-block !important;' 
+     style='display: inline-block !important; font-size: inherit;
      id="{{ domid }}__reserved" 
      data-status="reserved"
      title="View resources that you have previously reserved for the slice."
@@ -22,7 +22,7 @@
   </a>
   
   <a href="#" class="list-group-item sl-resources"
-     style='display: inline-block !important;' 
+     style='display: inline-block !important; font-size: inherit;
      id="{{ domid }}__unconfigured" 
      data-status="unconfigured"
      title="View resources that you have selected to add to your slice, that require configuration before they can be reserved. Hover you mouse over the symbol next to the checkbox for more details."
@@ -32,7 +32,7 @@
   </a>
   
   <a href="#" class="list-group-item sl-resources" 
-     style='display: inline-block !important;' 
+     style='display: inline-block !important; font-size: inherit;
      id="{{ domid }}__pending" 
      data-status="pending"
      title="View pending changes to your slice: resources that you have selected to add, and resources that you have selected to remove. Click on the Apply button to apply those changes, or on the Cancel button to cancel them."
index 293324e..04665c6 100755 (executable)
@@ -232,13 +232,15 @@ var SCHEDULER_COLWIDTH = 50;
 \r
         $scope.select = function(index, model_lease, model_resource)\r
         {\r
-            var data;\r
+            var data, resource_granularity;\r
+\r
+            //resource_granularity = model_resource.granularity === undefined ? RESOURCE_DEFAULT_GRANULARITY : model_resource.granularity;\r
 \r
             console.log("Selected", index, model_lease, model_resource);\r
 \r
             var day_timestamp = SchedulerDateSelected.getTime() / 1000;\r
-            var start_time = day_timestamp + index       * model_resource.granularity;\r
-            var end_time   = day_timestamp + (index + 1) * model_resource.granularity;\r
+            var start_time = day_timestamp + index       * model_resource.granularity; // XXX resource_granularity\r
+            var end_time   = day_timestamp + (index + 1) * model_resource.granularity; //\r
             var start_date = new Date(start_time * 1000);\r
             var end_date   = new Date(end_time   * 1000);\r
 \r
@@ -576,7 +578,9 @@ var SCHEDULER_COLWIDTH = 50;
                     var resource = jQuery.extend(true, {}, record);\r
 \r
                     // Fix granularity\r
-                    resource.granularity = typeof(resource.granularity) == "number" ? resource.granularity : RESOURCE_DEFAULT_GRANULARITY;\r
+                    //resource_granularity = ((resource.granularity === undefined) || (typeof(resource.granularity) != "number")) ? RESOURCE_DEFAULT_GRANULARITY : resource.granularity;\r
+                    if (typeof(resource.granularity) != "number")\r
+                        resource.granularity = RESOURCE_DEFAULT_GRANULARITY;\r
                     resource.leases = []; // a list of occupied timeslots\r
 \r
                     self.scope_resources_by_key[resource['urn']] = resource;\r
@@ -735,53 +739,53 @@ var SCHEDULER_COLWIDTH = 50;
                     /* Limit the display to the current day */\r
                     id_end = this._all_slots.length / colspan_lease\r
                 }\r
+                lease_status = manifold.query_store.get_record_state(this.options.query_lease_uuid, lease_key, STATE_SET);\r
+                // the same slots might be affected multiple times.\r
+                // PENDING_IN + PENDING_OUT => IN \r
+                //\r
+                // RESERVED vs SELECTED !\r
+                //\r
+                // PENDING !!\r
+                switch(lease_status) {\r
+                    case STATE_SET_IN:\r
+                        lease_class = 'selected'; // my leases\r
+                        lease_success = '';\r
+                        break;\r
+                    case STATE_SET_IN_SUCCESS:\r
+                        lease_class = 'selected'; // my leases\r
+                        lease_success = 'success';\r
+                    case STATE_SET_OUT_FAILURE:\r
+                        lease_class = 'selected'; // my leases\r
+                        lease_success = 'failure';\r
+                        break;\r
+                    case STATE_SET_OUT:\r
+                        lease_class = 'reserved'; // other leases\r
+                        lease_success = '';\r
+                        break;\r
+                    case STATE_SET_OUT_SUCCESS:\r
+                        lease_class = 'free'; // other leases\r
+                        lease_success = 'success';\r
+                        break;\r
+                    case STATE_SET_IN_FAILURE:\r
+                        lease_class = 'free'; // other leases\r
+                        lease_success = 'failure';\r
+                        break;\r
+                    case STATE_SET_IN_PENDING:\r
+                        lease_class = 'pendingin';\r
+                        lease_success = '';\r
+                        break;\r
+                    case STATE_SET_OUT_PENDING:\r
+                        // pending_in & pending_out == IN == replacement\r
+                        if (resource.leases[i].status == 'pendingin')\r
+                            lease_class = 'pendingin'\r
+                        else\r
+                            lease_class = 'pendingout';\r
+                        lease_success = '';\r
+                        break;\r
+                \r
+                }\r
 \r
                 for (i = id_start; i < id_end; i++) {\r
-                    // the same slots might be affected multiple times.\r
-                    // PENDING_IN + PENDING_OUT => IN \r
-                    //\r
-                    // RESERVED vs SELECTED !\r
-                    //\r
-                    // PENDING !!\r
-                    lease_status = manifold.query_store.get_record_state(this.options.query_lease_uuid, lease_key, STATE_SET);\r
-                    switch(lease_status) {\r
-                        case STATE_SET_IN:\r
-                            lease_class = 'selected'; // my leases\r
-                            lease_success = '';\r
-                            break;\r
-                        case STATE_SET_IN_SUCCESS:\r
-                            lease_class = 'selected'; // my leases\r
-                            lease_success = 'success';\r
-                        case STATE_SET_OUT_FAILURE:\r
-                            lease_class = 'selected'; // my leases\r
-                            lease_success = 'failure';\r
-                            break;\r
-                        case STATE_SET_OUT:\r
-                            lease_class = 'reserved'; // other leases\r
-                            lease_success = '';\r
-                            break;\r
-                        case STATE_SET_OUT_SUCCESS:\r
-                            lease_class = 'free'; // other leases\r
-                            lease_success = 'success';\r
-                            break;\r
-                        case STATE_SET_IN_FAILURE:\r
-                            lease_class = 'free'; // other leases\r
-                            lease_success = 'failure';\r
-                            break;\r
-                        case STATE_SET_IN_PENDING:\r
-                            lease_class = 'pendingin';\r
-                            lease_success = '';\r
-                            break;\r
-                        case STATE_SET_OUT_PENDING:\r
-                            // pending_in & pending_out == IN == replacement\r
-                            if (resource.leases[i].status == 'pendingin')\r
-                                lease_class = 'pendingin'\r
-                            else\r
-                                lease_class = 'pendingout';\r
-                            lease_success = '';\r
-                            break;\r
-                    \r
-                    }\r
                     resource.leases[i].status = lease_class;\r
                     resource.leases[i].success = lease_success;\r
                 }\r
@@ -831,7 +835,7 @@ var SCHEDULER_COLWIDTH = 50;
                 init_cell = (new Date().getHours() - 1) * 3600 / self._granularity;\r
                 if (init_cell > num_hidden_cells)\r
                     init_cell = num_hidden_cells;\r
-                \r
+\r
                 $('#tblSlider').slider({\r
                     min: 0,\r
                     max: num_hidden_cells,\r
index 289a556..1b84a5f 100644 (file)
@@ -10,7 +10,7 @@
           id="testbeds-filter_{[{ testbed.network_hrn }]}"
           data-platform="{[{ testbed.network_hrn }]}">
        <span class="list-group-item-heading">{[{ testbed.platform }]}</span>
-       <p class="list-group-item-heading">{[{ testbed.network_hrn }]}</p></a>
+       <!--<p class="list-group-item-heading">{[{ testbed.network_hrn }]}</p></a> -->
 </div>
 
 </div>
index 621ad5c..9db52c0 100644 (file)
@@ -87,11 +87,11 @@ class SliceResourceView (LoginRequiredView, ThemeView):
         #page.enqueue_query(query_resource_all)
 
         # leases query
-        lease_md = metadata.details_by_object('lease')
-        lease_fields = [column['name'] for column in lease_md['column']]
+        #lease_md = metadata.details_by_object('lease')
+        #lease_fields = [column['name'] for column in lease_md['column']]
 
-        query_lease_all = Query.get('lease').select(lease_fields)
-        page.enqueue_query(query_lease_all)
+        #query_lease_all = Query.get('lease').select(lease_fields)
+        #page.enqueue_query(query_lease_all)
 
         # --------------------------------------------------------------------------
         # ALL RESOURCES LIST
index 0c0a94f..687b7de 100644 (file)
        {% endfor %}
        </p>
 </div>
-<script>$(document).ready(function() {$('#authority_name').text('{{authority.name}}')});</script>
\ No newline at end of file
+<script>$(document).ready(function() {
+{% if authority.name %}
+    auth_name = "{{authority.name}}";
+{% else %}
+    auth_name = "{{authority.authority_hrn}}";
+{% endif %}
+    $('#authority_name').text(auth_name);
+});
+</script>
index 46f4c58..c73e665 100644 (file)
                     console.log(slice_users);
                 }
             });
-       }); // post rest/user
-    }
+       }); // post rest/use
+
+               $('button#addusers').click(function() {
+               $.post("/update/slice/",{'filters':{'slice_hrn':'{{slice}}'},'params':{'users':slice_users}}, function(data) {
+                       if(data.success){
+                       // TODO: highlight row after success
+                       //$('tr[id="'+record_id+'"]').highlight();
+                       mysliceAlert('Success: slice updated','success', true);
+                       }else{
+                       mysliceAlert('Rest Error for: '+data.error,'warning', true);
+                       }
+               }); // post update slice
+               // TODO: refresh table
+               //window.location="/portal/institution#slices";
+               }); // button#addusers click
+
+    } // get_users_in_slice
 
     $(document).ready(function() {
             // TODO: Add a filter based on the list of authorities
 
             get_users_in_slice("{{user_details.parent_authority}}");
 
-               $('button#addusers').click(function() {
-                $.post("/update/slice/",{'filters':{'slice_hrn':'{{slice}}'},'params':{'users':slice_users}}, function(data) {
-                       if(data.success){
-                       // TODO: highlight row after success
-                       //$('tr[id="'+record_id+'"]').highlight();
-                       mysliceAlert('Success: slice updated','success', true);
-                       }else{
-                       mysliceAlert('Rest Error for: '+data.error,'warning', true);
-                       }
-                }); // post update slice
-            
-               // TODO: refresh table
-               //window.location="/portal/institution#slices";
-
-            }); // button#addusers click
        $('[title!=""]').qtip();
     }); // document ready
 </script>
index 14e1956..988af27 100644 (file)
@@ -70,6 +70,8 @@ from plugins.topmenuvalidation import TopmenuValidation
 # for asynchronous management of topmenu
 def topmenu_items_live (current, page):
     request=page.request
+    # XXX TODO This should be triggered only when user is logged in
+    # We might use local storage instead
     query_pi_auths = Query.get('user').filter_by('user_hrn', '==', '$user_hrn' ).select('user_hrn','pi_authorities')
     page.enqueue_query(query_pi_auths)
 #        # even though this plugin does not have any html materialization, the corresponding domid