From e0e1aa5d15fcf206ba1d5c55f96ad8a9b72654d6 Mon Sep 17 00:00:00 2001 From: Vo Minh Thu Date: Fri, 19 Oct 2012 12:13:49 +0200 Subject: [PATCH 1/2] [IMP] database management: added `duplicate` operation. bzr revid: vmt@openerp.com-20121019101349-dt43p6da7avdsmk2 --- openerp/service/web_services.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/openerp/service/web_services.py b/openerp/service/web_services.py index 1eebac9a7a0..f4bcae81d03 100644 --- a/openerp/service/web_services.py +++ b/openerp/service/web_services.py @@ -103,7 +103,7 @@ class db(netsvc.ExportService): if method in [ 'create', 'get_progress', 'drop', 'dump', 'restore', 'rename', 'change_admin_password', 'migrate_databases', - 'create_database' ]: + 'create_database', 'duplicate_database' ]: passwd = params[0] params = params[1:] security.check_super(passwd) @@ -157,6 +157,17 @@ class db(netsvc.ExportService): _initialize_db(self, id, db_name, demo, lang, user_password) return True + def exp_duplicate_database(self, db_original_name, db_name): + _logger.info('Duplicate database %s', db_name.lower()) + db = sql_db.db_connect('postgres') + cr = db.cursor() + try: + cr.autocommit(True) # avoid transaction block + cr.execute("""CREATE DATABASE "%s" ENCODING 'unicode' TEMPLATE "%s" """ % (db_name, db_original_name)) + finally: + cr.close() + return True + def exp_get_progress(self, id): if self.actions[id]['thread'].isAlive(): # return openerp.modules.init_progress[db_name] From 7dcb31bcde3509d9ae57c7313f0f693185e6a0e2 Mon Sep 17 00:00:00 2001 From: Vo Minh Thu Date: Wed, 14 Nov 2012 12:25:21 +0100 Subject: [PATCH 2/2] [IMP] duplicate_database: better logging. bzr revid: vmt@openerp.com-20121114112521-g9q2n88ql9qwvlum --- openerp/service/web_services.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openerp/service/web_services.py b/openerp/service/web_services.py index f4bcae81d03..731ccbe757e 100644 --- a/openerp/service/web_services.py +++ b/openerp/service/web_services.py @@ -152,13 +152,13 @@ class db(netsvc.ExportService): self.actions[id] = {'clean': False} - _logger.info('CREATE DATABASE %s', db_name.lower()) + _logger.info('Create database `%s`.', db_name) self._create_empty_database(db_name) _initialize_db(self, id, db_name, demo, lang, user_password) return True def exp_duplicate_database(self, db_original_name, db_name): - _logger.info('Duplicate database %s', db_name.lower()) + _logger.info('Duplicate database `%s` to `%s`.', db_original_name, db_name) db = sql_db.db_connect('postgres') cr = db.cursor() try: