keep only import topmenu_items, the_user in myslice/viewutils
[myslice.git] / trash / sliceview.py
index 759d20b..534ed78 100644 (file)
@@ -9,22 +9,26 @@ from unfold.page                     import Page
 from manifold.core.query             import Query, AnalyzedQuery
 from manifold.manifoldresult         import ManifoldException
 from manifold.metadata               import MetaData as Metadata
 from manifold.core.query             import Query, AnalyzedQuery
 from manifold.manifoldresult         import ManifoldException
 from manifold.metadata               import MetaData as Metadata
-from myslice.viewutils               import quickfilter_criterias, topmenu_items, the_user
+# need to remove this dep.
+from trash.trashutils                import quickfilter_criterias
+from myslice.viewutils               import topmenu_items, the_user
 
 from plugins.raw.raw                 import Raw
 from plugins.stack.stack             import Stack
 from plugins.tabs.tabs               import Tabs
 from plugins.lists.slicelist         import SliceList
 
 from plugins.raw.raw                 import Raw
 from plugins.stack.stack             import Stack
 from plugins.tabs.tabs               import Tabs
 from plugins.lists.slicelist         import SliceList
-from plugins.hazelnut.hazelnut       import Hazelnut 
+from plugins.hazelnut                import Hazelnut 
 from plugins.resources_selected      import ResourcesSelected
 from plugins.resources_selected      import ResourcesSelected
-from plugins.googlemap.googlemap     import GoogleMap 
+from plugins.googlemaps              import GoogleMaps
 from plugins.senslabmap.senslabmap   import SensLabMap
 from plugins.querycode.querycode     import QueryCode
 from plugins.senslabmap.senslabmap   import SensLabMap
 from plugins.querycode.querycode     import QueryCode
+from plugins.query_editor            import QueryEditor
+from plugins.active_filters          import ActiveFilters
 from plugins.quickfilter.quickfilter import QuickFilter
 from plugins.messages.messages       import Messages
 from plugins.quickfilter.quickfilter import QuickFilter
 from plugins.messages.messages       import Messages
-from plugins.updater.updater         import Updater
+#from plugins.updater                 import Updater
 
 
-tmp_default_slice='ple.inria.myslicedemo'
+tmp_default_slice='ple.upmc.myslicedemo'
 debug = True
 
 @login_required
 debug = True
 
 @login_required
@@ -52,28 +56,30 @@ def _slice_view (request, slicename):
     page = Page(request)
     page.expose_js_metadata()
 
     page = Page(request)
     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']]
+
+    user_md = metadata.details_by_object('user')
+    user_fields = ['user_hrn'] # [column['name'] for column in user_md['column']]
+
     # TODO The query to run is embedded in the URL
     main_query = Query.get('slice').filter_by('slice_hrn', '=', slicename)
     # TODO The query to run is embedded in the URL
     main_query = Query.get('slice').filter_by('slice_hrn', '=', slicename)
-    query_resource_all = Query.get('resource').select('resource_hrn', 'hostname', 'type', 'network_hrn', 'latitude', 'longitude')
-
-    # Get default fields from metadata unless specified
-    if not main_query.fields:
-        metadata = page.get_metadata()
-        md_fields = metadata.details_by_object('slice')
-        if debug:
-            print "METADATA", md_fields
-        # TODO Get default fields
-        main_query.select(
-                'slice_hrn',
-                'resource.resource_hrn', 'resource.hostname', 'resource.type', 'resource.network_hrn',
-                #'lease.urn',
-                'user.user_hrn',
-#                'application.measurement_point.counter'
-        )
+    main_query.select(
+            'slice_hrn',
+            'resource.resource_hrn', 'resource.hostname', 'resource.type', 'resource.network_hrn',
+            #'lease.urn',
+            'user.user_hrn',
+            #'application.measurement_point.counter'
+    )
+
+    query_resource_all = Query.get('resource').select(resource_fields)
+    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)
 
     aq = AnalyzedQuery(main_query, metadata=metadata)
     page.enqueue_query(main_query, analyzed_query=aq)
     page.enqueue_query(query_resource_all)
+    page.enqueue_query(query_user_all)
 
     # Prepare the display according to all metadata
     # (some parts will be pending, others can be triggered by users).
 
     # Prepare the display according to all metadata
     # (some parts will be pending, others can be triggered by users).
@@ -127,6 +133,18 @@ def _slice_view (request, slicename):
         sons=[],
     )
 
         sons=[],
     )
 
+    resource_query_editor = QueryEditor(
+        page  = page,
+        query = sq_resource,
+    )
+    stack_resources.insert(resource_query_editor)
+
+    resource_active_filters = ActiveFilters(
+        page  = page,
+        query = sq_resource,
+    )
+    stack_resources.insert(resource_active_filters)
+
     # --------------------------------------------------------------------------
     # Different displays = DataTables + GoogleMaps
     #
     # --------------------------------------------------------------------------
     # Different displays = DataTables + GoogleMaps
     #
