details:   https://code.tryton.org/tryton/commit/654923a8085d
branch:    default
user:      Cédric Krier <[email protected]>
date:      Mon Aug 17 17:32:55 2026 +0200
description:
        Set all attributes of transaction before connecting to the database

        The connection to the database may fail and thus stop and rollback may 
be
        called. All the attributes must be set to avoid to raise another 
AttributeError
        exception.

        Closes #15022
diffstat:

 trytond/trytond/transaction.py |  12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)

diffs (30 lines):

diff -r c883d23dcb02 -r 654923a8085d trytond/trytond/transaction.py
--- a/trytond/trytond/transaction.py    Sat Aug 01 10:21:45 2026 +0200
+++ b/trytond/trytond/transaction.py    Mon Aug 17 17:32:55 2026 +0200
@@ -187,13 +187,7 @@
             # it is strictly before all transactions started after
             # but it may be also before transactions started before
             self.started_at = self.monotonic_time()
-            if not database_name:
-                database = backend.Database().connect()
-            else:
-                database = backend.Database(database_name).connect()
-            Flavor.set(backend.Database.flavor)
             self.user = user
-            self.database = database
             self.readonly = readonly
             self.context = ImmutableDict(context or {})
             self.create_records = defaultdict(list)
@@ -206,6 +200,12 @@
             self.counter = 0
             self._datamanagers = []
 
+            if not database_name:
+                database = backend.Database().connect()
+            else:
+                database = backend.Database(database_name).connect()
+            Flavor.set(backend.Database.flavor)
+            self.database = database
             self.connection = database.get_connection(readonly=readonly,
                 autocommit=autocommit, statement_timeout=timeout)
             count = 0

Reply via email to