diff --git a/evibes/settings/dbbackup.py b/evibes/settings/dbbackup.py index bedd7fcf..f0278262 100644 --- a/evibes/settings/dbbackup.py +++ b/evibes/settings/dbbackup.py @@ -1,5 +1,4 @@ from os import getenv - from django.core.exceptions import ImproperlyConfigured DBBACKUP_CONNECTORS = { @@ -12,12 +11,18 @@ DBBACKUP_CONNECTORS = { if getenv("DBBACKUP_HOST") and getenv("DBBACKUP_USER") and getenv("DBBACKUP_PASS"): dbbackup_server_type = getenv("DBBACKUP_TYPE", "sftp") + project_name = getenv("EVIBES_PROJECT_NAME", "evibes_common").lower().replace(" ", "_") + + raw_path = getenv("DBBACKUP_PATH", f"backups/{project_name}") + cleaned = raw_path.strip("/") + remote_dir = f"{cleaned}/" + match dbbackup_server_type: case "sftp": DBBACKUP_STORAGE = "storages.backends.sftpstorage.SFTPStorage" DBBACKUP_STORAGE_OPTIONS = { "host": getenv("DBBACKUP_HOST"), - "root_path": "/db_backups/", + "root_path": f"/{remote_dir}", "params": { "username": getenv("DBBACKUP_USER"), "password": getenv("DBBACKUP_PASS"), @@ -28,13 +33,23 @@ if getenv("DBBACKUP_HOST") and getenv("DBBACKUP_USER") and getenv("DBBACKUP_PASS "file_mode": 0o600, "dir_mode": 0o700, } + case "ftp": DBBACKUP_STORAGE = "storages.backends.ftp.FTPStorage" DBBACKUP_STORAGE_OPTIONS = { - "location": f"ftp://{getenv('DBBACKUP_USER')}:{getenv('DBBACKUP_PASS')}@{getenv('DBBACKUP_HOST')}:21", + "location": ( + f"ftp://{getenv('DBBACKUP_USER')}:" + f"{getenv('DBBACKUP_PASS')}@" + f"{getenv('DBBACKUP_HOST')}:21/" + f"{remote_dir}" + ), } + case _: raise ImproperlyConfigured(f"Invalid DBBACKUP_TYPE: {dbbackup_server_type}") + else: DBBACKUP_STORAGE = "django.core.files.storage.FileSystemStorage" - DBBACKUP_STORAGE_OPTIONS = {"location": "/app/db_backups/"} + DBBACKUP_STORAGE_OPTIONS = { + "location": "/app/backups/", + }