Merge branch 'onelab' of ssh://git.onelab.eu/git/myslice into onelab
authorJordan Augé <jordan.auge@lip6.fr>
Sun, 6 Jul 2014 17:56:52 +0000 (19:56 +0200)
committerJordan Augé <jordan.auge@lip6.fr>
Sun, 6 Jul 2014 17:56:52 +0000 (19:56 +0200)
Conflicts:
portal/sliceresourceview.py

1  2 
portal/sliceresourceview.py
portal/templates/base.html

@@@ -1,29 -1,27 +1,30 @@@
 -from django.template                 import RequestContext
 -from django.shortcuts                import render_to_response
 +from django.template                    import RequestContext
 +from django.shortcuts                   import render_to_response
  
- from manifold.core.query                import Query, AnalyzedQuery
- from manifoldapi.manifoldapi            import execute_query
+ from manifold.core.query             import Query, AnalyzedQuery
+ from manifoldapi.manifoldapi         import execute_query
+ import json
  
 -from django.views.generic.base      import TemplateView
 +from django.views.generic.base          import TemplateView
  
 -from unfold.loginrequired           import LoginRequiredView
 +from unfold.loginrequired               import LoginRequiredView
  from django.http import HttpResponse
  from django.shortcuts import render
  
 -from unfold.page                     import Page
 +from unfold.page                        import Page
  
 -from myslice.configengine            import ConfigEngine
 -from plugins.querytable              import QueryTable
 -from plugins.googlemap               import GoogleMap
 -from plugins.queryupdater            import QueryUpdater
 -from plugins.testbeds                import TestbedsPlugin
 -from plugins.scheduler2              import Scheduler2
 -from plugins.columns_editor          import ColumnsEditor
 -from plugins.sladialog               import SlaDialog
 -from plugins.lists.simplelist        import SimpleList
 +from myslice.configengine               import ConfigEngine
 +
 +from plugins.apply                      import ApplyPlugin
 +from plugins.querytable                 import QueryTable
 +from plugins.googlemap                  import GoogleMap
 +#from plugins.queryupdater               import QueryUpdater
 +from plugins.filter_status              import FilterStatusPlugin
 +from plugins.testbeds                   import TestbedsPlugin
 +from plugins.scheduler2                 import Scheduler2
 +from plugins.columns_editor             import ColumnsEditor
 +from plugins.sladialog                  import SlaDialog
 +from plugins.lists.simplelist           import SimpleList
  
  from myslice.theme import ThemeView
  
