Browse Source

Merge PR #1620 into 10.0

Signed-off-by gurneyalex
10.0
OCA-git-bot 5 years ago
parent
commit
02d1a55068
  1. 2
      base_exception/__manifest__.py
  2. 2
      base_exception/i18n/base_exception.pot
  3. 27
      base_exception/models/base_exception.py

2
base_exception/__manifest__.py

@ -3,7 +3,7 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{'name': 'Exception Rule', {'name': 'Exception Rule',
'version': '10.0.3.0.2',
'version': '10.0.4.0.0',
'category': 'Generic Modules', 'category': 'Generic Modules',
'summary': """This module provide an abstract model to manage customizable 'summary': """This module provide an abstract model to manage customizable
exceptions to be applied on different models (sale order, invoice, ...)""", exceptions to be applied on different models (sale order, invoice, ...)""",

2
base_exception/i18n/base_exception.pot

@ -75,7 +75,7 @@ msgid "Domain"
msgstr "" msgstr ""
#. module: base_exception #. module: base_exception
#: code:addons/base_exception/models/base_exception.py:151
#: code:addons/base_exception/models/base_exception.py:145
#, python-format #, python-format
msgid "Error when evaluating the exception.rule rule:\n" msgid "Error when evaluating the exception.rule rule:\n"
" %s \n" " %s \n"

27
base_exception/models/base_exception.py

@ -99,7 +99,6 @@ class BaseExceptionMethod(models.AbstractModel):
def detect_exceptions(self): def detect_exceptions(self):
"""List all exception_ids applied on self """List all exception_ids applied on self
Exception ids are also written on records Exception ids are also written on records
If self is empty, check exceptions on all active records.
""" """
rules = self.env['exception.rule'].sudo().search( rules = self.env['exception.rule'].sudo().search(
self._rule_domain()) self._rule_domain())
@ -107,18 +106,13 @@ class BaseExceptionMethod(models.AbstractModel):
for rule in rules: for rule in rules:
records_with_exception = self._detect_exceptions(rule) records_with_exception = self._detect_exceptions(rule)
reverse_field = self._reverse_field() reverse_field = self._reverse_field()
if self:
main_records = self._get_main_records()
commons = main_records & rule[reverse_field]
to_remove = commons - records_with_exception
to_add = records_with_exception - commons
to_remove_list = [(3, x.id, _) for x in to_remove]
to_add_list = [(4, x.id, _) for x in to_add]
rule.write({reverse_field: to_remove_list + to_add_list})
else:
rule.write({
reverse_field: [(6, 0, records_with_exception.ids)]
})
main_records = self._get_main_records()
commons = main_records & rule[reverse_field]
to_remove = commons - records_with_exception
to_add = records_with_exception - commons
to_remove_list = [(3, x.id, _) for x in to_remove]
to_add_list = [(4, x.id, _) for x in to_add]
rule.write({reverse_field: to_remove_list + to_add_list})
if records_with_exception: if records_with_exception:
all_exception_ids.append(rule.id) all_exception_ids.append(rule.id)
return all_exception_ids return all_exception_ids
@ -161,16 +155,12 @@ class BaseExceptionMethod(models.AbstractModel):
@api.multi @api.multi
def _get_base_domain(self): def _get_base_domain(self):
domain = [('ignore_exception', '=', False)]
if self:
domain = osv.expression.AND([domain, [('id', 'in', self.ids)]])
return domain
return [('ignore_exception', '=', False), ('id', 'in', self.ids)]
@api.multi @api.multi
def _detect_exceptions_by_py_code(self, rule): def _detect_exceptions_by_py_code(self, rule):
""" """
Find exceptions found on self. Find exceptions found on self.
If self is empty, check on all records.
""" """
domain = self._get_base_domain() domain = self._get_base_domain()
records = self.search(domain) records = self.search(domain)
@ -184,7 +174,6 @@ class BaseExceptionMethod(models.AbstractModel):
def _detect_exceptions_by_domain(self, rule): def _detect_exceptions_by_domain(self, rule):
""" """
Find exceptions found on self. Find exceptions found on self.
If self is empty, check on all records.
""" """
base_domain = self._get_base_domain() base_domain = self._get_base_domain()
rule_domain = rule._get_domain() rule_domain = rule._get_domain()

Loading…
Cancel
Save