from django.contrib.auth.decorators import login_required
-from engine.pluginset import PluginSet
-from engine.manifoldquery import ManifoldQuery
+from unfold.page import Page
+from manifold.core.query import Query
+#from manifold.manifoldquery import ManifoldQuery
-from plugins.simplelist import SimpleList
+from plugins.stack.stack import Stack
+from plugins.lists.slicelist import SliceList
+from plugins.querycode.querycode import QueryCode
+from plugins.quickfilter.quickfilter import QuickFilter
+
+from trash.trashutils import quickfilter_criterias
#
from myslice.viewutils import topmenu_items, the_user
-# from myslice.viewutils import hard_wired_slice_names, hard_wired_list, lorem_p, lorem, quickfilter_criterias
@login_required
def dashboard_view (request):
- pluginset = PluginSet()
+ page = Page(request)
- slices_query = ManifoldQuery (action='get',
- method='slice',
- timestamp='latest',
- fields=['slice_hrn'],
- # 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
- sort='slice_hrn',)
- pluginset.enqueue_query (slices_query)
+ slices_query = Query.get('slice').select('slice_hrn')
+#old# # xxx filter : should filter on the slices the logged user can see
+#old# # we don't have the user's hrn yet
+#old# # in addition this currently returns all slices anyways
+#old# # filter = ...
+#old# sort='slice_hrn',)
+ page.enqueue_query (slices_query)
- main_plugin = SimpleList ( # setting visible attributes first
- pluginset=pluginset,
- title='SimpleList and dataTables',
- header='slices list',
- with_datatables=True,
- toggled=False,
- # this is required for the javascript code
- query=slices_query,
- key='slice_hrn',
- value='slice_hrn',
- )
+ main_plugin = Stack (
+ page=page,
+ title="Putting stuff together",
+ sons=[
+ QueryCode (
+ page=page,
+ title="Vizualize your query",
+ query=slices_query,
+ toggled=False,
+ ),
+ QuickFilter (
+ # we play with this one for demo purposes in dashboard.css
+ domid='myquickfilter',
+ page=page,
+ title='play with filters',
+ criterias=quickfilter_criterias,
+ toggled=False,
+ ),
+ SliceList ( # setting visible attributes first
+ page=page,
+ title='Asynchroneous SliceList',
+ header='slices list',
+ with_datatables=False,
+ # this is the query at the core of the slice list
+ query=slices_query,
+ ),
+ ])
- # variables that will get passed to the view-plugin.html template
+ # variables that will get passed to the view-unfold2.html template
template_env = {}
- # define 'content_main' to the template engine
- template_env [ 'content_main' ] = main_plugin.render(request)
-
-# ########## add another plugin with the same request, on the RHS pane
-# # lacks a/href to /slice/%s
-# related_plugin = SliceList (title='SliceList plugin',domid='slicelist1',
-# with_datatables='yes',
-# list=hard_wired_slice_names,
-# header='Slices')
-# # likewise but on the side view
-# template_env [ 'content_related' ] = related_plugin.render (request)
+ # define 'unfold2_main' to the template engine
+ template_env [ 'unfold2_main' ] = main_plugin.render(request)
# more general variables expected in the template
- template_env [ 'title' ] = 'SimpleList Test View'
+ template_env [ 'title' ] = 'Test view for a full request cycle'
# the menu items on the top
template_env [ 'topmenu_items' ] = topmenu_items('dashboard', request)
# so we can sho who is logged
template_env [ 'username' ] = the_user (request)
- pluginset.exec_queue_asynchroneously ()
+# ########## 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 slices',
+ # share the query
+ query=slices_query,
+ )
+ # likewise but on the side view
+ template_env [ 'unfold2_margin' ] = related_plugin.render (request)
+
+ # add our own css in the mix
+ page.add_css_files ( 'css/dashboard.css')
+
+ # don't forget to run the requests
+ page.expose_queries ()
+
+ # 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 pluginset contains a summary of the requirements() for all plugins
+ # the prelude object in page contains a summary of the requirements() for all plugins
# define {js,css}_{files,chunks}
- prelude_env = pluginset.template_env()
+ prelude_env = page.prelude_env()
template_env.update(prelude_env)
- return render_to_response ('view-plugin.html',template_env,
+ return render_to_response ('view-unfold2.html',template_env,
context_instance=RequestContext(request))