From 3ff3b3b419b7490efe2b8ee53cee3490661be3fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20=C3=89vrard?= Date: Fri, 8 Apr 2022 19:07:13 +0200 Subject: [PATCH] Send only the required fields when fetching a readonly view definition issue11134 review380081002 --- configuration.py | 3 +- party.py | 4 +-- product.py | 15 ++++----- purchase.py | 81 +++++++++++++++++------------------------------- stock.py | 6 ++-- 5 files changed, 40 insertions(+), 69 deletions(-) diff --git a/configuration.py b/configuration.py index a36bfd16b0..10cdf296ae 100644 --- a/configuration.py +++ b/configuration.py @@ -70,8 +70,7 @@ class ConfigurationSequence(ModelSQL, CompanyValueMixin): ('company', 'in', [Eval('company', -1), None]), ('sequence_type', '=', Id('purchase', 'sequence_type_purchase')), - ], - depends=['company']) + ]) @classmethod def __register__(cls, module_name): diff --git a/party.py b/party.py index a0a8b2f4f3..cff652b7e8 100644 --- a/party.py +++ b/party.py @@ -39,7 +39,7 @@ class CustomerCode(ModelSQL, CompanyValueMixin): context={ 'company': Eval('company', -1), }, - depends=['company']) + depends={'company'}) customer_code = fields.Char('Customer Code') @@ -51,7 +51,7 @@ class SupplierLeadTime(ModelSQL, CompanyValueMixin): context={ 'company': Eval('company', -1), }, - depends=['company']) + depends={'company'}) supplier_lead_time = fields.TimeDelta("Lead Time") diff --git a/product.py b/product.py index 07c42f987e..fde5b6ff06 100644 --- a/product.py +++ b/product.py @@ -30,14 +30,12 @@ class Template(metaclass=PoolMeta): }, domain=[ If(~Eval('active'), ('active', '=', False), ()), - ], - depends=['purchasable', 'active']) + ]) purchase_uom = fields.Many2One('product.uom', 'Purchase UOM', states={ 'invisible': ~Eval('purchasable'), 'required': Eval('purchasable', False), }, - domain=[('category', '=', Eval('default_uom_category'))], - depends=['purchasable', 'default_uom_category']) + domain=[('category', '=', Eval('default_uom_category'))]) @fields.depends('default_uom', 'purchase_uom', 'purchasable') def on_change_default_uom(self): @@ -127,8 +125,7 @@ class Product(metaclass=PoolMeta): states={ 'invisible': (~Eval('purchasable', False) | ~Eval('context', {}).get('company')), - }, - depends=['template', 'purchasable', 'active']) + }) purchase_price_uom = fields.Function(fields.Numeric( "Purchase Price", digits=price_digits), 'get_purchase_price_uom') @@ -262,7 +259,7 @@ class ProductSupplier( context={ 'company': Eval('company', -1), }, - depends=['product', 'active', 'company']) + depends={'company'}) product = fields.Many2One( 'product.product', "Variant", select=True, domain=[ @@ -274,14 +271,14 @@ class ProductSupplier( context={ 'company': Eval('company', -1), }, - depends=['template', 'active', 'company']) + depends={'company'}) party = fields.Many2One( 'party.party', 'Supplier', required=True, ondelete='CASCADE', select=True, context={ 'company': Eval('company', -1), }, - depends=['company']) + depends={'company'}) name = fields.Char('Name', size=None, translate=True, select=True) code = fields.Char('Code', size=None, select=True) prices = fields.One2Many('purchase.product_supplier.price', diff --git a/purchase.py b/purchase.py index d41ef2880a..a6adcec813 100644 --- a/purchase.py +++ b/purchase.py @@ -73,7 +73,6 @@ class Purchase( _states = { 'readonly': Eval('state') != 'draft', } - _depends = ['state'] company = fields.Many2One( 'company.company', "Company", required=True, select=True, @@ -83,24 +82,20 @@ class Purchase( | Eval('lines', [0]) | Eval('party', True) | Eval('invoice_party', True)), - }, - depends=['state']) + }) number = fields.Char('Number', size=None, readonly=True, select=True) reference = fields.Char('Reference', select=True) - description = fields.Char('Description', size=None, states=_states, - depends=_depends) + description = fields.Char('Description', size=None, states=_states) purchase_date = fields.Date('Purchase Date', states={ 'readonly': ~Eval('state').in_(['draft', 'quotation']), 'required': ~Eval('state').in_( ['draft', 'quotation', 'cancelled']), - }, - depends=['state']) + }) payment_term = fields.Many2One('account.invoice.payment_term', 'Payment Term', states={ 'readonly': ~Eval('state').in_(['draft', 'quotation']), - }, - depends=['state']) + }) party = fields.Many2One('party.party', 'Party', required=True, states={ 'readonly': ((Eval('state') != 'draft') @@ -109,7 +104,7 @@ class Purchase( context={ 'company': Eval('company', -1), }, - select=True, depends=['state', 'company']) + select=True, depends={'company'}) party_lang = fields.Function(fields.Char('Party Language'), 'on_change_with_party_lang') contact = fields.Many2One( @@ -120,7 +115,7 @@ class Purchase( search_context={ 'related_party': Eval('party'), }, - depends=['party', 'company']) + depends={'company'}) invoice_party = fields.Many2One('party.party', "Invoice Party", states={ 'readonly': ((Eval('state') != 'draft') @@ -132,7 +127,7 @@ class Purchase( search_context={ 'related_party': Eval('party'), }, - depends=['state', 'party', 'company']) + depends={'company'}) invoice_address = fields.Many2One('party.address', 'Invoice Address', domain=[ ('party', '=', If(Bool(Eval('invoice_party')), @@ -142,19 +137,16 @@ class Purchase( 'readonly': Eval('state') != 'draft', 'required': ~Eval('state').in_( ['draft', 'quotation', 'cancelled']), - }, - depends=['party', 'invoice_party', 'state']) + }) warehouse = fields.Many2One('stock.location', 'Warehouse', - domain=[('type', '=', 'warehouse')], states=_states, - depends=_depends) + domain=[('type', '=', 'warehouse')], states=_states) currency = fields.Many2One('currency.currency', 'Currency', required=True, states={ 'readonly': ((Eval('state') != 'draft') | (Eval('lines', [0]) & Eval('currency'))), - }, - depends=['state']) + }) lines = fields.One2Many('purchase.line', 'purchase', 'Lines', - states=_states, depends=_depends) + states=_states) comment = fields.Text('Comment') untaxed_amount = fields.Function(Monetary( "Untaxed", currency='currency', digits='currency'), @@ -175,8 +167,7 @@ class Purchase( ('manual', 'Manual'), ('order', 'Based On Order'), ('shipment', 'Based On Shipment'), - ], 'Invoice Method', required=True, states=_states, - depends=_depends) + ], 'Invoice Method', required=True, states=_states) invoice_state = fields.Selection([ ('none', 'None'), ('waiting', 'Waiting'), @@ -195,15 +186,13 @@ class Purchase( origin = fields.Reference('Origin', selection='get_origin', select=True, states={ 'readonly': Eval('state') != 'draft', - }, - depends=['state']) + }) delivery_date = fields.Date( "Delivery Date", states={ 'readonly': Eval('state').in_([ 'processing', 'done', 'cancelled']), }, - depends=['state'], help="The default delivery date for each line.") shipment_state = fields.Selection([ ('none', 'None'), @@ -236,7 +225,7 @@ class Purchase( ('cancelled', "Cancelled"), ], "State", readonly=True, required=True, sort=False) - del _states, _depends + del _states @classmethod def __setup__(cls): @@ -1038,8 +1027,7 @@ class Line(sequence_ordered(), ModelSQL, ModelView): states={ 'readonly': ((Eval('purchase_state') != 'draft') & Bool(Eval('purchase'))), - }, - depends=['purchase_state']) + }) type = fields.Selection([ ('line', 'Line'), ('subtotal', 'Subtotal'), @@ -1048,22 +1036,19 @@ class Line(sequence_ordered(), ModelSQL, ModelView): ], 'Type', select=True, required=True, states={ 'readonly': Eval('purchase_state') != 'draft', - }, - depends=['purchase_state']) + }) quantity = fields.Float( "Quantity", digits='unit', states={ 'invisible': Eval('type') != 'line', 'required': Eval('type') == 'line', 'readonly': Eval('purchase_state') != 'draft', - }, - depends=['type', 'purchase_state']) + }) actual_quantity = fields.Float( "Actual Quantity", digits='unit', readonly=True, states={ 'invisible': Eval('type') != 'line', - }, - depends=['type']) + }) unit = fields.Many2One('product.uom', 'Unit', ondelete='RESTRICT', states={ @@ -1075,8 +1060,7 @@ class Line(sequence_ordered(), ModelSQL, ModelView): If(Bool(Eval('product_uom_category')), ('category', '=', Eval('product_uom_category')), ('category', '!=', -1)), - ], - depends=['product', 'type', 'product_uom_category', 'purchase_state']) + ]) product = fields.Many2One('product.product', 'Product', ondelete='RESTRICT', domain=[ @@ -1107,7 +1091,7 @@ class Line(sequence_ordered(), ModelSQL, ModelView): 'taxes': Eval('taxes', []), 'quantity': Eval('quantity'), }, - depends=['type', 'purchase_state', 'product_supplier', 'company']) + depends={'company'}) product_supplier = fields.Many2One( 'purchase.product_supplier', "Supplier's Product", ondelete='RESTRICT', @@ -1126,8 +1110,7 @@ class Line(sequence_ordered(), ModelSQL, ModelView): states={ 'invisible': Eval('type') != 'line', 'readonly': Eval('purchase_state') != 'draft', - }, - depends=['product', 'type', 'purchase_state', 'purchase']) + }) product_uom_category = fields.Function( fields.Many2One('product.uom.category', 'Product Uom Category'), 'on_change_with_product_uom_category') @@ -1137,18 +1120,17 @@ class Line(sequence_ordered(), ModelSQL, ModelView): 'invisible': Eval('type') != 'line', 'required': Eval('type') == 'line', 'readonly': Eval('purchase_state') != 'draft', - }, depends=['type', 'purchase_state']) + }) amount = fields.Function(Monetary( "Amount", currency='currency', digits='currency', states={ 'invisible': ~Eval('type').in_(['line', 'subtotal']), - }, - depends=['type']), 'get_amount') + }), + 'get_amount') description = fields.Text('Description', size=None, states={ 'readonly': Eval('purchase_state') != 'draft', - }, - depends=['purchase_state']) + }) summary = fields.Function(fields.Char('Summary'), 'on_change_with_summary') note = fields.Text('Note') taxes = fields.Many2Many('purchase.line-account.tax', @@ -1163,8 +1145,7 @@ class Line(sequence_ordered(), ModelSQL, ModelView): states={ 'invisible': Eval('type') != 'line', 'readonly': Eval('purchase_state') != 'draft', - }, - depends=['type', 'purchase_state', 'purchase']) + }) invoice_lines = fields.One2Many('account.invoice.line', 'origin', 'Invoice Lines', readonly=True) moves = fields.One2Many('stock.move', 'origin', 'Moves', readonly=True) @@ -1185,8 +1166,7 @@ class Line(sequence_ordered(), ModelSQL, ModelView): | (Eval('delivery_date_edit', False) & ~Eval('purchase_state').in_( ['processing', 'done', 'cancelled']))), - }, - depends=['type', 'delivery_date_edit', 'purchase_state']), + }), 'on_change_with_delivery_date') delivery_date_edit = fields.Boolean( "Edit Delivery Date", @@ -1195,7 +1175,6 @@ class Line(sequence_ordered(), ModelSQL, ModelView): 'readonly': Eval('purchase_state').in_([ 'processing', 'done', 'cancelled']), }, - depends=['type', 'purchase_state'], help="Check to edit the delivery date.") delivery_date_store = fields.Date( "Delivery Date", @@ -1206,8 +1185,7 @@ class Line(sequence_ordered(), ModelSQL, ModelView): ['processing', 'done', 'cancelled'])), 'readonly': Eval('purchase_state').in_([ 'processing', 'done', 'cancelled']), - }, - depends=['type', 'delivery_date_edit', 'purchase_state']) + }) purchase_state = fields.Function( fields.Selection('get_purchase_states', 'Purchase State'), 'on_change_with_purchase_state') @@ -1878,7 +1856,7 @@ class HandleShipmentExceptionAsk(ModelView): __name__ = 'purchase.handle.shipment.exception.ask' recreate_moves = fields.Many2Many( 'stock.move', None, None, 'Recreate Moves', - domain=[('id', 'in', Eval('domain_moves'))], depends=['domain_moves'], + domain=[('id', 'in', Eval('domain_moves'))], help=('The selected moves will be recreated. ' 'The other ones will be ignored.')) domain_moves = fields.Many2Many( @@ -1942,7 +1920,6 @@ class HandleInvoiceExceptionAsk(ModelView): recreate_invoices = fields.Many2Many( 'account.invoice', None, None, 'Recreate Invoices', domain=[('id', 'in', Eval('domain_invoices'))], - depends=['domain_invoices'], help=('The selected invoices will be recreated. ' 'The other ones will be ignored.')) domain_invoices = fields.Many2Many( diff --git a/stock.py b/stock.py index 9fe762be43..cd3e90dda2 100644 --- a/stock.py +++ b/stock.py @@ -50,8 +50,7 @@ class ShipmentIn(metaclass=PoolMeta): add_remove, cls.incoming_moves.add_remove, ] - if 'supplier' not in cls.incoming_moves.depends: - cls.incoming_moves.depends.append('supplier') + cls.incoming_moves.depends.add('supplier') @classmethod @ModelView.button @@ -170,7 +169,7 @@ class Move(metaclass=PoolMeta): context={ 'company': Eval('company', -1), }, - depends=['company']), + depends={'company'}), 'get_supplier', searcher='search_supplier') purchase_exception_state = fields.Function(fields.Selection([ ('', ''), @@ -274,5 +273,4 @@ class Location(metaclass=PoolMeta): ('type', '=', 'storage'), ('parent', 'child_of', [Eval('id', -1)]), ], - depends=['type', 'id'], help='If empty the Storage location is used.')