[FIX] duplicate/rename/drop database: handle filestore
bzr revid: chs@openerp.com-20140321155659-gvg4br76214lur4l
This commit is contained in:
parent
806648d611
commit
fdd1f69294
|
@ -69,7 +69,7 @@ class ir_attachment(osv.osv):
|
||||||
|
|
||||||
@tools.ormcache()
|
@tools.ormcache()
|
||||||
def _filestore(self, cr, uid, context=None):
|
def _filestore(self, cr, uid, context=None):
|
||||||
return os.path.join(tools.config['data_dir'], 'filestore', cr.dbname)
|
return tools.config.filestore(cr.dbname)
|
||||||
|
|
||||||
# 'data' field implementation
|
# 'data' field implementation
|
||||||
def _full_path(self, cr, uid, location, path):
|
def _full_path(self, cr, uid, location, path):
|
||||||
|
|
|
@ -126,6 +126,11 @@ def exp_duplicate_database(db_original_name, db_name):
|
||||||
with closing(db.cursor()) as cr:
|
with closing(db.cursor()) as cr:
|
||||||
cr.autocommit(True) # avoid transaction block
|
cr.autocommit(True) # avoid transaction block
|
||||||
cr.execute("""CREATE DATABASE "%s" ENCODING 'unicode' TEMPLATE "%s" """ % (db_name, db_original_name))
|
cr.execute("""CREATE DATABASE "%s" ENCODING 'unicode' TEMPLATE "%s" """ % (db_name, db_original_name))
|
||||||
|
|
||||||
|
from_fs = openerp.tools.config.filestore(db_original_name)
|
||||||
|
to_fs = openerp.tools.config.filestore(db_name)
|
||||||
|
if os.path.exists(from_fs) and not os.path.exists(to_fs):
|
||||||
|
shutil.copy(from_fs, to_fs)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def exp_get_progress(id):
|
def exp_get_progress(id):
|
||||||
|
@ -178,6 +183,10 @@ def exp_drop(db_name):
|
||||||
raise Exception("Couldn't drop database %s: %s" % (db_name, e))
|
raise Exception("Couldn't drop database %s: %s" % (db_name, e))
|
||||||
else:
|
else:
|
||||||
_logger.info('DROP DB: %s', db_name)
|
_logger.info('DROP DB: %s', db_name)
|
||||||
|
|
||||||
|
fs = openerp.tools.config.filestore(db_name)
|
||||||
|
if os.path.exists(fs):
|
||||||
|
shutil.rmtree(fs)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def _set_pg_password_in_environment(func):
|
def _set_pg_password_in_environment(func):
|
||||||
|
@ -328,6 +337,11 @@ def exp_rename(old_name, new_name):
|
||||||
except Exception, e:
|
except Exception, e:
|
||||||
_logger.error('RENAME DB: %s -> %s failed:\n%s', old_name, new_name, e)
|
_logger.error('RENAME DB: %s -> %s failed:\n%s', old_name, new_name, e)
|
||||||
raise Exception("Couldn't rename database %s to %s: %s" % (old_name, new_name, e))
|
raise Exception("Couldn't rename database %s to %s: %s" % (old_name, new_name, e))
|
||||||
|
|
||||||
|
old_fs = openerp.tools.config.filestore(old_name)
|
||||||
|
new_fs = openerp.tools.config.filestore(new_name)
|
||||||
|
if os.path.exists(old_fs) and not os.path.exists(new_fs):
|
||||||
|
shutil.move(old_fs, new_fs)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@openerp.tools.mute_logger('openerp.sql_db')
|
@openerp.tools.mute_logger('openerp.sql_db')
|
||||||
|
|
|
@ -662,6 +662,9 @@ class configmanager(object):
|
||||||
os.chmod(d, 0700)
|
os.chmod(d, 0700)
|
||||||
return d
|
return d
|
||||||
|
|
||||||
|
def filestore(self, dbname):
|
||||||
|
return os.path.join(self['data_dir'], 'filestore', dbname)
|
||||||
|
|
||||||
config = configmanager()
|
config = configmanager()
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue