[IMP] http: make ir.http.routing_map a standard lazy property

Is currently a function emulating a lazy property.
This commit is contained in:
Xavier Morel
2015-10-08 15:59:02 +02:00
parent 43edebc328
commit ca7eeb0ed0
3 changed files with 13 additions and 14 deletions
+9 -10
View File
@@ -20,6 +20,7 @@ import openerp.models
from openerp import http from openerp import http
from openerp.http import request from openerp.http import request
from openerp.osv import osv, orm from openerp.osv import osv, orm
from openerp.tools import lazy_property
_logger = logging.getLogger(__name__) _logger = logging.getLogger(__name__)
@@ -62,7 +63,7 @@ class ir_http(osv.AbstractModel):
return {'model': ModelConverter, 'models': ModelsConverter} return {'model': ModelConverter, 'models': ModelsConverter}
def _find_handler(self, return_rule=False): def _find_handler(self, return_rule=False):
return self.routing_map().bind_to_environ(request.httprequest.environ).match(return_rule=return_rule) return self.routing_map.bind_to_environ(request.httprequest.environ).match(return_rule=return_rule)
def _auth_method_user(self): def _auth_method_user(self):
request.uid = request.session.uid request.uid = request.session.uid
@@ -187,16 +188,14 @@ class ir_http(osv.AbstractModel):
except openerp.models.MissingError: except openerp.models.MissingError:
return self._handle_exception(werkzeug.exceptions.NotFound()) return self._handle_exception(werkzeug.exceptions.NotFound())
@lazy_property
def routing_map(self): def routing_map(self):
if not hasattr(self, '_routing_map'): _logger.info("Generating routing map")
_logger.info("Generating routing map") installed = request.registry._init_modules - {'web'}
installed = request.registry._init_modules - {'web'} if openerp.tools.config['test_enable']:
if openerp.tools.config['test_enable']: installed.add(openerp.modules.module.current_test)
installed.add(openerp.modules.module.current_test) mods = [''] + openerp.conf.server_wide_modules + sorted(installed)
mods = [''] + openerp.conf.server_wide_modules + sorted(installed) return http.routing_map(mods, False, converters=self._get_converters())
self._routing_map = http.routing_map(mods, False, converters=self._get_converters())
return self._routing_map
def convert_exception_to(to_type, with_message=False): def convert_exception_to(to_type, with_message=False):
""" Should only be called from an exception handler. Fetches the current """ Should only be called from an exception handler. Fetches the current
+1 -1
View File
@@ -1591,7 +1591,7 @@ class Root(object):
def get_db_router(self, db): def get_db_router(self, db):
if not db: if not db:
return self.nodb_routing_map return self.nodb_routing_map
return request.registry['ir.http'].routing_map() return request.registry['ir.http'].routing_map
def db_list(force=False, httprequest=None): def db_list(force=False, httprequest=None):
dbs = openerp.service.db.list_dbs(force) dbs = openerp.service.db.list_dbs(force)
+3 -3
View File
@@ -182,9 +182,9 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules=
report.record_result(load_test(module_name, idref, mode)) report.record_result(load_test(module_name, idref, mode))
# Python tests # Python tests
ir_http = registry['ir.http'] ir_http = registry['ir.http']
if hasattr(ir_http, '_routing_map'): # Force routing map to be rebuilt between each module test suite
# Force routing map to be rebuilt between each module test suite vars(ir_http).pop('routing_map', None)
del(ir_http._routing_map)
report.record_result(openerp.modules.module.run_unit_tests(module_name, cr.dbname)) report.record_result(openerp.modules.module.run_unit_tests(module_name, cr.dbname))
processed_modules.append(package.name) processed_modules.append(package.name)