From c85a77d2d36b36e412186cbb82d703c87dd62e8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sat, 1 Sep 2018 01:02:04 +0200 Subject: [PATCH] Improve ModelStorage.copy * Allow callable in copy default * Support dotted notation in copy default * Use setdefault in copy * Copy default when needed * Do not set default state in copy * Use callable and dotted notation in copy default issue5576 issue7648 review72291002 --- forecast.py | 25 +++---------------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/forecast.py b/forecast.py index c769ba6789..4325f8a6ad 100644 --- a/forecast.py +++ b/forecast.py @@ -245,26 +245,6 @@ class Forecast(Workflow, ModelSQL, ModelView): Line = Pool().get('stock.forecast.line') Line.delete_moves([l for f in forecasts for l in f.lines]) - @classmethod - def copy(cls, forecasts, default=None): - Line = Pool().get('stock.forecast.line') - - if default is None: - default = {} - default = default.copy() - default['lines'] = None - - new_forecasts = [] - for forecast in forecasts: - new_forecast, = super(Forecast, cls).copy([forecast], - default=default) - Line.copy([x for x in forecast.lines], - default={ - 'forecast': new_forecast.id, - }) - new_forecasts.append(new_forecast) - return new_forecasts - class ForecastLine(ModelSQL, ModelView): 'Stock Forecast Line' @@ -424,8 +404,9 @@ class ForecastLine(ModelSQL, ModelView): def copy(cls, lines, default=None): if default is None: default = {} - default = default.copy() - default['moves'] = None + else: + default = default.copy() + default.setdefault('moves', None) return super(ForecastLine, cls).copy(lines, default=default) def get_moves(self):