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).
{'name': 'Exception Rule',
'version': '10.0.3.0.2',
'version': '10.0.4.0.0',
'category': 'Generic Modules',
'summary': """This module provide an abstract model to manage customizable
exceptions to be applied on different models (sale order, invoice, ...)""",

2
base_exception/i18n/base_exception.pot

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

27
base_exception/models/base_exception.py

@ -99,7 +99,6 @@ class BaseExceptionMethod(models.AbstractModel):
def detect_exceptions(self):
"""List all exception_ids applied on self
Exception ids are also written on records
If self is empty, check exceptions on all active records.
"""
rules = self.env['exception.rule'].sudo().search(
self._rule_domain())
@ -107,18 +106,13 @@ class BaseExceptionMethod(models.AbstractModel):
for rule in rules:
records_with_exception = self._detect_exceptions(rule)
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:
all_exception_ids.append(rule.id)
return all_exception_ids
@ -161,16 +155,12 @@ class BaseExceptionMethod(models.AbstractModel):
@api.multi
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
def _detect_exceptions_by_py_code(self, rule):
"""
Find exceptions found on self.
If self is empty, check on all records.
"""
domain = self._get_base_domain()
records = self.search(domain)
@ -184,7 +174,6 @@ class BaseExceptionMethod(models.AbstractModel):
def _detect_exceptions_by_domain(self, rule):
"""
Find exceptions found on self.
If self is empty, check on all records.
"""
base_domain = self._get_base_domain()
rule_domain = rule._get_domain()

Loading…
Cancel
Save