-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Signed-off-by jbeficent
- Loading branch information
Showing
19 changed files
with
792 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
=================== | ||
Base Cron Exclusion | ||
=================== | ||
|
||
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
!! This file is generated by oca-gen-addon-readme !! | ||
!! changes will be overwritten. !! | ||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png | ||
:target: https://odoo-community.org/page/development-status | ||
:alt: Beta | ||
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png | ||
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html | ||
:alt: License: AGPL-3 | ||
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github | ||
:target: https://github.com/OCA/server-tools/tree/12.0/base_cron_exclusion | ||
:alt: OCA/server-tools | ||
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png | ||
:target: https://translation.odoo-community.org/projects/server-tools-12-0/server-tools-12-0-base_cron_exclusion | ||
:alt: Translate me on Weblate | ||
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png | ||
:target: https://runbot.odoo-community.org/runbot/149/12.0 | ||
:alt: Try me on Runbot | ||
|
||
|badge1| |badge2| |badge3| |badge4| |badge5| | ||
|
||
This module extends the functionality of scheduled actions to allow you to | ||
select the ones that should not run simultaneously. | ||
|
||
**Table of contents** | ||
|
||
.. contents:: | ||
:local: | ||
|
||
Usage | ||
===== | ||
|
||
To use this module, you need to: | ||
|
||
#. Go to *Settings > Technical > Automation > Scheduled Actions*. | ||
#. In the form view go to the tab *Mutually Exclusive Scheduled Actions*. | ||
#. Fill it with the actions that should be blocked while running the action | ||
you are editing. Note that this is mutual and the selected actions will | ||
block the initial action when running. | ||
|
||
Bug Tracker | ||
=========== | ||
|
||
Bugs are tracked on `GitHub Issues <https://github.com/OCA/server-tools/issues>`_. | ||
In case of trouble, please check there if your issue has already been reported. | ||
If you spotted it first, help us smashing it by providing a detailed and welcomed | ||
`feedback <https://github.com/OCA/server-tools/issues/new?body=module:%20base_cron_exclusion%0Aversion:%2012.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_. | ||
|
||
Do not contact contributors directly about support or help with technical issues. | ||
|
||
Credits | ||
======= | ||
|
||
Authors | ||
~~~~~~~ | ||
|
||
* Eficent | ||
|
||
Contributors | ||
~~~~~~~~~~~~ | ||
|
||
* Lois Rilo <lois.rilo@eficent.com> | ||
* Jordi Ballester <jordi.ballester@eficent.com> | ||
* Bhavesh Odedra <bodedra@opensourceintegrators.com> | ||
|
||
Maintainers | ||
~~~~~~~~~~~ | ||
|
||
This module is maintained by the OCA. | ||
|
||
.. image:: https://odoo-community.org/logo.png | ||
:alt: Odoo Community Association | ||
:target: https://odoo-community.org | ||
|
||
OCA, or the Odoo Community Association, is a nonprofit organization whose | ||
mission is to support the collaborative development of Odoo features and | ||
promote its widespread use. | ||
|
||
This module is part of the `OCA/server-tools <https://github.com/OCA/server-tools/tree/12.0/base_cron_exclusion>`_ project on GitHub. | ||
|
||
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). | ||
|
||
from . import models |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# Copyright 2017 Eficent Business and IT Consulting Services S.L. | ||
# (http://www.eficent.com) | ||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). | ||
|
||
{ | ||
"name": "Base Cron Exclusion", | ||
"summary": "Allow you to select scheduled actions that should not run " | ||
"simultaneously.", | ||
"version": "12.0.1.0.0", | ||
"author": "Eficent, Odoo Community Association (OCA)", | ||
"website": "https://github.com/OCA/server-tools", | ||
"category": "Tools", | ||
"depends": [ | ||
"base", | ||
], | ||
"data": [ | ||
"views/ir_cron_view.xml", | ||
], | ||
"license": "AGPL-3", | ||
"installable": True, | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
# Translation of Odoo Server. | ||
# This file contains the translation of the following modules: | ||
# * base_cron_exclusion | ||
# | ||
msgid "" | ||
msgstr "" | ||
"Project-Id-Version: Odoo Server 12.0\n" | ||
"Report-Msgid-Bugs-To: \n" | ||
"Last-Translator: <>\n" | ||
"Language-Team: \n" | ||
"MIME-Version: 1.0\n" | ||
"Content-Type: text/plain; charset=UTF-8\n" | ||
"Content-Transfer-Encoding: \n" | ||
"Plural-Forms: \n" | ||
|
||
#. module: base_cron_exclusion | ||
#: model:ir.model.fields,field_description:base_cron_exclusion.field_ir_cron__mutually_exclusive_cron_ids | ||
#: model_terms:ir.ui.view,arch_db:base_cron_exclusion.ir_cron_view_form | ||
msgid "Mutually Exclusive Scheduled Actions" | ||
msgstr "" | ||
|
||
#. module: base_cron_exclusion | ||
#: model:ir.model,name:base_cron_exclusion.model_ir_cron | ||
msgid "Scheduled Actions" | ||
msgstr "" | ||
|
||
#. module: base_cron_exclusion | ||
#: code:addons/base_cron_exclusion/models/ir_cron.py:21 | ||
#, python-format | ||
msgid "You can not mutually exclude a scheduled actions with itself." | ||
msgstr "" | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
# Translation of Odoo Server. | ||
# This file contains the translation of the following modules: | ||
# * base_cron_exclusion | ||
# | ||
# Translators: | ||
# Lukáš Spurný <lukasspurny8@gmail.com>, 2018 | ||
msgid "" | ||
msgstr "" | ||
"Project-Id-Version: Odoo Server 11.0\n" | ||
"Report-Msgid-Bugs-To: \n" | ||
"POT-Creation-Date: 2018-03-03 10:08+0000\n" | ||
"PO-Revision-Date: 2018-03-03 10:08+0000\n" | ||
"Last-Translator: Lukáš Spurný <lukasspurny8@gmail.com>, 2018\n" | ||
"Language-Team: Czech (Czech Republic) (https://www.transifex.com/oca/" | ||
"teams/23907/cs_CZ/)\n" | ||
"Language: cs_CZ\n" | ||
"MIME-Version: 1.0\n" | ||
"Content-Type: text/plain; charset=UTF-8\n" | ||
"Content-Transfer-Encoding: \n" | ||
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" | ||
|
||
#. module: base_cron_exclusion | ||
#: model:ir.model.fields,field_description:base_cron_exclusion.field_ir_cron_mutually_exclusive_cron_ids | ||
#: model:ir.ui.view,arch_db:base_cron_exclusion.ir_cron_view | ||
msgid "Mutually Exclusive Scheduled Actions" | ||
msgstr "Vzájemně výlučné plánované akce" | ||
|
||
#. module: base_cron_exclusion | ||
#: model:ir.model,name:base_cron_exclusion.model_ir_cron | ||
msgid "Scheduled Actions" | ||
msgstr "Plánované akce" | ||
|
||
#. module: base_cron_exclusion | ||
#: code:addons/base_cron_exclusion/models/ir_cron.py:21 | ||
#, python-format | ||
msgid "You can not mutually exclude a scheduled actions with itself." | ||
msgstr "Nemůžete vzájemně vylučují naplánovaná akce se sebou samým." |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
# Translation of Odoo Server. | ||
# This file contains the translation of the following modules: | ||
# * base_cron_exclusion | ||
# | ||
# Translators: | ||
# enjolras <yo@miguelrevilla.com>, 2018 | ||
msgid "" | ||
msgstr "" | ||
"Project-Id-Version: Odoo Server 11.0\n" | ||
"Report-Msgid-Bugs-To: \n" | ||
"POT-Creation-Date: 2018-03-03 10:08+0000\n" | ||
"PO-Revision-Date: 2018-03-03 10:08+0000\n" | ||
"Last-Translator: enjolras <yo@miguelrevilla.com>, 2018\n" | ||
"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" | ||
"Language: es\n" | ||
"MIME-Version: 1.0\n" | ||
"Content-Type: text/plain; charset=UTF-8\n" | ||
"Content-Transfer-Encoding: \n" | ||
"Plural-Forms: nplurals=2; plural=(n != 1);\n" | ||
|
||
#. module: base_cron_exclusion | ||
#: model:ir.model.fields,field_description:base_cron_exclusion.field_ir_cron_mutually_exclusive_cron_ids | ||
#: model:ir.ui.view,arch_db:base_cron_exclusion.ir_cron_view | ||
msgid "Mutually Exclusive Scheduled Actions" | ||
msgstr "Acciones programadas excluyentes mutuamente" | ||
|
||
#. module: base_cron_exclusion | ||
#: model:ir.model,name:base_cron_exclusion.model_ir_cron | ||
msgid "Scheduled Actions" | ||
msgstr "Acciones programadas" | ||
|
||
#. module: base_cron_exclusion | ||
#: code:addons/base_cron_exclusion/models/ir_cron.py:21 | ||
#, python-format | ||
msgid "You can not mutually exclude a scheduled actions with itself." | ||
msgstr "No puede excluir mutuamente una acción con ella misma." |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
# Translation of Odoo Server. | ||
# This file contains the translation of the following modules: | ||
# * base_cron_exclusion | ||
# | ||
# Translators: | ||
# Quentin THEURET <odoo@kerpeo.com>, 2018 | ||
msgid "" | ||
msgstr "" | ||
"Project-Id-Version: Odoo Server 11.0\n" | ||
"Report-Msgid-Bugs-To: \n" | ||
"POT-Creation-Date: 2018-03-03 10:08+0000\n" | ||
"PO-Revision-Date: 2018-03-03 10:08+0000\n" | ||
"Last-Translator: Quentin THEURET <odoo@kerpeo.com>, 2018\n" | ||
"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" | ||
"Language: fr\n" | ||
"MIME-Version: 1.0\n" | ||
"Content-Type: text/plain; charset=UTF-8\n" | ||
"Content-Transfer-Encoding: \n" | ||
"Plural-Forms: nplurals=2; plural=(n > 1);\n" | ||
|
||
#. module: base_cron_exclusion | ||
#: model:ir.model.fields,field_description:base_cron_exclusion.field_ir_cron_mutually_exclusive_cron_ids | ||
#: model:ir.ui.view,arch_db:base_cron_exclusion.ir_cron_view | ||
msgid "Mutually Exclusive Scheduled Actions" | ||
msgstr "Actions planifiées mutuellement exclusives" | ||
|
||
#. module: base_cron_exclusion | ||
#: model:ir.model,name:base_cron_exclusion.model_ir_cron | ||
msgid "Scheduled Actions" | ||
msgstr "Actions planifiées" | ||
|
||
#. module: base_cron_exclusion | ||
#: code:addons/base_cron_exclusion/models/ir_cron.py:21 | ||
#, python-format | ||
msgid "You can not mutually exclude a scheduled actions with itself." | ||
msgstr "" | ||
"Vous ne pouvez pas exclure mutuellement une action planifiée avec elle-même." |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). | ||
|
||
from . import ir_cron |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
# Copyright 2017 Eficent Business and IT Consulting Services S.L. | ||
# (http://www.eficent.com) | ||
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). | ||
|
||
import logging | ||
|
||
from odoo import sql_db | ||
from odoo import api, fields, models, _ | ||
from odoo.exceptions import ValidationError | ||
|
||
_logger = logging.getLogger(__name__) | ||
|
||
|
||
class IrCron(models.Model): | ||
_inherit = "ir.cron" | ||
|
||
@api.constrains('mutually_exclusive_cron_ids') | ||
def _check_auto_exclusion(self): | ||
for item in self: | ||
if item in item.mutually_exclusive_cron_ids: | ||
raise ValidationError(_( | ||
"You can not mutually exclude a scheduled actions with " | ||
"itself.")) | ||
|
||
mutually_exclusive_cron_ids = fields.Many2many( | ||
comodel_name="ir.cron", relation="ir_cron_exclusion", | ||
column1="ir_cron1_id", column2="ir_cron2_id", | ||
string="Mutually Exclusive Scheduled Actions") | ||
|
||
@staticmethod | ||
def _lock_mutually_exclusive_cron(db, job_id): | ||
lock_cr = db.cursor() | ||
lock_cr.execute(""" | ||
WITH Q1 AS (SELECT ir_cron2_id as cron_id FROM ir_cron_exclusion | ||
WHERE ir_cron1_id=%s | ||
UNION ALL | ||
SELECT ir_cron1_id as cron_id FROM ir_cron_exclusion | ||
WHERE ir_cron2_id=%s) | ||
SELECT * FROM Q1 | ||
GROUP BY cron_id;""", (job_id, job_id)) | ||
locked_ids = tuple([row[0] for row in lock_cr.fetchall()]) | ||
if locked_ids: | ||
lock_cr.execute("""SELECT * | ||
FROM ir_cron | ||
WHERE numbercall != 0 | ||
AND active | ||
AND id IN %s | ||
FOR UPDATE NOWAIT""", | ||
(locked_ids,), log_exceptions=False) | ||
lock_cr.fetchall() | ||
return lock_cr | ||
|
||
@classmethod | ||
def _process_job(cls, job_cr, job, cron_cr): | ||
db = sql_db.db_connect(cls.pool._db.dbname) | ||
locked_crons = cls._lock_mutually_exclusive_cron(db, job['id']) | ||
try: | ||
res = super(IrCron, cls)._process_job(job_cr, job, cron_cr) | ||
finally: | ||
locked_crons.close() | ||
_logger.debug("released blocks for cron job %s" % job['cron_name']) | ||
return res |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
* Lois Rilo <lois.rilo@eficent.com> | ||
* Jordi Ballester <jordi.ballester@eficent.com> | ||
* Bhavesh Odedra <bodedra@opensourceintegrators.com> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
This module extends the functionality of scheduled actions to allow you to | ||
select the ones that should not run simultaneously. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
To use this module, you need to: | ||
|
||
#. Go to *Settings > Technical > Automation > Scheduled Actions*. | ||
#. In the form view go to the tab *Mutually Exclusive Scheduled Actions*. | ||
#. Fill it with the actions that should be blocked while running the action | ||
you are editing. Note that this is mutual and the selected actions will | ||
block the initial action when running. |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Oops, something went wrong.