Fix migrator is not woking when db password contains special characters

This commit is contained in:
sepehr 2024-08-12 18:51:40 +03:30
parent 75138ab41d
commit 1ee3a621f5

View file

@ -4,10 +4,11 @@
# dbmigrate.py: migrate the local database # dbmigrate.py: migrate the local database
# - run either on dev machine or at server # - run either on dev machine or at server
# #
# Author: Tomi.Mickelsson@iki.fi # Author: Tomi.Mickelsson@iki.fi & Edited by sepehr.ha@gmail.com
import os import os
import config import config
from urllib.parse import quote
if config.DATABASE_HOST.startswith("/"): if config.DATABASE_HOST.startswith("/"):
# sqlite # sqlite
@ -16,12 +17,12 @@ if config.DATABASE_HOST.startswith("/"):
cmd = "pw_migrate migrate --directory=/app/migrations_sqlite --database=sqlite:/data/mydb.sqlite" cmd = "pw_migrate migrate --directory=/app/migrations_sqlite --database=sqlite:/data/mydb.sqlite"
else: else:
# postgresql # postgresql
cmd = "pw_migrate migrate --database=postgresql://{}:{}@{}:{}/{}".format( cmd = "pw_migrate migrate --database='postgresql://{}:{}/{}?user={}&password={}'".format(
config.DATABASE_USER,
config.DATABASE_PASSWORD,
config.DATABASE_HOST, config.DATABASE_HOST,
config.DATABASE_PORT, config.DATABASE_PORT,
config.DATABASE_NAME) config.DATABASE_NAME,
config.DATABASE_USER,
quote(config.DATABASE_PASSWORD))
print(cmd) print(cmd)