[IMP] database management: added `duplicate` operation.
bzr revid: vmt@openerp.com-20121019101349-dt43p6da7avdsmk2
This commit is contained in:
parent
5b166040b1
commit
e0e1aa5d15
|
@ -103,7 +103,7 @@ class db(netsvc.ExportService):
|
||||||
if method in [ 'create', 'get_progress', 'drop', 'dump',
|
if method in [ 'create', 'get_progress', 'drop', 'dump',
|
||||||
'restore', 'rename',
|
'restore', 'rename',
|
||||||
'change_admin_password', 'migrate_databases',
|
'change_admin_password', 'migrate_databases',
|
||||||
'create_database' ]:
|
'create_database', 'duplicate_database' ]:
|
||||||
passwd = params[0]
|
passwd = params[0]
|
||||||
params = params[1:]
|
params = params[1:]
|
||||||
security.check_super(passwd)
|
security.check_super(passwd)
|
||||||
|
@ -157,6 +157,17 @@ class db(netsvc.ExportService):
|
||||||
_initialize_db(self, id, db_name, demo, lang, user_password)
|
_initialize_db(self, id, db_name, demo, lang, user_password)
|
||||||
return True
|
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):
|
def exp_get_progress(self, id):
|
||||||
if self.actions[id]['thread'].isAlive():
|
if self.actions[id]['thread'].isAlive():
|
||||||
# return openerp.modules.init_progress[db_name]
|
# return openerp.modules.init_progress[db_name]
|
||||||
|
|
Loading…
Reference in New Issue