summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVo Minh Thu <vmt@openerp.com>2012-11-14 13:13:08 +0100
committerVo Minh Thu <vmt@openerp.com>2012-11-14 13:13:08 +0100
commit2e6efe423bf2b3e8f50e03a233d8779ebb59666c (patch)
treef62161e8f608cf9b37dacdb6361ecb2ab13f3075
parent19011a6d760ff4c821ba26605645bf5e5ebb9e16 (diff)
parent136363aff3584cff81efa4fd8b8b6de35f89c5d9 (diff)
[MERGE] added a duplicate operation to the db service.
bzr revid: vmt@openerp.com-20121114121308-3rbf8or8u1y9t0ks
-rw-r--r--openerp/service/web_services.py15
1 files changed, 13 insertions, 2 deletions
diff --git a/openerp/service/web_services.py b/openerp/service/web_services.py
index 1eebac9a7a0..731ccbe757e 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)
@@ -152,11 +152,22 @@ 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` to `%s`.', db_original_name, db_name)
+ 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]