on_change_with of One2Many fields only supports returning a list of objects now.

This commit is contained in:
Albert Cervera i Areny 2023-08-17 19:06:58 +02:00
parent a533bec384
commit 9c9a50ba22
2 changed files with 15 additions and 22 deletions

18
bom.py
View File

@ -1,8 +1,6 @@
from trytond.model import ModelSQL, ModelView, fields, Unique from trytond.model import ModelSQL, ModelView, fields, Unique
from trytond.pyson import Eval, Bool from trytond.pyson import Eval, Bool
from trytond.pool import PoolMeta from trytond.pool import PoolMeta, Pool
__all__ = ['BOM', 'BOMDrawingLine']
class BOM(metaclass=PoolMeta): class BOM(metaclass=PoolMeta):
@ -18,17 +16,13 @@ class BOM(metaclass=PoolMeta):
@fields.depends('drawing', 'drawing_lines') @fields.depends('drawing', 'drawing_lines')
def on_change_with_drawing_lines(self): def on_change_with_drawing_lines(self):
DrawingLine = Pool().get('production.bom.drawing.line')
if not self.drawing: if not self.drawing:
to_remove = [x.id for x in self.drawing_lines] return []
return { res = []
'remove': to_remove,
}
to_add = []
for position in self.drawing.positions: for position in self.drawing.positions:
to_add.append((-1, { res.append(DrawingLine(position=position))
'position': position.id, return res
}))
return {'add': to_add}
@fields.depends('drawing') @fields.depends('drawing')
def on_change_with_drawing_image(self, name=None): def on_change_with_drawing_image(self, name=None):

View File

@ -28,18 +28,17 @@ class Production(metaclass=PoolMeta):
@fields.depends('bom', 'drawing', 'drawing_lines') @fields.depends('bom', 'drawing', 'drawing_lines')
def on_change_with_drawing_lines(self): def on_change_with_drawing_lines(self):
Line = Pool().get('production.drawing.line')
if not self.bom or not self.bom.drawing and hasattr(self, 'drawing_lines'): if not self.bom or not self.bom.drawing and hasattr(self, 'drawing_lines'):
to_remove = [x.id for x in getattr(self, 'drawing_lines', [])] return []
return { res = []
'remove': to_remove,
}
to_add = []
for line in self.bom.drawing_lines: for line in self.bom.drawing_lines:
to_add.append((-1, { res.append(Line(
'position': line.position.id, position=line.position,
'product': line.product.id if line.product else None, product=line.product,
})) ))
return {'add': to_add} return res
@fields.depends('bom') @fields.depends('bom')
def on_change_with_drawing(self): def on_change_with_drawing(self):