From a0d25923ea2aa46b0ca7e85efd4aed8490adf1e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sat, 1 Sep 2018 01:02:03 +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 --- invoice.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/invoice.py b/invoice.py index 60d0b0f845..cad9b7ba59 100644 --- a/invoice.py +++ b/invoice.py @@ -1125,17 +1125,17 @@ class Invoice(Workflow, ModelSQL, ModelView, TaxableMixin): def copy(cls, invoices, default=None): if default is None: default = {} - default = default.copy() - default['state'] = 'draft' - default['number'] = None - default['move'] = None - default['cancel_move'] = None - default['invoice_report_cache'] = None - default['invoice_report_format'] = None - default['payment_lines'] = None + else: + default = default.copy() + default.setdefault('number', None) + default.setdefault('move', None) + default.setdefault('cancel_move', None) + default.setdefault('invoice_report_cache', None) + default.setdefault('invoice_report_format', None) + default.setdefault('payment_lines', None) default.setdefault('invoice_date', None) default.setdefault('accounting_date', None) - default['lines_to_pay'] = None + default.setdefault('lines_to_pay', None) return super(Invoice, cls).copy(invoices, default=default) @classmethod @@ -2042,7 +2042,8 @@ class InvoiceLine(sequence_ordered(), ModelSQL, ModelView, TaxableMixin): def copy(cls, lines, default=None): if default is None: default = {} - default = default.copy() + else: + default = default.copy() default.setdefault('origin', None) return super(InvoiceLine, cls).copy(lines, default=default)