changeset e9f3ab658e28 in modules/sale_supply_production:default
details:
https://hg.tryton.org/modules/sale_supply_production?cmd=changeset&node=e9f3ab658e28
description:
Split process method to avoid create/write in loop
issue10801
review372071002
diffstat:
sale.py | 20 ++++++++++++--------
1 files changed, 12 insertions(+), 8 deletions(-)
diffs (39 lines):
diff -r 006adae230c2 -r e9f3ab658e28 sale.py
--- a/sale.py Sun Jul 04 17:54:48 2021 +0200
+++ b/sale.py Fri Oct 08 19:21:06 2021 +0200
@@ -9,14 +9,19 @@
class Sale(metaclass=PoolMeta):
__name__ = 'sale.sale'
- def create_shipment(self, shipment_type):
- if shipment_type == 'out':
- self.create_productions()
- return super().create_shipment(shipment_type)
+ @classmethod
+ def _process_shipment(cls, sales):
+ pool = Pool()
+ Production = pool.get('production')
+
+ productions = []
+ for sale in sales:
+ productions.extend(sale.create_productions())
+ Production.save(productions)
+ Production.set_moves(productions)
+ super()._process_shipment(sales)
def create_productions(self):
- pool = Pool()
- Production = pool.get('production')
productions = []
for line in self.lines:
production = line.get_production()
@@ -26,8 +31,7 @@
production.on_change_with_planned_start_date())
productions.append(production)
assert not line.productions
- Production.save(productions)
- Production.set_moves(productions)
+ return productions
class Line(metaclass=PoolMeta):