diff --git a/queue_job/__init__.py b/queue_job/__init__.py index 19ffa60c25..6ca18c3309 100644 --- a/queue_job/__init__.py +++ b/queue_job/__init__.py @@ -4,6 +4,7 @@ from . import wizards from . import jobrunner from .post_init_hook import post_init_hook +from .post_load import post_load # shortcuts from .job import identity_exact diff --git a/queue_job/__manifest__.py b/queue_job/__manifest__.py index 62cc572fed..2e0ca6b59e 100644 --- a/queue_job/__manifest__.py +++ b/queue_job/__manifest__.py @@ -31,4 +31,5 @@ "development_status": "Mature", "maintainers": ["guewen"], "post_init_hook": "post_init_hook", + "post_load": "post_load", } diff --git a/queue_job/post_load.py b/queue_job/post_load.py new file mode 100644 index 0000000000..f0c1df870f --- /dev/null +++ b/queue_job/post_load.py @@ -0,0 +1,25 @@ +import logging + +from odoo import http + +_logger = logging.getLogger(__name__) + + +def post_load(): + _logger.info( + "Apply Request._get_session_and_dbname monkey patch to capture db" + " from request with multiple databases" + ) + _get_session_and_dbname_orig = http.Request._get_session_and_dbname + + def _get_session_and_dbname(self): + session, dbname = _get_session_and_dbname_orig(self) + if ( + not dbname + and self.httprequest.path == "/queue_job/runjob" + and self.httprequest.args.get("db") + ): + dbname = self.httprequest.args["db"] + return session, dbname + + http.Request._get_session_and_dbname = _get_session_and_dbname