Browse Source

Fix union between recordset and parent recordset in base_exception

pull/1601/head
Florian da Costa 6 years ago
parent
commit
fe8e47674c
  1. 2
      base_exception/__manifest__.py
  2. 13
      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.1',
'version': '10.0.3.0.2',
'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, ...)""",

13
base_exception/models/base_exception.py

@ -73,6 +73,16 @@ class ExceptionRule(models.Model):
class BaseExceptionMethod(models.AbstractModel): class BaseExceptionMethod(models.AbstractModel):
_name = 'base.exception.method' _name = 'base.exception.method'
@api.multi
def _get_main_records(self):
"""
Used in case we check exception on a record but write these
exceptions on a parent record. Typical example is with
sale.order.line. We check exceptions on some sale order lines but
write these exceptions on the sale order, so they are visible.
"""
return self
@api.multi @api.multi
def _reverse_field(self): def _reverse_field(self):
raise NotImplementedError() raise NotImplementedError()
@ -98,7 +108,8 @@ class BaseExceptionMethod(models.AbstractModel):
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: if self:
commons = self & rule[reverse_field]
main_records = self._get_main_records()
commons = main_records & rule[reverse_field]
to_remove = commons - records_with_exception to_remove = commons - records_with_exception
to_add = records_with_exception - commons to_add = records_with_exception - commons
to_remove_list = [(3, x.id, _) for x in to_remove] to_remove_list = [(3, x.id, _) for x in to_remove]

Loading…
Cancel
Save