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:04 +02:00
parent eca8e9e1dc
commit 3db347e792
2 changed files with 15 additions and 13 deletions
+2 -1
View File
@@ -71,7 +71,8 @@ class Invoice(metaclass=PoolMeta):
def copy(cls, invoices, default=None):
if default is None:
default = {}
default = default.copy()
else:
default = default.copy()
default.setdefault('sales', None)
return super(Invoice, cls).copy(invoices, default=default)
+13 -12
View File
@@ -639,13 +639,13 @@ class Sale(Workflow, ModelSQL, ModelView, TaxableMixin):
def copy(cls, sales, default=None):
if default is None:
default = {}
default = default.copy()
default['state'] = 'draft'
default['number'] = None
default['invoice_state'] = 'none'
default['invoices_ignored'] = None
default['moves'] = None
default['shipment_state'] = 'none'
else:
default = default.copy()
default.setdefault('number', None)
default.setdefault('invoice_state', 'none')
default.setdefault('invoices_ignored', None)
default.setdefault('moves', None)
default.setdefault('shipment_state', 'none')
default.setdefault('sale_date', None)
return super(Sale, cls).copy(sales, default=default)
@@ -1505,11 +1505,12 @@ class SaleLine(sequence_ordered(), ModelSQL, ModelView):
def copy(cls, lines, default=None):
if default is None:
default = {}
default = default.copy()
default['moves'] = None
default['moves_ignored'] = None
default['moves_recreated'] = None
default['invoice_lines'] = None
else:
default = default.copy()
default.setdefault('moves', None)
default.setdefault('moves_ignored', None)
default.setdefault('moves_recreated', None)
default.setdefault('invoice_lines', None)
return super(SaleLine, cls).copy(lines, default=default)