[IMP] list_databases: Ignore special databases
Automatically ignore template databases identified in Postgres, and databases where connexion is not allowed
This commit is contained in:
committed by
Christophe Simonis
parent
d861cdc1c4
commit
7a6e94edd8
@@ -303,7 +303,7 @@ def list_dbs(force=False):
|
||||
if not openerp.tools.config['list_db'] and not document:
|
||||
raise openerp.exceptions.AccessDenied()
|
||||
chosen_template = openerp.tools.config['db_template']
|
||||
templates_list = tuple(set(['template0', 'template1', 'postgres', chosen_template]))
|
||||
templates_list = tuple(set(['postgres', chosen_template]))
|
||||
db = openerp.sql_db.db_connect('postgres')
|
||||
with closing(db.cursor()) as cr:
|
||||
try:
|
||||
@@ -316,9 +316,9 @@ def list_dbs(force=False):
|
||||
res = cr.fetchone()
|
||||
db_user = res and str(res[0])
|
||||
if db_user:
|
||||
cr.execute("select datname from pg_database where datdba=(select usesysid from pg_user where usename=%s) and datname not in %s order by datname", (db_user, templates_list))
|
||||
cr.execute("select datname from pg_database where datdba=(select usesysid from pg_user where usename=%s) and not datistemplate and datallowconn and datname not in %s order by datname", (db_user, templates_list))
|
||||
else:
|
||||
cr.execute("select datname from pg_database where datname not in %s order by datname", (templates_list,))
|
||||
cr.execute("select datname from pg_database where not datistemplate and datallowconn and datname not in %s order by datname", (templates_list,))
|
||||
res = [openerp.tools.ustr(name) for (name,) in cr.fetchall()]
|
||||
except Exception:
|
||||
res = []
|
||||
|
||||
Reference in New Issue
Block a user