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)])