@@@ -51,9 -49,8 +52,9 @@@ class SliceResourceView (LoginRequiredV
          # Example: select slice_hrn, resource.urn, lease.resource, lease.start_time, lease.end_time from slice where slice_hrn == "ple.upmc.myslicedemo"
          main_query = Query.get('slice').filter_by('slice_hrn', '=', slicename)
          main_query.select(
 +                'slice_urn', # XXX We need the key otherwise the storage of records bugs !
                  'slice_hrn',
 -                'resource.urn', 
 +                'resource.urn',
                  'resource.hostname', 'resource.type',
                  'resource.network_hrn',
                  'lease.resource',
@@@ -71,7 -68,7 +72,7 @@@
          sq_lease       = aq.subquery('lease')
  
          query_resource_all = Query.get('resource').select(resource_fields)
 -        page.enqueue_query(query_resource_all)
 +        #page.enqueue_query(query_resource_all)
  
          # leases query
          lease_md = metadata.details_by_object('lease')
              # tab's sons preferably turn this off
              togglable  = False,
              query      = sq_resource,
 -            query_all  = query_resource_all,
              # this key is the one issued by google
              googlemap_api_key = ConfigEngine().googlemap_api_key(),
              # the key to use at init-time
              # this is the query at the core of the slice list
              query = sq_resource,
              query_lease = sq_lease,
 -            query_all_resources = query_resource_all,
 -            query_all_leases = query_lease_all,
          )
  
          # --------------------------------------------------------------------------
          # QueryUpdater (Pending Operations)
   
 -        pending_resources = QueryUpdater(
 -            page                = page,
 -            title               = 'Pending operations',
 -            query               = main_query,
 -            togglable           = False,
 -            # start turned off, it will open up itself when stuff comes in
 -            toggled             = False,
 -            domid               = 'pending',
 -            outline_complete    = True,
 -            username            = request.user,
 -        )
 +#DEPRECATED|        pending_resources = QueryUpdater(
 +#DEPRECATED|            page                = page,
 +#DEPRECATED|            title               = 'Pending operations',
 +#DEPRECATED|            query               = main_query,
 +#DEPRECATED|            togglable           = False,
 +#DEPRECATED|            # start turned off, it will open up itself when stuff comes in
 +#DEPRECATED|            toggled             = False,
 +#DEPRECATED|            domid               = 'pending',
 +#DEPRECATED|            outline_complete    = True,
 +#DEPRECATED|            username            = request.user,
 +#DEPRECATED|        )
  
          # --------------------------------------------------------------------------
          # NETWORKS
          network_md = metadata.details_by_object('network')
          network_fields = [column['name'] for column in network_md['column']]
  
 -        #query_network = Query.get('network').select(network_fields)
 -        #page.enqueue_query(query_network)
 +        query_networks = Query.get('network').select(network_fields)
 +        page.enqueue_query(query_networks)
  
          filter_testbeds = TestbedsPlugin(
 -            page          = page,
 -            domid         = 'testbeds-filter',
 -            title         = 'Filter by testbeds',
 -            query         = sq_resource,
 -            query_all     = query_resource_all,
 -            #query_network = query_network,
 -            init_key      = "network_hrn",
 -            checkboxes    = True,
 +            page            = page,
 +            domid           = 'testbeds-filter',
 +            title           = 'Filter by testbeds',
 +            query           = sq_resource,
 +            query_networks  = query_networks,
 +            init_key        = "network_hrn",
 +            checkboxes      = True,
              datatables_options = {
                  'iDisplayLength': 25,
                  'bLengthChange' : True,
                  },
          )
  
 +        filter_status = FilterStatusPlugin(
 +            page            = page,
 +            domid           = "filter-status",
 +            query           = sq_resource,
 +        )
 +        apply = ApplyPlugin(
 +            page            = page,
 +            domid           = "apply",
 +            query           = sq_resource,
 +        )
 +            
 +
          # --------------------------------------------------------------------------
          # SLA View and accept dialog
          
              outline_complete    = True,
              username            = request.user,
          )
+         
+         ## check user is pi or not
+         platform_query  = Query().get('local:platform').select('platform_id','platform','gateway_type','disabled')
+         account_query  = Query().get('local:account').select('user_id','platform_id','auth_type','config')
+         platform_details = execute_query(self.request, platform_query)
+         account_details = execute_query(self.request, account_query)
+         for platform_detail in platform_details:
+             for account_detail in account_details:
+                 if platform_detail['platform_id'] == account_detail['platform_id']:
+                     if 'config' in account_detail and account_detail['config'] is not '':
+                         account_config = json.loads(account_detail['config'])
+                         if 'myslice' in platform_detail['platform']:
+                             acc_auth_cred = account_config.get('delegated_authority_credentials','N/A')
+         # assigning values
+         if acc_auth_cred == {} or acc_auth_cred == 'N/A':
+             pi = "is_not_pi"
+         else:
+             pi = "is_pi"
+         
          template_env = {}
          template_env['list_resources'] = list_resources.render(self.request)
          template_env['list_reserved_resources'] = list_reserved_resources.render(self.request)
          template_env['columns_editor'] = filter_column_editor.render(self.request)
  
          template_env['filter_testbeds'] = filter_testbeds.render(self.request)
 +        template_env['filter_status'] = filter_status.render(self.request)
 +        template_env['apply'] = apply.render(self.request)
 +
          template_env['map_resources'] = map_resources.render(self.request)
          template_env['scheduler'] = resources_as_scheduler2.render(self.request)
 -        template_env['pending_resources'] = pending_resources.render(self.request)
 -        template_env['sla_dialog'] = sla_dialog.render(self.request)
 +#        template_env['pending_resources'] = pending_resources.render(self.request)
 +        template_env['sla_dialog'] = '' # sla_dialog.render(self.request)
          template_env["theme"] = self.theme
          template_env["username"] = request.user
