Use declarative index definition for ModelSQL

issue5757
review361251002
This commit is contained in:
Cédric Krier committed 2022-10-11 00:44:50 +02:00
1 parent a68c96e293
commit 526a009bdf
4 files changed
+57 -34

No files matched your search

+2 -2
View File
@@ -69,7 +69,7 @@ class PartySaleMethod(ModelSQL, CompanyValueMixin):
__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 @@ class PartyCustomerCurrency(ModelSQL, ValueMixin):
"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
+1 -1
View File
@@ -111,7 +111,7 @@ class ProductLeadTime(ModelSQL, ValueMixin):
__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
+52 -30
View File
@@ -12,7 +12,8 @@ from trytond.i18n import gettext
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 @@ class Sale(
__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 @@ class Sale(
| 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 @@ class Sale(
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 @@ class Sale(
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 @@ class Sale(
@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 @@ class SaleIgnoredInvoice(ModelSQL):
'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 @@ class SaleLine(TaxableMixin, sequence_ordered(), ModelSQL, ModelView):
('subtotal', 'Subtotal'),
('title', 'Title'),
('comment', 'Comment'),
], 'Type', select=True, required=True,
], "Type", required=True,
states={
'readonly': Eval('sale_state') != 'draft',
})
@@ -1797,10 +1819,10 @@ class SaleLineTax(ModelSQL):
'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 @@ class SaleLineIgnoredMove(ModelSQL):
'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):
+2 -1
View File
@@ -109,7 +109,8 @@ def process_sale_move(func):
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([
('', ''),