@@ -136,13 +154,13 @@ def _slice_view (request, slicename):
     )
 
     tab_resource_plugins.insert(Hazelnut( 
     )
 
     tab_resource_plugins.insert(Hazelnut( 
-        page           = page,
-        title          = 'List',
-        domid          = 'checkboxes',
+        page       = page,
+        title      = 'List',
+        domid      = 'checkboxes',
         # this is the query at the core of the slice list
         # this is the query at the core of the slice list
-        query          = sq_resource,
-        query_all_uuid = query_resource_all.query_uuid,
-        checkboxes     = True,
+        query      = sq_resource,
+        query_all  = query_resource_all,
+        checkboxes = True,
         datatables_options = { 
             # for now we turn off sorting on the checkboxes columns this way
             # this of course should be automatic in hazelnut
         datatables_options = { 
             # for now we turn off sorting on the checkboxes columns this way
             # this of course should be automatic in hazelnut
@@ -152,34 +170,23 @@ def _slice_view (request, slicename):
         },
     ))
 
         },
     ))
 
-    tab_resource_plugins.insert(GoogleMap(
-        page        = page,
-        title       = 'Geographic view',
-        domid       = 'gmap',
+    tab_resource_plugins.insert(GoogleMaps(
+        page       = page,
+        title      = 'Geographic view',
+        domid      = 'gmap',
         # tab's sons preferably turn this off
         # tab's sons preferably turn this off
-        togglable   = False,
-        query       = sq_resource,
-        query_all_uuid = query_resource_all.query_uuid,
-        checkboxes     = True,
+        togglable  = False,
+        query      = sq_resource,
+        query_all  = query_resource_all,
+        checkboxes = True,
         # center on Paris
         # center on Paris
-        latitude    = 49.,
-        longitude   = 2.2,
-        zoom        = 3,
+        latitude   = 49.,
+        longitude  = 2.2,
+        zoom       = 3,
     ))
 
     stack_resources.insert(tab_resource_plugins)
 
     ))
 
     stack_resources.insert(tab_resource_plugins)
 
-    # --------------------------------------------------------------------------
-    # ResourcesSelected
-    #
-    stack_resources.insert(ResourcesSelected(
-        page                = page,
-        title               = 'Pending operations',
-        resource_query_uuid = sq_resource,
-        lease_query_uuid    = sq_lease,
-        togglable           = True,
-    ))
-
     sq_plugin.insert(stack_resources)
 
     ############################################################################
     sq_plugin.insert(stack_resources)
 
     ############################################################################
@@ -203,6 +210,7 @@ def _slice_view (request, slicename):
         togglable   = False,
         # this is the query at the core of the slice list
         query       = sq_user,
         togglable   = False,
         # this is the query at the core of the slice list
         query       = sq_user,
+        query_all  = query_user_all,
         checkboxes  = True,
         datatables_options = { 
             # for now we turn off sorting on the checkboxes columns this way
         checkboxes  = True,
         datatables_options = { 
             # for now we turn off sorting on the checkboxes columns this way
@@ -242,18 +250,28 @@ def _slice_view (request, slicename):
 
     main_plugin.insert(sq_plugin)
 
 
     main_plugin.insert(sq_plugin)
 
+    # --------------------------------------------------------------------------
+    # ResourcesSelected
+    #
+    main_plugin.insert(ResourcesSelected(
+        page                = page,
+        title               = 'Pending operations',
+        query               = main_query,
+        togglable           = True,
+    ))
+
     main_plugin.insert(Messages(
         page   = page,
         title  = "Runtime messages for slice %s"%slicename,
         domid  = "msgs-pre",
         levels = "ALL",
     ))
     main_plugin.insert(Messages(
         page   = page,
         title  = "Runtime messages for slice %s"%slicename,
         domid  = "msgs-pre",
         levels = "ALL",
     ))
-    main_plugin.insert(Updater(
-        page   = page,
-        title  = "wont show up as non togglable by default",
-        query  = main_query,
-        label  = "Update slice",
-    ))
+#    main_plugin.insert(Updater(
+#        page   = page,
+#        title  = "wont show up as non togglable by default",
+#        query  = main_query,
+#        label  = "Update slice",
+#    ))
     
 
 
     
 
 
@@ -264,7 +282,7 @@ def _slice_view (request, slicename):
     template_env [ 'unfold1_main' ] = main_plugin.render(request)
 
     # more general variables expected in the template
     template_env [ 'unfold1_main' ] = main_plugin.render(request)
 
     # more general variables expected in the template
-    template_env [ 'title' ] = 'Test view that combines various plugins'
+    template_env [ 'title' ] = '%(slicename)s (test view that combines various plugins)'%locals()
     # the menu items on the top
     template_env [ 'topmenu_items' ] = topmenu_items('Slice', request) 
     # so we can sho who is logged
     # the menu items on the top
     template_env [ 'topmenu_items' ] = topmenu_items('Slice', request) 
     # so we can sho who is logged