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 = []