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
This commit is contained in:
Cédric Krier
2018-09-01 01:02:03 +02:00
parent 4be2b4ab6a
commit a0d25923ea
+11 -10
View File
@@ -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)