+         template_env["pi"] = pi
          template_env["slice"] = slicename
          template_env["section"] = "resources"
          template_env["msg"] = msg
@@@ -8,6 -8,7 +8,7 @@@
  {% include 'messages-transient-header.html' %}
  <script type="text/javascript"> {# raw js code - use {% insert prelude_js %} ... {% endinsert %} #} {% container prelude_js %}</script>
  <script src="{{ STATIC_URL }}js/jquery.dataTables.min.js"></script>
+ <script src="{{ STATIC_URL }}js/jquery.qtip.min.js"></script>
  <script src="{{ STATIC_URL }}js/bootstrap.datatables.js"></script>
  <!-- <script src="{{ STATIC_URL }}js/stash.min.js"></script> -->
  <script src="{{ STATIC_URL }}js/myslice.js"></script>
  {% block head %} {% endblock head %}
  {# let's add these ones no matter what #}
  {% insert_str prelude "js/jquery.min.js" %}
 +{% insert_str prelude "js/angular/angular.min.js" %}
  {% insert_str prelude "js/jquery.html5storage.min.js" %}
  {% insert_str prelude "js/messages-runtime.js" %}
  {% insert_str prelude "js/class.js" %}
  {% insert_str prelude "js/plugin-helper.js" %}
  {% insert_str prelude "js/mustache.js" %}
 +{% insert_str prelude "js/hashtable.js" %}
  {% insert_str prelude "js/plugin.js" %}
  {% insert_str prelude "js/manifold.js" %}
  {% insert_str prelude "css/manifold.css" %}
  {% insert_str prelude "css/plugin.css" %}
  {% insert_str prelude "js/bootstrap.js" %}
  {% insert_str prelude "css/bootstrap.css" %}
 +{% insert_str prelude "js/bootstrap-datepicker.js" %}
 +{% insert_str prelude "css/datepicker.css" %}
 +{% insert_str prelude "js/bootstrap-slider.js" %}
 +{% insert_str prelude "css/slider.css" %}
  {% insert_str prelude "css/topmenu.css" %}
  {% insert_str prelude "js/logout.js" %}
  <link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}css/{{ theme }}.css">
+ <link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}css/jquery.qtip.min.css">
  
  <script type="text/javascript">
  /*
@@@ -53,11 -50,13 +56,13 @@@ $(document).ready(function() 
      if($.isEmptyObject(user)){
          $.post("/rest/user/",{'filters':{'user_hrn':'$user_hrn'}}, function( data ) {
              if(data.length > 0){
-                 slices = data[0].slices;  
+                 drawSlices(data[0].slices);  
              }else{
+               $("div#home-slice-list").html(
+                                       "<div>You do not yet have a slice</div>");
+                       $("ul#dropdown-slice-list").append("<li>no slice</li>");
                  slices.push("no slice");
              }
-             drawSlices(slices);
        });
      }else{
          slices = user.slices;
      }
      function drawSlices(slices){
          var items = [];
+               
          $.each( slices, function(i, val) {
-             items.push( "<li><a href=\"/slice/"+val+"\">" + val + "</a></li>" );
+             items.push( "<li><a href=\"/resources/"+val+"\">" + val + "</a></li>" );
          });
          $("div#home-slice-list").html($( "<ul/>", { html: items.join( "" ) }));
          $("ul#dropdown-slice-list").append(items.join( "" ));
      }
      {% endif %}
+       jQuery('[title!=""]').qtip();
  });
  </script>
  </head>
 -<body>
 +<body ng-app="ManifoldApp">
  {% block container %}
        {% block topmenu %}
        {% widget "_widget-topmenu.html" %}