51 lines
1.7 KiB
Python
Executable File
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
|