# so it should be specialized in real plugin classes
# like e.g. plugins.simplelist.SimpleList
+from __future__ import print_function
+
import json
from django.template.loader import render_to_string
# what comes from subclasses
for (k,v) in settings.iteritems():
setattr(self,k,v)
- if self.need_debug(): print "%s init - subclass setting %s"%(self.classname,k)
+ if self.need_debug(): print("%s init - subclass setting %s"%(self.classname,k))
# minimal debugging
if self.need_debug():
- print "%s init dbg .... BEG"%self.classname
- for (k,v) in self.__dict__.items(): print "dbg %s:%s"%(k,v)
- print "%s init dbg .... END"%self.classname
+ print("%s init dbg .... BEG"%self.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
if self.page: # I assume we can have a None page (Jordan)
self.page.record_plugin(self)
def settings_json (self):
exposed_settings=self.json_settings_list()
if 'query' in exposed_settings:
- print "WARNING, cannot expose 'query' directly in json_settings_list, query_uuid is enough"
+ print("WARNING, cannot expose 'query' directly in json_settings_list, query_uuid is enough")
result = "{"
result += ",".join([ self.setting_json(setting) for setting in self.json_settings_list() ])
result += "}"
def export_json_settings (self):
return 'query_uuid' in self.json_settings_list()
- # by default we create a timer if there's a query attached, redefine to change this behaviour
- def start_with_spin (self):
- return self.export_json_settings()
-
# returns the html code for that plugin
# in essence, wraps the results of self.render_content ()
def render (self, request):
# shove this into plugin.html
env = {}
env ['plugin_content']= plugin_content
- # need_spin is used in plugin.html
- self.need_spin=self.start_with_spin()
env.update(self.__dict__)
# translate high-level 'toggled' into 4 different booleans
self.need_toggle = False
env.update({'persistent_toggle':False,'display_hide_button':True,
'display_show_button':False,'display_body':True})
if self.need_debug():
- print "rendering plugin.html with env keys %s"%env.keys()
+ print("rendering plugin.html with env keys %s"%env.keys())
for (k,v) in env.items():
- if "display" in k or "persistent" in k: print k,'->',v
+ if "display" in k or "persistent" in k: print(k,'->',v)
result = render_to_string ('plugin.html',env)
# export this only for relevant plugins
env ['settings_json' ] = self.settings_json()
# compute plugin-specific initialization
js_init = render_to_string ( 'plugin-init.js', env )
- self.add_js_chunks (js_init)
+ # make sure this happens first in js
+ self.add_js_init_chunks (js_init)
# interpret the result of requirements ()
self.handle_requirements (request)
raise Exception, "%s.template_env returns wrong type"%self.classname
result=render_to_string (template, env)
if self.need_debug():
- print "%s.render_content: BEG --------------------"%self.classname
- print "template=%s"%template
- print "env.keys=%s"%env.keys()
+ print("%s.render_content: BEG --------------------"%self.classname)
+ print("template=%s"%template)
+ print("env.keys=%s"%env.keys())
#print "env=%s"%env
#print result
- print "%s.render_content: END --------------------"%self.classname
+ print("%s.render_content: END --------------------"%self.classname)
return result
# or from the result of self.requirements()
d=self.requirements()
for (k,v) in d.iteritems():
if self.need_debug():
- print "%s: handling requirement %s"%(self.classname,v)
+ print("%s: handling requirement %s"%(self.classname,v))
# e.g. js_files -> add_js_files
method_name='add_'+k
method=Page.__dict__[method_name]
@to_prelude
def add_css_files (self):pass
@to_prelude
+ def add_js_init_chunks (self):pass
+ @to_prelude
def add_js_chunks (self):pass
@to_prelude
def add_css_chunks (self):pass
#
# whether we export the json settings to js
# def export_json_settings (self)
- #
- # whether we show an initial spinner
- # def start_with_spin (self)