from odoo import models, fields, api, sql_db, tools
from contextlib import closing
from odoo.exceptions import ValidationError
from odoo.service.db import _initialize_db
def change_current_database(to_database_name):
"""
切換當前數據庫
:param to_database_name: 目標數據庫
:return:
"""
tools.config['db_name'] = to_database_name
def create_empty_database(database_name):
"""
根據database_name 創建空數據庫, 參考函數odoo.service.db._create_empty_database
:param database_name: 創建空數據庫名
:return:
"""
db = sql_db.db_connect('postgres')
with closing(db.cursor()) as cr:
chosen_template = tools.config['db_template']
cr.execute("SELECT datname FROM pg_database WHERE datname = %s",
(database_name,), log_exceptions=False)
if cr.fetchall():
return False
else:
cr.autocommit(True) # avoid transaction block
collate = "LC_COLLATE 'C'" if chosen_template == 'template0' else ""
cr.execute(
"""CREATE DATABASE "%s" ENCODING 'unicode' %s TEMPLATE "%s" """ %
(database_name, collate, chosen_template)
)
return True
def create_odoo_database(database_name):
"""
創建有odoo初始數據的數據庫
:param database_name:
:return:
"""
if create_empty_database(database_name):
_initialize_db(
id,
db_name=database_name,
demo=False,
lang=None,
user_password='admin',
login='admin',
country_code=None,
phone=None
)
else:
return False