diff --git a/addons/http_routing/models/ir_http.py b/addons/http_routing/models/ir_http.py index 628887090af..6621b0a58bc 100644 --- a/addons/http_routing/models/ir_http.py +++ b/addons/http_routing/models/ir_http.py @@ -183,7 +183,7 @@ def url_for(url_from, lang_code=None, no_rewrite=False): # don't try to match route if we know that no rewrite has been loaded. routing = getattr(request, 'website_routing', None) # not modular, but not overridable - if not request.env['ir.http']._rewrite_len.get(routing): + if not getattr(request.env['ir.http'], '_rewrite_len', {}).get(routing): no_rewrite = True # avoid useless check for 1 char URL '/', '#', ... and absolute URL diff --git a/odoo/addons/base/models/ir_http.py b/odoo/addons/base/models/ir_http.py index 70730917ae2..8af7ab9bd3c 100644 --- a/odoo/addons/base/models/ir_http.py +++ b/odoo/addons/base/models/ir_http.py @@ -82,9 +82,6 @@ class IrHttp(models.AbstractModel): # Routing map #------------------------------------------------------ - _routing_map = {} - _rewrite_len = {} - @classmethod def _get_converters(cls): return {'model': ModelConverter, 'models': ModelsConverter, 'int': SignedIntConverter} @@ -253,6 +250,11 @@ class IrHttp(models.AbstractModel): @classmethod def routing_map(cls, key=None): + + if not hasattr(cls, '_routing_map'): + cls._routing_map = {} + cls._rewrite_len = {} + if key not in cls._routing_map: _logger.info("Generating routing map for key %s" % str(key)) installed = request.registry._init_modules | set(odoo.conf.server_wide_modules)