changeset 00a9f1234b47 in trytond:default
details: https://hg.tryton.org/trytond?cmd=changeset;node=00a9f1234b47
description:
        Do not start a transaction to init database

        An uninitialized database does not have the ir_cache table so 
Transaction.start fails.

        issue8032
        review72391002
diffstat:

 trytond/admin.py             |  19 +++++++++----------
 trytond/tests/test_tryton.py |  29 +++++++++++++++++++----------
 2 files changed, 28 insertions(+), 20 deletions(-)

diffs (72 lines):

diff -r 7f7d89424789 -r 00a9f1234b47 trytond/admin.py
--- a/trytond/admin.py  Thu Jan 24 11:06:36 2019 +0100
+++ b/trytond/admin.py  Mon Jan 28 09:15:33 2019 +0100
@@ -22,16 +22,15 @@
     init = {}
     for db_name in options.database_names:
         init[db_name] = False
-        with Transaction().start(db_name, 0):
-            database = Database(db_name)
-            database.connect()
-            if options.update:
-                if not database.test():
-                    logger.info("init db")
-                    database.init()
-                    init[db_name] = True
-            elif not database.test():
-                raise Exception('"%s" is not a Tryton database.' % db_name)
+        database = Database(db_name)
+        database.connect()
+        if options.update:
+            if not database.test():
+                logger.info("init db")
+                database.init()
+                init[db_name] = True
+        elif not database.test():
+            raise Exception('"%s" is not a Tryton database.' % db_name)
 
     for db_name in options.database_names:
         if options.update:
diff -r 7f7d89424789 -r 00a9f1234b47 trytond/tests/test_tryton.py
--- a/trytond/tests/test_tryton.py      Thu Jan 24 11:06:36 2019 +0100
+++ b/trytond/tests/test_tryton.py      Mon Jan 28 09:15:33 2019 +0100
@@ -622,20 +622,29 @@
 def create_db(name=DB_NAME, lang='en'):
     Database = backend.get('Database')
     if not db_exist(name):
-        with Transaction().start(
-                None, 0, close=True, autocommit=True) as transaction:
-            transaction.database.create(transaction.connection, name)
+        database = Database()
+        database.connect()
+        connection = database.get_connection(autocommit=True)
+        try:
+            database.create(connection, name)
+        finally:
+            database.put_connection(connection, True)
 
-        with Transaction().start(name, 0) as transaction,\
-                transaction.connection.cursor() as cursor:
-            Database(name).init()
-            ir_configuration = Table('ir_configuration')
-            cursor.execute(*ir_configuration.insert(
-                    [ir_configuration.language], [[lang]]))
+        database = Database(name)
+        connection = database.get_connection()
+        try:
+            with connection.cursor() as cursor:
+                database.init()
+                ir_configuration = Table('ir_configuration')
+                cursor.execute(*ir_configuration.insert(
+                        [ir_configuration.language], [[lang]]))
+            connection.commit()
+        finally:
+            database.put_connection(connection)
 
         pool = Pool(name)
         pool.init(update=['res', 'ir'], lang=[lang])
-        with Transaction().start(name, 0) as transaction:
+        with Transaction().start(name, 0):
             User = pool.get('res.user')
             Lang = pool.get('ir.lang')
             language, = Lang.search([('code', '=', lang)])

Reply via email to