a first stab at porting datatables - new code - temporary - name is 'hazelnut' for...
[unfold.git] / trash / haze.py
diff --git a/trash/haze.py b/trash/haze.py
new file mode 100644 (file)
index 0000000..970faff
--- /dev/null
@@ -0,0 +1,92 @@
+# Create your views here.
+
+from django.template import RequestContext
+from django.shortcuts import render_to_response
+
+from django.contrib.auth.decorators import login_required
+
+from unfold.page import Page
+from manifold.manifoldquery import ManifoldQuery
+
+from plugins.stack.stack import Stack
+from plugins.hazelnut.hazelnut import Hazelnut 
+from plugins.lists.slicelist import SliceList
+from plugins.querycode.querycode import QueryCode
+from plugins.quickfilter.quickfilter import QuickFilter
+
+from myslice.viewutils import quickfilter_criterias
+
+from myslice.viewutils import topmenu_items, the_user
+
+@login_required
+def hazelnut_view (request):
+    
+    page = Page(request)
+
+    main_query = ManifoldQuery (action='get',
+                                method='resource',
+                                timestamp='latest',
+                                fields=['hrn','hostname'],
+                                filters= [ 
+                                # xxx filter : should filter on the slices the logged user can see
+                                # we don't have the user's hrn yet
+                                # in addition this currently returns all slices anyways
+                                # filter = ...
+                                sort='slice_hrn',
+                                )
+    page.enqueue_query (main_query)
+
+    main_plugin = Stack (
+        page=page,
+        title="global container",
+        sons=[ 
+            Hazelnut ( # setting visible attributes first
+                page=page,
+                title='a sample and simple hazelnut',
+                # this is the query at the core of the slice list
+                query=main_query,
+                ),
+            ])
+
+    # variables that will get passed to the view-plugin.html template
+    template_env = {}
+    
+    # define 'unfold1_main' to the template engine
+    template_env [ 'unfold1_main' ] = main_plugin.render(request)
+
+    # more general variables expected in the template
+    template_env [ 'title' ] = 'Test view for hazelnut'
+    # the menu items on the top
+    template_env [ 'topmenu_items' ] = topmenu_items('hazelnut', request) 
+    # so we can sho who is logged
+    template_env [ 'username' ] = the_user (request) 
+
+#   ########## add another plugin with the same request, on the RHS pane
+#   will show up in the right-hand side area named 'related'
+    related_plugin = SliceList (
+        page=page,
+        title='Same request, other layout',
+        domid='sidelist',
+        with_datatables=True, 
+        header='paginated main',
+        # share the query
+        query=main_query,
+        )
+    # likewise but on the side view
+    template_env [ 'unfold1_margin' ] = related_plugin.render (request)
+    
+    # add our own css in the mix
+    page.add_css_files ( 'css/hazelnut.css')
+    
+    # don't forget to run the requests
+    page.exec_queue_asynchroneously ()
+
+    # xxx create another plugin with the same query and a different layout (with_datatables)
+    # show that it worls as expected, one single api call to backend and 2 refreshed views
+
+    # the prelude object in page contains a summary of the requirements() for all plugins
+    # define {js,css}_{files,chunks}
+    prelude_env = page.prelude_env()
+    template_env.update(prelude_env)
+    return render_to_response ('view-plugin.html',template_env,
+                               context_instance=RequestContext(request))