odoo-saas-kubernetes/kk_odoo_saas/utils/pg_server.py

51 lines
1.7 KiB
Python
Executable File

from psycopg2 import sql, connect
import odoo
from contextlib import closing
import logging
from odoo.exceptions import AccessError, UserError
from .utils import generate_temp_password
_logger = logging.getLogger(__name__)
def drop_db(self, db_name):
if self:
child_conn = self.get_pg_db_connection(db=db_name)
child_conn.set_session(autocommit=True)
with closing(child_conn.cursor()) as cr:
odoo.service.db._drop_conn(cr, db_name)
try:
cr.execute(sql.SQL('DROP DATABASE {}').format(sql.Identifier(db_name)))
except Exception as e:
_logger.info('DROP DB: %s failed:\n%s', db_name, e)
child_conn.close()
raise UserError("Couldn't drop database %s: %s" % (db_name, e))
else:
child_conn.close()
_logger.info('DROP DB: %s', db_name)
return True
def delete_databases(self):
if self and self.client_db_name:
# dbs = get_databases(self)
drop_db(self, self.client_db_name)
def get_admin_credentials(self):
if self and self.client_db_name:
# FOR admin user_id = 2
child_conn = self.get_pg_db_connection(db=self.client_db_name)
query = sql.SQL("SELECT login, COALESCE(password, '') FROM res_users WHERE id=2;")
with closing(child_conn.cursor()) as cr:
try:
cr.execute(query)
res = cr.fetchall()
child_conn.close()
except Exception:
_logger.exception('Getting Credentials failed')
res = False
child_conn.close()
return res, self.client_db_name
return False, False