X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=portal%2Fsliceview.py;h=032b648584f25d86f939f947719f80683cf798b0;hb=a1e452649acd9538b59dbf728dbc7b7ddec96749;hp=950214824cface190aec9dd0bd69519ae919420b;hpb=13e56cc384abe89d370c438aac1afcad67339150;p=myslice.git diff --git a/portal/sliceview.py b/portal/sliceview.py index 95021482..032b6485 100644 --- a/portal/sliceview.py +++ b/portal/sliceview.py @@ -1,3 +1,4 @@ +import json from django.template import RequestContext from django.shortcuts import render_to_response @@ -5,6 +6,7 @@ from unfold.loginrequired import LoginRequiredAutoLogoutView from unfold.page import Page from manifold.core.query import Query, AnalyzedQuery +from manifold.manifoldapi import execute_query from ui.topmenu import topmenu_items, the_user @@ -12,6 +14,7 @@ from plugins.raw import Raw from plugins.stack import Stack from plugins.tabs import Tabs from plugins.querytable import QueryTable +from plugins.querygrid import QueryGrid from plugins.queryupdater import QueryUpdater from plugins.googlemap import GoogleMap from plugins.senslabmap import SensLabMap @@ -31,12 +34,15 @@ from myslice.config import Config tmp_default_slice='ple.upmc.myslicedemo' # temporary : turn off the users part to speed things up -#do_query_users=True -do_query_users=False +do_query_users=True +#do_query_users=False #do_query_leases=True do_query_leases=False +insert_grid=False +#insert_grid=True + insert_messages=False #insert_messages=True @@ -65,7 +71,7 @@ class SliceView (LoginRequiredAutoLogoutView): main_query = Query.get('slice').filter_by('slice_hrn', '=', slicename) main_query.select( 'slice_hrn', - 'resource.hrn', 'resource.hostname', 'resource.type', + 'resource.hrn', 'resource.urn', 'resource.hostname', 'resource.type', 'resource.network_hrn', 'lease.urn', 'user.user_hrn', @@ -73,17 +79,40 @@ class SliceView (LoginRequiredAutoLogoutView): ) # for internal use in the querytable plugin; # needs to be a unique column present for each returned record - main_query_key = 'hrn' + #main_query_key = 'hrn' query_resource_all = Query.get('resource').select(resource_fields) - if do_query_users: - query_user_all = Query.get('user').select(user_fields) - + aq = AnalyzedQuery(main_query, metadata=metadata) page.enqueue_query(main_query, analyzed_query=aq) page.enqueue_query(query_resource_all) if do_query_users: - page.enqueue_query(query_user_all) + # Required: the user must have an authority in its user.config + # XXX Temporary solution + user_query = Query().get('local:user').select('config','email') + user_details = execute_query(self.request, user_query) + + # not always found in user_details... + config={} + for user_detail in user_details: + #email = user_detail['email'] + if user_detail['config']: + config = json.loads(user_detail['config']) + user_detail['authority'] = config.get('authority',"Unknown Authority") + + if user_detail['authority'] is not None: + sub_authority = user_detail['authority'].split('.') + root_authority = sub_authority[0] + query_user_all = Query.get(root_authority+':user').select(user_fields) + + # XXX TODO this filter doesn't work - to be improved in Manifold + #.filter_by('authority.authority_hrn', '=', user_detail['authority']) + + page.enqueue_query(query_user_all) + else: + print "authority of the user is not in local:user db" + query_user_all = Query.get('user').select(user_fields) + # query_user_all = None # ... and for the relations # XXX Let's hardcode resources for now @@ -193,7 +222,7 @@ class SliceView (LoginRequiredAutoLogoutView): query = sq_resource, query_all = query_resource_all, # safer to use 'hrn' as the internal unique key for this plugin - id_key = main_query_key, + #id_key = main_query_key, checkboxes = True, datatables_options = { 'iDisplayLength': 25, @@ -202,6 +231,19 @@ class SliceView (LoginRequiredAutoLogoutView): }, ) + if insert_grid: + resources_as_grid = QueryGrid( + page = page, + domid = 'resources-grid', + title = 'Grid view', + # this is the query at the core of the slice list + query = sq_resource, + query_all = query_resource_all, + # safer to use 'hrn' as the internal unique key for this plugin + id_key = main_query_key, + checkboxes = True, + ) + if do_query_leases: resources_as_scheduler = Scheduler( page = page, @@ -225,6 +267,10 @@ class SliceView (LoginRequiredAutoLogoutView): resources_as_3dmap, resources_as_list_area, ] + if insert_grid: + resources_sons.append(resources_as_grid) + + print 40*'+-',"resources_sons has",len(resources_sons),"son" resources_area = Tabs ( page=page, domid="resources", @@ -240,7 +286,7 @@ class SliceView (LoginRequiredAutoLogoutView): # -------------------------------------------------------------------------- # USERS - if do_query_users: + if do_query_users and query_user_all is not None: tab_users = Tabs( page = page, domid = 'users',