From 0ba33d88a2a2ca471eb11797a9cf655598a26494 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 19 Dec 2013 14:45:31 +0100 Subject: [PATCH] Use a sequence of records, values in write issue3499 review1641003 --- location.py | 5 +++-- move.py | 53 +++++++++++++++++++++++++++++------------------------ product.py | 14 ++++++++------ shipment.py | 24 ++++++++++++------------ 4 files changed, 52 insertions(+), 44 deletions(-) diff --git a/location.py b/location.py index 2d9afdf422..ee59daf1e0 100644 --- a/location.py +++ b/location.py @@ -244,8 +244,9 @@ class Location(ModelSQL, ModelView): return locations @classmethod - def write(cls, locations, vals): - super(Location, cls).write(locations, vals) + def write(cls, *args): + super(Location, cls).write(*args) + locations = sum(args[::2], []) cls._set_warehouse_parent(locations) ids = [l.id for l in locations] diff --git a/move.py b/move.py index 4bb794498e..0ea11d4c43 100644 --- a/move.py +++ b/move.py @@ -660,31 +660,36 @@ class Move(Workflow, ModelSQL, ModelView): return moves @classmethod - def write(cls, moves, vals): - vals_set = set(vals) - if cls._deny_modify_assigned & vals_set: + def write(cls, *args): + actions = iter(args) + for moves, values in zip(actions, actions): + vals_set = set(values) + if cls._deny_modify_assigned & vals_set: + for move in moves: + if move.state == 'assigned': + cls.raise_user_error('modify_assigned', move.rec_name) + if cls._deny_modify_done_cancel & vals_set: + for move in moves: + if move.state in ('done', 'cancel'): + cls.raise_user_error('modify_done_cancel', + (move.rec_name,)) + + if any(f not in cls._allow_modify_closed_period for f in values): + cls.check_period_closed(moves) + + super(Move, cls).write(*args) + + actions = iter(args) + for moves, values in zip(actions, actions): for move in moves: - if move.state == 'assigned': - cls.raise_user_error('modify_assigned', (move.rec_name,)) - if cls._deny_modify_done_cancel & vals_set: - for move in moves: - if move.state in ('done', 'cancel'): - cls.raise_user_error('modify_done_cancel', - (move.rec_name,)) - - if any(f not in cls._allow_modify_closed_period for f in vals): - cls.check_period_closed(moves) - - super(Move, cls).write(moves, vals) - - for move in moves: - internal_quantity = cls._get_internal_quantity(move.quantity, - move.uom, move.product) - if (internal_quantity != move.internal_quantity - and internal_quantity != vals.get('internal_quantity')): - cls.write([move], { - 'internal_quantity': internal_quantity, - }) + internal_quantity = cls._get_internal_quantity(move.quantity, + move.uom, move.product) + if (internal_quantity != move.internal_quantity + and internal_quantity + != values.get('internal_quantity')): + cls.write([move], { + 'internal_quantity': internal_quantity, + }) @classmethod def delete(cls, moves): diff --git a/product.py b/product.py index e1987a5559..33b97afcfb 100644 --- a/product.py +++ b/product.py @@ -65,13 +65,15 @@ class Template: cls.raise_user_error(error) @classmethod - def write(cls, templates, values): + def write(cls, *args): if Transaction().user != 0: - for field, error in cls._modify_no_move: - if values.get(field): - cls.check_no_move(templates, error) - break - super(Template, cls).write(templates, values) + actions = iter(args) + for templates, values in zip(actions, actions): + for field, error in cls._modify_no_move: + if values.get(field): + cls.check_no_move(templates, error) + break + super(Template, cls).write(*args) class Product(object, StockMixin): diff --git a/shipment.py b/shipment.py index 217b251822..91007fb057 100644 --- a/shipment.py +++ b/shipment.py @@ -375,9 +375,9 @@ class ShipmentIn(Workflow, ModelSQL, ModelView): return shipments @classmethod - def write(cls, shipments, values): - super(ShipmentIn, cls).write(shipments, values) - cls._set_move_planned_date(shipments) + def write(cls, *args): + super(ShipmentIn, cls).write(*args) + cls._set_move_planned_date(sum(args[::2], [])) @classmethod def copy(cls, shipments, default=None): @@ -672,9 +672,9 @@ class ShipmentInReturn(Workflow, ModelSQL, ModelView): return shipments @classmethod - def write(cls, shipments, values): - super(ShipmentInReturn, cls).write(shipments, values) - cls._set_move_planned_date(shipments) + def write(cls, *args): + super(ShipmentInReturn, cls).write(*args) + cls._set_move_planned_date(sum(args[::2], [])) @classmethod def delete(cls, shipments): @@ -1223,9 +1223,9 @@ class ShipmentOut(Workflow, ModelSQL, ModelView): return shipments @classmethod - def write(cls, shipments, values): - super(ShipmentOut, cls).write(shipments, values) - cls._set_move_planned_date(shipments) + def write(cls, *args): + super(ShipmentOut, cls).write(*args) + cls._set_move_planned_date(sum(args[::2], [])) @classmethod def copy(cls, shipments, default=None): @@ -1581,9 +1581,9 @@ class ShipmentOutReturn(Workflow, ModelSQL, ModelView): return shipments @classmethod - def write(cls, shipments, values): - super(ShipmentOutReturn, cls).write(shipments, values) - cls._set_move_planned_date(shipments) + def write(cls, *args): + super(ShipmentOutReturn, cls).write(*args) + cls._set_move_planned_date(sum(args[::2], [])) @classmethod def copy(cls, shipments, default=None):