add the exclude_from_json() mechanism to keep control on the amount of
authorThierry Parmentelat <thierry.parmentelat@inria.fr>
Fri, 21 Dec 2012 13:13:42 +0000 (14:13 +0100)
committerThierry Parmentelat <thierry.parmentelat@inria.fr>
Fri, 21 Dec 2012 13:13:42 +0000 (14:13 +0100)
conext exposed to js

engine/plugin.py
plugins/simplelist.py

index 4ae6fbf..4fb4211 100644 (file)
@@ -106,6 +106,8 @@ class Plugin:
         # NOTE this plugin_uuid thing might occur in js files, ** do not rename **
         js_env = { 'plugin_uuid' : self.domid }
         js_env.update (self._settings)
+        for k in self.exclude_from_json():
+            if k in js_env: del js_env[k]
         settings_json = json.dumps (js_env, separators=(',',':'))
         env ['settings_json' ] = settings_json
         # compute plugin-specific initialization
@@ -211,3 +213,6 @@ class Plugin:
 #                 'css_chunk': [],       # likewise for css scripts
 #                 }
     
+    # for better performance
+    # you can specify a list of keys that won't be exposed as json attributes
+    def exclude_from_json (self): return []
index cdbe540..5821bfb 100644 (file)
@@ -9,7 +9,7 @@ class SimpleList (Plugin) :
         Plugin.__init__ (self, **settings)
         self.list=list
 # don't expose this as it's big and 
-#        self.add_to_settings ('list')
+        self.add_to_settings ('list')
         self.with_datatables = with_datatables
         self.add_to_settings ('with_datatables')
 
@@ -27,3 +27,6 @@ class SimpleList (Plugin) :
 # for tests
 #                 'js_chunks' : "/* a javascript chunk */",       
 #                 'css_chunks': "/* a css style */ ",
+
+    def exclude_from_json (self):
+        return ['list']