plugins: reworked the framework using inheritance + added active_filters
[myslice.git] / trash / sliceview.py
index 94b539c..a0790c0 100644 (file)
@@ -21,6 +21,7 @@ from plugins.googlemap.googlemap     import GoogleMap
 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.updater.updater         import Updater
@@ -53,24 +54,21 @@ def _slice_view (request, slicename):
     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']]
+
     # 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)
 
     aq = AnalyzedQuery(main_query, metadata=metadata)
     page.enqueue_query(main_query, analyzed_query=aq)
@@ -134,6 +132,12 @@ def _slice_view (request, slicename):
     )
     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
     #
@@ -143,13 +147,13 @@ def _slice_view (request, slicename):
     )
 
     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
-        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
@@ -160,18 +164,18 @@ def _slice_view (request, slicename):
     ))
 
     tab_resource_plugins.insert(GoogleMap(
-        page        = page,
-        title       = 'Geographic view',
-        domid       = 'gmap',
+        page       = page,
+        title      = 'Geographic view',
+        domid      = 'gmap',
         # 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
-        latitude    = 49.,
-        longitude   = 2.2,
-        zoom        = 3,
+        latitude   = 49.,
+        longitude  = 2.2,
+        zoom       = 3,
     ))
 
     stack_resources.insert(tab_resource_plugins)