From bb2b3be3b43fe5c44c672b32fd3f564b9d64881b Mon Sep 17 00:00:00 2001 From: hugues de keyzer Date: Fri, 12 Apr 2024 09:50:37 +0200 Subject: [PATCH] allow hyphen-minus character in database names --- .../allow-minus-in-database-names.bugfix | 1 + odoo_openupgrade_wizard/tools/tools_postgres.py | 17 ++++++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) create mode 100644 newsfragments/allow-minus-in-database-names.bugfix diff --git a/newsfragments/allow-minus-in-database-names.bugfix b/newsfragments/allow-minus-in-database-names.bugfix new file mode 100644 index 0000000..f310f2a --- /dev/null +++ b/newsfragments/allow-minus-in-database-names.bugfix @@ -0,0 +1 @@ +Allow hyphen-minus character in database names. diff --git a/odoo_openupgrade_wizard/tools/tools_postgres.py b/odoo_openupgrade_wizard/tools/tools_postgres.py index fcd047e..84f8822 100644 --- a/odoo_openupgrade_wizard/tools/tools_postgres.py +++ b/odoo_openupgrade_wizard/tools/tools_postgres.py @@ -1,4 +1,5 @@ import os +import shlex import time from pathlib import Path @@ -125,7 +126,7 @@ def execute_psql_command( "psql" " --username=odoo" f" --dbname={database or 'postgres'}" - f' --command "{request}"' + f" --command {shlex.quote(request)}" f" {' '.join(psql_args)}" ) logger.debug( @@ -151,19 +152,21 @@ def ensure_database(ctx, database: str, state="present", template: str = ""): return if template: - logger.info(f"Copy database '{template}' into '{database}' ...") - request = f"CREATE DATABASE {database} WITH TEMPLATE {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;" + logger.info(f"Create database '{database}'...") + request = f'CREATE DATABASE "{database}" OWNER odoo;' execute_psql_command(ctx, request) else: if [database] not in result: return - logger.info(f"Drop database '{database}' ...") - request = f"DROP DATABASE {database};" + logger.info(f'Drop database "{database}"...') + request = f'DROP DATABASE "{database}";' execute_psql_command(ctx, request)