From 4a874957edd4328ad8a7c754296b46b926aaa24a Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Sat, 23 Mar 2024 10:05:34 +0100 Subject: [PATCH 1/2] [REF] move postgres code into dedicated tools file --- .../tools/tools_click_odoo_contrib.py | 9 ++------- odoo_openupgrade_wizard/tools/tools_postgres.py | 13 ++++++++----- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/odoo_openupgrade_wizard/tools/tools_click_odoo_contrib.py b/odoo_openupgrade_wizard/tools/tools_click_odoo_contrib.py index 5343634..f828b59 100644 --- a/odoo_openupgrade_wizard/tools/tools_click_odoo_contrib.py +++ b/odoo_openupgrade_wizard/tools/tools_click_odoo_contrib.py @@ -2,10 +2,7 @@ import shutil from loguru import logger -from odoo_openupgrade_wizard.tools.tools_postgres import ( - ensure_database, - execute_sql_request, -) +from odoo_openupgrade_wizard.tools.tools_postgres import ensure_database def copydb(ctx, source, dest): @@ -13,9 +10,7 @@ def copydb(ctx, source, dest): ensure_database(ctx, dest, state="absent") # Copy database - logger.info(f"Copy database {source} into {dest} ...") - request = f"CREATE DATABASE {dest} WITH TEMPLATE {source};" - execute_sql_request(ctx, request) + ensure_database(ctx, dest, state="present", template=source) main_path = ctx.obj["filestore_folder_path"] / "filestore" source_path = main_path / source diff --git a/odoo_openupgrade_wizard/tools/tools_postgres.py b/odoo_openupgrade_wizard/tools/tools_postgres.py index e2ad0d8..185c891 100644 --- a/odoo_openupgrade_wizard/tools/tools_postgres.py +++ b/odoo_openupgrade_wizard/tools/tools_postgres.py @@ -137,7 +137,7 @@ def execute_psql_command( return docker_result.output.decode("utf-8") -def ensure_database(ctx, database: str, state="present"): +def ensure_database(ctx, database: str, state="present", template: str = ""): """ - Connect to postgres container. - Check if the database exist. @@ -152,11 +152,14 @@ def ensure_database(ctx, database: str, state="present"): if [database] in result: return - logger.info("Create database '%s' ..." % database) - request = "CREATE DATABASE {database} owner odoo;".format( - database=database - ) + if template: + logger.info(f"Copy database '{template}' into '{database}' ...") + request = f"CREATE DATABASE {database} WITH TEMPLATE {template};" + else: + logger.info(f"Create database '{database}' ...") + request = f"CREATE DATABASE {database} owner odoo;" execute_sql_request(ctx, request) + else: if [database] not in result: return From 853f37889cf15fa4c736501ef6d610118d8390e4 Mon Sep 17 00:00:00 2001 From: Sylvain LE GAL Date: Sat, 23 Mar 2024 10:18:09 +0100 Subject: [PATCH 2/2] [FIX] 'CREATE DATABASE' is a command, not a request that requires result --- odoo_openupgrade_wizard/tools/tools_postgres.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/odoo_openupgrade_wizard/tools/tools_postgres.py b/odoo_openupgrade_wizard/tools/tools_postgres.py index 185c891..00243ab 100644 --- a/odoo_openupgrade_wizard/tools/tools_postgres.py +++ b/odoo_openupgrade_wizard/tools/tools_postgres.py @@ -158,7 +158,7 @@ def ensure_database(ctx, database: str, state="present", template: str = ""): else: logger.info(f"Create database '{database}' ...") request = f"CREATE DATABASE {database} owner odoo;" - execute_sql_request(ctx, request) + execute_psql_command(ctx, request) else: if [database] not in result: @@ -166,7 +166,7 @@ def ensure_database(ctx, database: str, state="present", template: str = ""): logger.info("Drop database '%s' ..." % database) request = "DROP DATABASE {database};".format(database=database) - execute_sql_request(ctx, request) + execute_psql_command(ctx, request) def execute_sql_files_pre_migration(