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
 |