changeset 87d018dd40a6 in modules/sale:default
details: https://hg.tryton.org/modules/sale?cmd=changeset&node=87d018dd40a6
description:
Use declarative index definition for ModelSQL
issue5757
review361251002
diffstat:
party.py | 4 +-
product.py | 2 +-
sale.py | 82 +++++++++++++++++++++++++++++++++++++++----------------------
stock.py | 3 +-
4 files changed, 57 insertions(+), 34 deletions(-)
diffs (219 lines):
diff -r 861fdb16ed8f -r 87d018dd40a6 party.py
--- a/party.py Mon Oct 10 18:26:00 2022 +0200
+++ b/party.py Tue Oct 11 00:44:50 2022 +0200
@@ -69,7 +69,7 @@
__name__ = 'party.party.sale_method'
party = fields.Many2One(
- 'party.party', "Party", ondelete='CASCADE', select=True,
+ 'party.party', "Party", ondelete='CASCADE',
context={
'company': Eval('company', -1),
},
@@ -87,7 +87,7 @@
"Party Customer Currency"
__name__ = 'party.party.customer_currency'
party = fields.Many2One(
- 'party.party', "Party", ondelete='CASCADE', select=True)
+ 'party.party', "Party", ondelete='CASCADE')
customer_currency = customer_currency
diff -r 861fdb16ed8f -r 87d018dd40a6 product.py
--- a/product.py Mon Oct 10 18:26:00 2022 +0200
+++ b/product.py Tue Oct 11 00:44:50 2022 +0200
@@ -111,7 +111,7 @@
__name__ = 'product.lead_time'
template = fields.Many2One(
- 'product.template', "Template", ondelete='CASCADE', select=True)
+ 'product.template', "Template", ondelete='CASCADE')
lead_time = fields.TimeDelta("Lead Time")
@classmethod
diff -r 861fdb16ed8f -r 87d018dd40a6 sale.py
--- a/sale.py Mon Oct 10 18:26:00 2022 +0200
+++ b/sale.py Tue Oct 11 00:44:50 2022 +0200
@@ -12,7 +12,8 @@
from trytond.ir.attachment import AttachmentCopyMixin
from trytond.ir.note import NoteCopyMixin
from trytond.model import (
- Model, ModelSQL, ModelView, Unique, Workflow, fields, sequence_ordered)
+ Index, Model, ModelSQL, ModelView, Unique, Workflow, fields,
+ sequence_ordered)
from trytond.model.exceptions import AccessError
from trytond.modules.account.tax import TaxableMixin
from trytond.modules.account_product.exceptions import AccountError
@@ -67,7 +68,7 @@
__name__ = 'sale.sale'
_rec_name = 'number'
company = fields.Many2One(
- 'company.company', 'Company', required=True, select=True,
+ 'company.company', "Company", required=True,
states={
'readonly': (
(Eval('state') != 'draft')
@@ -76,8 +77,8 @@
| Eval('invoice_party', True)
| Eval('shipment_party', True)),
})
- number = fields.Char('Number', readonly=True, select=True)
- reference = fields.Char('Reference', select=True)
+ number = fields.Char("Number", readonly=True)
+ reference = fields.Char("Reference")
description = fields.Char('Description',
states={
'readonly': Eval('state') != 'draft',
@@ -93,7 +94,8 @@
states={
'readonly': Eval('state') != 'draft',
})
- party = fields.Many2One('party.party', 'Party', required=True, select=True,
+ party = fields.Many2One(
+ 'party.party', "Party", required=True,
states={
'readonly': ((Eval('state') != 'draft')
| (Eval('lines', [0]) & Eval('party'))),
@@ -233,7 +235,8 @@
moves = fields.Function(
fields.Many2Many('stock.move', None, None, "Moves"),
'get_moves', searcher='search_moves')
- origin = fields.Reference('Origin', selection='get_origin', select=True,
+ origin = fields.Reference(
+ "Origin", selection='get_origin',
states={
'readonly': Eval('state') != 'draft',
})
@@ -266,8 +269,27 @@
@classmethod
def __setup__(cls):
+ cls.number.search_unaccented = False
+ cls.reference.search_unaccented = False
super(Sale, cls).__setup__()
- cls.create_date.select = True
+ t = cls.__table__()
+ cls._sql_indexes.update({
+ Index(t, (t.reference, Index.Similarity())),
+ Index(t, (t.party, Index.Equality())),
+ Index(
+ t,
+ (t.state, Index.Equality()),
+ where=t.state.in_([
+ 'draft', 'quotation', 'confirmed', 'processing'])),
+ Index(
+ t,
+ (t.invoice_state, Index.Equality()),
+ where=t.state.in_(['none', 'waiting', 'exception'])),
+ Index(
+ t,
+ (t.shipment_state, Index.Equality()),
+ where=t.state.in_(['none', 'waiting', 'exception'])),
+ })
cls._order = [
('sale_date', 'DESC NULLS FIRST'),
('id', 'DESC'),
@@ -1086,27 +1108,27 @@
'Sale - Ignored Invoice'
__name__ = 'sale.sale-ignored-account.invoice'
_table = 'sale_invoice_ignored_rel'
- sale = fields.Many2One('sale.sale', 'Sale', ondelete='CASCADE',
- select=True, required=True)
- invoice = fields.Many2One('account.invoice', 'Invoice',
- ondelete='RESTRICT', select=True, required=True)
+ sale = fields.Many2One(
+ 'sale.sale', "Sale", ondelete='CASCADE', required=True)
+ invoice = fields.Many2One(
+ 'account.invoice', "Invoice", ondelete='RESTRICT', required=True)
class SaleRecreatedInvoice(ModelSQL):
'Sale - Recreated Invoice'
__name__ = 'sale.sale-recreated-account.invoice'
_table = 'sale_invoice_recreated_rel'
- sale = fields.Many2One('sale.sale', 'Sale', ondelete='CASCADE',
- select=True, required=True)
- invoice = fields.Many2One('account.invoice', 'Invoice',
- ondelete='RESTRICT', select=True, required=True)
+ sale = fields.Many2One(
+ 'sale.sale', "Sale", ondelete='CASCADE', required=True)
+ invoice = fields.Many2One(
+ 'account.invoice', "Invoice", ondelete='RESTRICT', required=True)
class SaleLine(TaxableMixin, sequence_ordered(), ModelSQL, ModelView):
'Sale Line'
__name__ = 'sale.line'
- sale = fields.Many2One('sale.sale', 'Sale', ondelete='CASCADE',
- select=True, required=True,
+ sale = fields.Many2One(
+ 'sale.sale', "Sale", ondelete='CASCADE', required=True,
states={
'readonly': ((Eval('sale_state') != 'draft')
& Bool(Eval('sale'))),
@@ -1116,7 +1138,7 @@
('subtotal', 'Subtotal'),
('title', 'Title'),
('comment', 'Comment'),
- ], 'Type', select=True, required=True,
+ ], "Type", required=True,
states={
'readonly': Eval('sale_state') != 'draft',
})
@@ -1797,10 +1819,10 @@
'Sale Line - Tax'
__name__ = 'sale.line-account.tax'
_table = 'sale_line_account_tax'
- line = fields.Many2One('sale.line', 'Sale Line', ondelete='CASCADE',
- select=True, required=True)
- tax = fields.Many2One('account.tax', 'Tax', ondelete='RESTRICT',
- select=True, required=True)
+ line = fields.Many2One(
+ 'sale.line', "Sale Line", ondelete='CASCADE', required=True)
+ tax = fields.Many2One(
+ 'account.tax', "Tax", ondelete='RESTRICT', required=True)
@classmethod
def __setup__(cls):
@@ -1816,20 +1838,20 @@
'Sale Line - Ignored Move'
__name__ = 'sale.line-ignored-stock.move'
_table = 'sale_line_moves_ignored_rel'
- sale_line = fields.Many2One('sale.line', 'Sale Line', ondelete='CASCADE',
- select=True, required=True)
- move = fields.Many2One('stock.move', 'Move', ondelete='RESTRICT',
- select=True, required=True)
+ sale_line = fields.Many2One(
+ 'sale.line', "Sale Line", ondelete='CASCADE', required=True)
+ move = fields.Many2One(
+ 'stock.move', "Move", ondelete='RESTRICT', required=True)
class SaleLineRecreatedMove(ModelSQL):
'Sale Line - Recreated Move'
__name__ = 'sale.line-recreated-stock.move'
_table = 'sale_line_moves_recreated_rel'
- sale_line = fields.Many2One('sale.line', 'Sale Line', ondelete='CASCADE',
- select=True, required=True)
- move = fields.Many2One('stock.move', 'Move', ondelete='RESTRICT',
- select=True, required=True)
+ sale_line = fields.Many2One(
+ 'sale.line', "Sale Line", ondelete='CASCADE', required=True)
+ move = fields.Many2One(
+ 'stock.move', "Move", ondelete='RESTRICT', required=True)
class SaleReport(CompanyReport):
diff -r 861fdb16ed8f -r 87d018dd40a6 stock.py
--- a/stock.py Mon Oct 10 18:26:00 2022 +0200
+++ b/stock.py Tue Oct 11 00:44:50 2022 +0200
@@ -109,7 +109,8 @@
class Move(metaclass=PoolMeta):
__name__ = 'stock.move'
- sale = fields.Function(fields.Many2One('sale.sale', 'Sale', select=True),
+ sale = fields.Function(
+ fields.Many2One('sale.sale', "Sale"),
'get_sale', searcher='search_sale')
sale_exception_state = fields.Function(fields.Selection([
('', ''),