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/__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, } 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, +)