[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:
Lionel Sausin (Numérigraphe)
2015-08-17 15:17:51 +02:00
committed by Christophe Simonis
parent d861cdc1c4
commit 7a6e94edd8
+3 -3
View File
@@ -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 = []