From e32d84334ae8a5535400cb75f212db78f9e2ff7f Mon Sep 17 00:00:00 2001 From: Peter Hahn Date: Thu, 25 Feb 2021 11:18:46 +0100 Subject: [PATCH 1/2] [MIG] Bump version. Set module installable. Check migration guide. --- queue_job_cron/__manifest__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/queue_job_cron/__manifest__.py b/queue_job_cron/__manifest__.py index 24f7e3233f..11786d5c03 100644 --- a/queue_job_cron/__manifest__.py +++ b/queue_job_cron/__manifest__.py @@ -3,12 +3,12 @@ { "name": "Scheduled Actions as Queue Jobs", - "version": "13.0.2.1.0", + "version": "14.0.1.0.0", "author": "ACSONE SA/NV,Odoo Community Association (OCA)", "website": "https://github.com/OCA/queue", "license": "AGPL-3", "category": "Generic Modules", "depends": ["queue_job"], "data": ["data/data.xml", "views/ir_cron_view.xml"], - "installable": False, + "installable": True, } From dca7862c93a13f810aeae27ceeb218e14bfc7cde Mon Sep 17 00:00:00 2001 From: Peter Hahn Date: Thu, 25 Feb 2021 12:32:00 +0100 Subject: [PATCH 2/2] [FIX] Respect `cron.user_id` for manually triggered queue jobs --- .pre-commit-config.yaml | 1 - queue_job/__init__.py | 2 +- queue_job/models/queue_job.py | 1 - queue_job/{hooks => }/post_init_hook.py | 0 queue_job/tests/common.py | 2 +- queue_job_cron/models/ir_cron.py | 21 ++++++++++++------- .../queue_job_cron/odoo/addons/queue_job_cron | 1 + setup/queue_job_cron/setup.py | 6 ++++++ 8 files changed, 22 insertions(+), 12 deletions(-) rename queue_job/{hooks => }/post_init_hook.py (100%) create mode 120000 setup/queue_job_cron/odoo/addons/queue_job_cron create mode 100644 setup/queue_job_cron/setup.py diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 0e1c57bc07..ee83c5360f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,7 +3,6 @@ exclude: | # NOT INSTALLABLE ADDONS ^base_export_async/| ^base_import_async/| - ^queue_job_cron/| ^queue_job_subscribe/| ^test_base_import_async/| # END NOT INSTALLABLE ADDONS diff --git a/queue_job/__init__.py b/queue_job/__init__.py index 75f80cf5aa..19ffa60c25 100644 --- a/queue_job/__init__.py +++ b/queue_job/__init__.py @@ -3,7 +3,7 @@ from . import models from . import wizards from . import jobrunner -from .hooks.post_init_hook import post_init_hook +from .post_init_hook import post_init_hook # shortcuts from .job import identity_exact diff --git a/queue_job/models/queue_job.py b/queue_job/models/queue_job.py index bdde5e0f7b..157e4d8cbc 100644 --- a/queue_job/models/queue_job.py +++ b/queue_job/models/queue_job.py @@ -296,7 +296,6 @@ def autovacuum(self): ) if jobs: jobs.unlink() - self.env.cr.commit() else: break return True diff --git a/queue_job/hooks/post_init_hook.py b/queue_job/post_init_hook.py similarity index 100% rename from queue_job/hooks/post_init_hook.py rename to queue_job/post_init_hook.py diff --git a/queue_job/tests/common.py b/queue_job/tests/common.py index 175e75a314..cdb2e4e8e3 100644 --- a/queue_job/tests/common.py +++ b/queue_job/tests/common.py @@ -4,7 +4,7 @@ import mock -from odoo.addons.queue_job.job import Job +from ..job import Job class JobCounter: diff --git a/queue_job_cron/models/ir_cron.py b/queue_job_cron/models/ir_cron.py index 862df97eec..440740f164 100644 --- a/queue_job_cron/models/ir_cron.py +++ b/queue_job_cron/models/ir_cron.py @@ -32,14 +32,19 @@ def _run_job_as_queue_job(self, server_action): return server_action.run() def method_direct_trigger(self): - if self.run_as_queue_job: - return self.with_delay( - priority=self.priority, - description=self.name, - channel=self.channel_id.complete_name, - )._run_job_as_queue_job(server_action=self.ir_actions_server_id) - else: - return super().method_direct_trigger() + for cron in self: + if not cron.run_as_queue_job: + super(IrCron, cron).method_direct_trigger() + else: + _cron = cron.with_user(cron.user_id).with_context( + lastcall=cron.lastcall + ) + _cron.with_delay( + priority=_cron.priority, + description=_cron.name, + channel=_cron.channel_id.complete_name, + )._run_job_as_queue_job(server_action=_cron.ir_actions_server_id) + return True def _callback(self, cron_name, server_action_id, job_id): cron = self.env["ir.cron"].sudo().browse(job_id) diff --git a/setup/queue_job_cron/odoo/addons/queue_job_cron b/setup/queue_job_cron/odoo/addons/queue_job_cron new file mode 120000 index 0000000000..f5adafb380 --- /dev/null +++ b/setup/queue_job_cron/odoo/addons/queue_job_cron @@ -0,0 +1 @@ +../../../../queue_job_cron \ No newline at end of file diff --git a/setup/queue_job_cron/setup.py b/setup/queue_job_cron/setup.py new file mode 100644 index 0000000000..28c57bb640 --- /dev/null +++ b/setup/queue_job_cron/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +)