X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=portal%2Fsliceview.py;h=315658c390577c9f6c778253c1430d88ed841461;hb=facfe416a9c1b9e1dd0e34785275779bdcdafe35;hp=032b648584f25d86f939f947719f80683cf798b0;hpb=a1e452649acd9538b59dbf728dbc7b7ddec96749;p=myslice.git diff --git a/portal/sliceview.py b/portal/sliceview.py index 032b6485..315658c3 100644 --- a/portal/sliceview.py +++ b/portal/sliceview.py @@ -10,6 +10,7 @@ from manifold.manifoldapi import execute_query from ui.topmenu import topmenu_items, the_user +from plugins.topmenuvalidation import TopmenuValidation from plugins.raw import Raw from plugins.stack import Stack from plugins.tabs import Tabs @@ -34,8 +35,8 @@ 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 @@ -58,8 +59,9 @@ class SliceView (LoginRequiredAutoLogoutView): page.add_js_chunks ('$(function() { messages.debug("sliceview: leases turned %s"); });'%("on" if do_query_leases else "off")) config=Config() page.add_js_chunks ('$(function() { messages.debug("manifold URL %s"); });'%(config.manifold_url())) + page.expose_js_metadata() - + metadata = page.get_metadata() resource_md = metadata.details_by_object('resource') resource_fields = [column['name'] for column in resource_md['column']] @@ -71,7 +73,8 @@ class SliceView (LoginRequiredAutoLogoutView): main_query = Query.get('slice').filter_by('slice_hrn', '=', slicename) main_query.select( 'slice_hrn', - 'resource.hrn', 'resource.urn', 'resource.hostname', 'resource.type', + #'resource.hrn', 'resource.urn', + 'resource.hostname', 'resource.type', 'resource.network_hrn', 'lease.urn', 'user.user_hrn', @@ -79,7 +82,7 @@ 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_init_key = 'hostname' query_resource_all = Query.get('resource').select(resource_fields) @@ -94,24 +97,24 @@ class SliceView (LoginRequiredAutoLogoutView): # 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) +# 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 @@ -198,7 +201,10 @@ class SliceView (LoginRequiredAutoLogoutView): togglable = False, query = sq_resource, query_all = query_resource_all, + # this key is the one issued by google googlemap_api_key = Config().googlemap_api_key(), + # the key to use at init-time + init_key = main_query_init_key, checkboxes = True, # center on Paris latitude = 49., @@ -221,8 +227,8 @@ class SliceView (LoginRequiredAutoLogoutView): # 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, + # use 'hrn' as the internal unique key for this plugin + init_key = main_query_init_key, checkboxes = True, datatables_options = { 'iDisplayLength': 25, @@ -239,8 +245,9 @@ class SliceView (LoginRequiredAutoLogoutView): # 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, + # use 'hrn' as the internal unique key for this plugin + # xxx todo on querygrid as well + # init_key = main_query_init_key, checkboxes = True, ) @@ -270,8 +277,6 @@ class SliceView (LoginRequiredAutoLogoutView): 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", togglable=True, @@ -416,7 +421,24 @@ class SliceView (LoginRequiredAutoLogoutView): outline_complete = True, )) - +# topmenu animation +# xxx all this should go into a plugin if its own with the topmenu and all... + query_pi_auths = Query.get('ple:user').filter_by('user_hrn', '==', '$user_hrn' ).select('pi_authorities') + page.enqueue_query(query_pi_auths) + # even though this plugin does not have any html materialization, the corresponding domid + # must exist because it is searched at init-time to create the JS plugin + # so we simply piggy-back the target button here + topmenuvalidation = TopmenuValidation ( + page=page, + # see above + domid='topmenu-validation', + query=query_pi_auths, + # this one is the target for a $.show() when the query comes back + button_domid="topmenu-validation") + # although the result does not matter, rendering is required for the JS init code to make it in the page + topmenuvalidation.render(request) +# end topmenu addition + # variables that will get passed to the view-unfold1.html template template_env = {}