changeset ca0cd6fcd41d in modules/party_relationship:default
details: 
https://hg.tryton.org/modules/party_relationship?cmd=changeset&node=ca0cd6fcd41d
description:
        Use declarative index definition for ModelSQL

        issue5757
        review361251002
diffstat:

 party.py |  24 +++++++++++++++++-------
 1 files changed, 17 insertions(+), 7 deletions(-)

diffs (48 lines):

diff -r e3ef2a617aa3 -r ca0cd6fcd41d party.py
--- a/party.py  Tue Jun 21 10:23:30 2022 +0200
+++ b/party.py  Tue Oct 11 00:44:49 2022 +0200
@@ -9,7 +9,7 @@
 from sql.conditionals import Coalesce
 
 from trytond.config import config
-from trytond.model import ModelSQL, ModelView, fields
+from trytond.model import Index, ModelSQL, ModelView, fields
 from trytond.pool import Pool, PoolMeta
 from trytond.pyson import Eval, If
 from trytond.transaction import Transaction
@@ -44,12 +44,12 @@
     'Party Relation'
     __name__ = 'party.relation'
 
-    from_ = fields.Many2One('party.party', 'From', required=True, select=True,
-        ondelete='CASCADE')
-    to = fields.Many2One('party.party', 'To', required=True, select=True,
-        ondelete='CASCADE')
-    type = fields.Many2One('party.relation.type', 'Type', required=True,
-        select=True)
+    from_ = fields.Many2One(
+        'party.party', "From", required=True, ondelete='CASCADE')
+    to = fields.Many2One(
+        'party.party', "To", required=True, ondelete='CASCADE')
+    type = fields.Many2One(
+        'party.relation.type', 'Type', required=True)
     start_date = fields.Date(
         "Start Date",
         domain=[
@@ -66,6 +66,16 @@
             ])
     active = fields.Function(fields.Boolean("Active"), 'get_active')
 
+    @classmethod
+    def __setup__(cls):
+        super().__setup__()
+        if not callable(cls.table_query):
+            t = cls.__table__()
+            cls._sql_indexes.update({
+                    Index(t, (t.from_, Index.Equality())),
+                    Index(t, (t.to, Index.Equality())),
+                    })
+
     def get_active(self, name):
         pool = Pool()
         Date = pool.get('ir.date')

Reply via email to