changeset b5dd8008c68a in trytond:default
details: https://hg.tryton.org/trytond?cmd=changeset&node=b5dd8008c68a
description:
        Remove delete attribute and use defaultdict from Transaction

        issue10630
        review369351002
diffstat:

 doc/ref/transaction.rst   |   2 --
 trytond/model/modelsql.py |  28 ++++++++++++----------------
 trytond/transaction.py    |   7 ++-----
 3 files changed, 14 insertions(+), 23 deletions(-)

diffs (117 lines):

diff -r b799fb16468d -r b5dd8008c68a doc/ref/transaction.rst
--- a/doc/ref/transaction.rst   Mon Aug 16 23:07:06 2021 +0200
+++ b/doc/ref/transaction.rst   Mon Aug 16 23:11:38 2021 +0200
@@ -33,8 +33,6 @@
 
 .. attribute:: Transaction.delete_records
 
-.. attribute:: Transaction.delete
-
 .. attribute:: Transaction.trigger_records
 
 .. attribute:: Transaction.timestamp
diff -r b799fb16468d -r b5dd8008c68a trytond/model/modelsql.py
--- a/trytond/model/modelsql.py Mon Aug 16 23:07:06 2021 +0200
+++ b/trytond/model/modelsql.py Mon Aug 16 23:11:38 2021 +0200
@@ -363,10 +363,8 @@
             field = cls._fields[field_name]
             if isinstance(field, fields.Many2One) and values.get(field_name):
                 Model = pool.get(field.model_name)
-                create_records = transaction.create_records.get(
-                    field.model_name, set())
-                delete_records = transaction.delete_records.get(
-                    field.model_name, set())
+                create_records = transaction.create_records[field.model_name]
+                delete_records = transaction.delete_records[field.model_name]
                 target_records = Model.search([
                         ('id', '=', field.sql_format(values[field_name])),
                         ], order=[])
@@ -635,8 +633,7 @@
                         exception, values, transaction=transaction)
                 raise
 
-        transaction.create_records.setdefault(cls.__name__,
-            set()).update(new_ids)
+        transaction.create_records[cls.__name__].update(new_ids)
 
         translation_values = {}
         fields_to_set = {}
@@ -1066,11 +1063,14 @@
 
         table = cls.__table__()
 
-        if transaction.delete and transaction.delete.get(cls.__name__):
+        if cls.__name__ in transaction.delete_records:
             ids = ids[:]
-            for del_id in transaction.delete[cls.__name__]:
-                for i in range(ids.count(del_id)):
-                    ids.remove(del_id)
+            for del_id in transaction.delete_records[cls.__name__]:
+                while ids:
+                    try:
+                        ids.remove(del_id)
+                    except ValueError:
+                        break
 
         cls.__check_timestamp(ids)
         cls.__check_domain_rule(ids, 'delete')
@@ -1109,7 +1109,7 @@
                     else:
                         foreign_keys_tocheck.append((model, field_name))
 
-        transaction.delete.setdefault(cls.__name__, set()).update(ids)
+        transaction.delete_records[cls.__name__].update(ids)
         cls.trigger_delete(records)
 
         def get_related_records(Model, field_name, sub_ids):
@@ -1130,9 +1130,6 @@
             sub_ids = list(sub_ids)
             red_sql = reduce_ids(table.id, sub_ids)
 
-            transaction.delete_records.setdefault(cls.__name__,
-                set()).update(sub_ids)
-
             for Model, field_name in foreign_keys_toupdate:
                 if (not hasattr(Model, 'search')
                         or not hasattr(Model, 'write')):
@@ -1345,8 +1342,7 @@
         cache = transaction.get_cache()
         if cls.__name__ not in cache:
             cache[cls.__name__] = LRUDict(cache_size(), cls._record)
-        delete_records = transaction.delete_records.setdefault(cls.__name__,
-            set())
+        delete_records = transaction.delete_records[cls.__name__]
 
         def filter_history(rows):
             if not (cls._history and transaction.context.get('_datetime')):
diff -r b799fb16468d -r b5dd8008c68a trytond/transaction.py
--- a/trytond/transaction.py    Mon Aug 16 23:07:06 2021 +0200
+++ b/trytond/transaction.py    Mon Aug 16 23:11:38 2021 +0200
@@ -53,7 +53,6 @@
     context = None
     create_records = None
     delete_records = None
-    delete = None  # TODO check to merge with delete_records
     trigger_records = None
     timestamp = None
     started_at = None
@@ -113,9 +112,8 @@
         self.readonly = readonly
         self.close = close
         self.context = context or {}
-        self.create_records = {}
-        self.delete_records = {}
-        self.delete = {}
+        self.create_records = defaultdict(set)
+        self.delete_records = defaultdict(set)
         self.trigger_records = defaultdict(set)
         self.timestamp = {}
         self.counter = 0
@@ -159,7 +157,6 @@
                     self.context = None
                     self.create_records = None
                     self.delete_records = None
-                    self.delete = None
                     self.trigger_records = None
                     self.timestamp = None
                     self._datamanagers = []

Reply via email to