from engine.prelude import Prelude
from engine.manifoldapi import ManifoldAPI
-# decorator to deflect calls on this PluginSet to its prelude
+# decorator to deflect calls on this Page to its prelude
def to_prelude (method):
def actual (self, *args, **kwds):
prelude_method=Prelude.__dict__[method.__name__]
return prelude_method(self.prelude,*args, **kwds)
return actual
-class PluginSet:
+class Page:
def __init__ (self, request):
self._plugins = {}
#################### requirements/prelude management
- # just forward to self.pluginset - see decorator above
+ # just forward to self.prelude - see decorator above
@to_prelude
def add_js_files (self):pass
@to_prelude
from django.template.loader import render_to_string
-from engine.pluginset import PluginSet
+from engine.page import Page
from engine.prelude import Prelude
####################
DEBUG= False
#DEBUG= [ 'SliceList' ]
-# decorator to deflect calls on Plugin to its PluginSet
+# decorator to deflect calls on Plugin to its Prelude through self.page.prelude
def to_prelude (method):
def actual (self, *args, **kwds):
prelude_method=Prelude.__dict__[method.__name__]
- return prelude_method(self.pluginset.prelude,*args, **kwds)
+ return prelude_method(self.page.prelude,*args, **kwds)
return actual
class Plugin:
##########
# Constructor
#### mandatory
- # . pluginset: the context of the request being served
+ # . page: the context of the request being served
# . title: is used visually for displaying the widget
#### optional
# . togglable: whether it can be turned on and off (like PleKitToggle)
# p=Plugin(foo='bar')
# which will result in 'foo' being accessible to the template engine
#
- def __init__ (self, pluginset, title, domid=None,
+ def __init__ (self, page, title, domid=None,
visible=True, togglable=True, toggled=True, **settings):
- self.pluginset = pluginset
+ self.page = page
self.title=title
+ # callers can provide their domid for css'ing
if not domid: domid=Plugin.newdomid()
self.domid=domid
self.classname=self._py_classname()
for (k,v) in self.__dict__.items(): print "dbg %s:%s"%(k,v)
print "%s init dbg .... END"%self.classname
# do this only once the structure is fine
- self.pluginset.record_plugin(self)
+ self.page.record_plugin(self)
def _py_classname (self):
try: return self.__class__.__name__
if self.need_debug():
print "%s: handling requirement %s"%(self.classname,v)
method_name='add_'+k
- method=PluginSet.__dict__[method_name]
- method(self.pluginset,v)
+ method=Page.__dict__[method_name]
+ method(self.page,v)
except AttributeError:
# most likely the object does not have that method defined, which is fine
pass
pass
#################### requirements/prelude management
- # just forward to self.pluginset - see decorator above
+ # just forward to our prelude instance - see decorator above
@to_prelude
def add_js_files (self):pass
@to_prelude
from django.contrib.auth.decorators import login_required
-from engine.pluginset import PluginSet
+from engine.page import Page
from engine.manifoldquery import ManifoldQuery
from plugins.slicelist import SliceList
@login_required
def dashboard_view (request):
- pluginset = PluginSet(request)
+ page = Page(request)
slices_query = ManifoldQuery (action='get',
method='slice',
# in addition this currently returns all slices anyways
# filter = ...
sort='slice_hrn',)
- pluginset.enqueue_query (slices_query)
+ page.enqueue_query (slices_query)
main_plugin = SliceList ( # setting visible attributes first
- pluginset=pluginset,
+ page=page,
title='Asynchroneous SliceList',
header='slices list',
with_datatables=False,
##########
# lacks a/href to /slice/%s
related_plugin = SliceList (
- pluginset=pluginset,
+ page=page,
title='Same request, other layout',
domid='sidelist',
with_datatables=True,
template_env [ 'content_related' ] = related_plugin.render (request)
# add our own css in the mix
- pluginset.add_css_files ( 'css/dashboard.css')
+ page.add_css_files ( 'css/dashboard.css')
# don't forget to run the requests
- pluginset.exec_queue_asynchroneously ()
+ 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 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.template_env()
template_env.update(prelude_env)
return render_to_response ('view-plugin.html',template_env,
context_instance=RequestContext(request))
from django.contrib.auth.decorators import login_required
-from engine.pluginset import PluginSet
+from engine.page import Page
from plugins.verticallayout import VerticalLayout
from plugins.tabs import Tabs
@login_required
def test_plugin_view (request):
- pluginset = PluginSet(request)
+ page = Page(request)
# variables that will get passed to this template
template_env = {}
main_plugin = \
- VerticalLayout ( pluginset=pluginset,
+ VerticalLayout ( page=page,
title='title for the vertical layout',
- sons = [ StaticList (pluginset=pluginset,
+ sons = [ StaticList (page=page,
title='StaticList - with datatables - starts toggled off',
list=hard_wired_list,
header='Hard wired header',
foo='the value for foo',
with_datatables=True,
toggled=False),
- Tabs (pluginset=pluginset,
+ Tabs (page=page,
title='Sample Tabs',
# *** we select this one to be the active tab ***
active='raw2',
- sons = [ Raw (pluginset=pluginset,
+ sons = [ Raw (page=page,
title='a raw plugin',domid='raw1',
togglable=False,
html= 3*lorem_p),
- StaticList(pluginset=pluginset,
+ StaticList(page=page,
title='a slice list',
togglable=False,
header="static list but not togglable",
list=hard_wired_slice_names),
- Raw (pluginset=pluginset,
+ Raw (page=page,
title='raw title',domid='raw2',
togglable=False,html=lorem) ]),
- StaticList (pluginset=pluginset,
+ StaticList (page=page,
title='SimpleList with slice names',
list=hard_wired_slice_names,
),
QuickFilter (list=quickfilter_criterias,
- pluginset=pluginset,
+ page=page,
title='QuickFilter in main content') ] )
# define 'content_main' to the template engine
template_env [ 'content_main' ] = main_plugin.render(request)
##########
- related_plugin = StaticList (pluginset=pluginset,
+ related_plugin = StaticList (page=page,
title='SliceList plugin',domid='slicelist1',
with_datatables='yes',
list=hard_wired_slice_names,
template_env [ 'username' ] = the_user (request)
# we don't have anythong asynchroneous, but that doesn't hurt...
- pluginset.exec_queue_asynchroneously ()
+ page.exec_queue_asynchroneously ()
- # 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.template_env()
template_env.update(prelude_env)
return render_to_response ('view-plugin.html',template_env,
context_instance=RequestContext(request))