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)