changeset 24aa9865c54e in modules/production_work:default
details:
https://hg.tryton.org/modules/production_work?cmd=changeset&node=24aa9865c54e
description:
Use declarative index definition for ModelSQL
issue5757
review361251002
diffstat:
work.py | 32 ++++++++++++++++++++------------
1 files changed, 20 insertions(+), 12 deletions(-)
diffs (95 lines):
diff -r 2ee8763d550f -r 24aa9865c54e work.py
--- a/work.py Mon May 02 17:54:38 2022 +0200
+++ b/work.py Tue Oct 11 00:44:50 2022 +0200
@@ -7,8 +7,8 @@
from trytond.i18n import gettext
from trytond.model import (
- DeactivableMixin, ModelSQL, ModelView, Workflow, fields, sequence_ordered,
- tree)
+ DeactivableMixin, Index, ModelSQL, ModelView, Workflow, fields,
+ sequence_ordered, tree)
from trytond.model.exceptions import AccessError
from trytond.modules.product import price_digits, round_price
from trytond.pool import Pool
@@ -28,7 +28,7 @@
'Work Center'
__name__ = 'production.work.center'
name = fields.Char('Name', required=True, translate=True)
- parent = fields.Many2One('production.work.center', 'Parent', select=True,
+ parent = fields.Many2One('production.work.center', 'Parent',
domain=[
('company', '=', Eval('company', -1)),
('warehouse', '=', Eval('warehouse', -1)),
@@ -51,8 +51,7 @@
states={
'required': Bool(Eval('cost_price')),
})
- company = fields.Many2One('company.company', 'Company', required=True,
- select=True)
+ company = fields.Many2One('company.company', "Company", required=True)
warehouse = fields.Many2One('stock.location', 'Warehouse', required=True,
domain=[
('type', '=', 'warehouse'),
@@ -100,8 +99,8 @@
__name__ = 'production.work'
operation = fields.Many2One('production.routing.operation', 'Operation',
required=True)
- production = fields.Many2One('production', 'Production', required=True,
- select=True, ondelete='CASCADE',
+ production = fields.Many2One(
+ 'production', "Production", required=True, ondelete='CASCADE',
domain=[
('company', '=', Eval('company', -1)),
])
@@ -129,8 +128,7 @@
filter=[
('state', '=', 'running'),
])
- company = fields.Many2One('company.company', 'Company', required=True,
- select=True)
+ company = fields.Many2One('company.company', "Company", required=True)
warehouse = fields.Function(fields.Many2One('stock.location', 'Warehouse'),
'on_change_with_warehouse')
state = fields.Selection([
@@ -140,11 +138,16 @@
('running', 'Running'),
('finished', 'Finished'),
('done', 'Done'),
- ], "State", select=True, readonly=True, sort=False)
+ ], "State", readonly=True, sort=False)
@classmethod
def __setup__(cls):
super().__setup__()
+ t = cls.__table__()
+ cls._sql_indexes.add(
+ Index(
+ t, (t.state, Index.Equality()),
+ where=t.state.in_(['request', 'draft', 'waiting', 'running'])))
cls._buttons.update({
'start': {
'invisible': Bool(Eval('active_cycles', [])),
@@ -270,8 +273,8 @@
class WorkCycle(Workflow, ModelSQL, ModelView):
'Work Cycle'
__name__ = 'production.work.cycle'
- work = fields.Many2One('production.work', 'Work', required=True,
- ondelete='CASCADE', select=True)
+ work = fields.Many2One(
+ 'production.work', "Work", required=True, ondelete='CASCADE')
duration = fields.TimeDelta('Duration',
states={
'required': Eval('state') == 'done',
@@ -288,6 +291,11 @@
@classmethod
def __setup__(cls):
super(WorkCycle, cls).__setup__()
+ t = cls.__table__()
+ cls._sql_indexes.add(
+ Index(
+ t, (t.state, Index.Equality()),
+ where=t.state.in_(['draft', 'running'])))
cls._transitions |= set((
('draft', 'running'),
('running', 'done'),