← Back to team overview

openerp-dev-web team mailing list archive

[Merge] lp:~kangol/openobject-client-web/trunk-fix-templatelookup into lp:openobject-client-web

 

Christophe (OpenERP) has proposed merging lp:~kangol/openobject-client-web/trunk-fix-templatelookup into lp:openobject-client-web.

Requested reviews:
  OpenERP SA's Web Client R&D (openerp-dev-web)

-- 
https://code.launchpad.net/~kangol/openobject-client-web/trunk-fix-templatelookup/+merge/39837
Your team OpenERP SA's Web Client R&D is requested to review the proposed merge of lp:~kangol/openobject-client-web/trunk-fix-templatelookup into lp:openobject-client-web.
=== modified file 'openobject/tools/_expose.py'
--- openobject/tools/_expose.py	2010-10-28 14:21:03 +0000
+++ openobject/tools/_expose.py	2010-11-02 10:58:41 +0000
@@ -52,22 +52,26 @@
 filters = ["__content"]
 imports = ["from openobject.tools import content as __content"]
 
-class TL(TemplateLookup):
-
-    cache = {}
-
-    def get_template(self, uri):
-        try:
-            return self.cache[str(uri)]
-        except Exception, e:
-            pass
-        self.cache[str(uri)] = res = super(TL, self).get_template(uri)
-        return res
-
-template_lookup = TL(directories=[paths.root(), paths.addons()],
-                     default_filters=filters,
-                     imports=imports,
-                     preprocessor=templating.edition_preprocessor)
+_template_lookups = {}      # XXX use mako.util.LRUCache ?
+
+def get_template_lookup():
+    """Return the Template Lookup for the current database"""
+    db_name = None
+    try:
+        db_name = cherrypy.session['db']
+    except (AttributeError, KeyError):
+        pass
+
+    try:
+        return _template_lookups[db_name]
+    except KeyError:
+        lookup = _template_lookups[db_name] = TemplateLookup(
+                                 directories=[paths.root(), paths.addons()],
+                                 default_filters=filters,
+                                 imports=imports,
+                                 preprocessor=templating.edition_preprocessor)
+        return lookup
+
 
 def load_template(template):
 
@@ -75,7 +79,7 @@
         return template
 
     if re.match('(.+)\.(html|mako)\s*$', template):
-        return template_lookup.get_template(template)
+        return get_template_lookup().get_template(template)
     else:
         return Template(template, default_filters=filters, imports=imports)
 


Follow ups