from os import getenv from django.core.exceptions import ImproperlyConfigured DBBACKUP_CONNECTORS = { "default": { "SINGLE_TRANSACTION": False, "IF_EXISTS": True, "RESTORE_SUFFIX": "--set ON_ERROR_STOP=off", } } if getenv("DBBACKUP_HOST") and getenv("DBBACKUP_USER") and getenv("DBBACKUP_PASS"): dbbackup_server_type = getenv("DBBACKUP_TYPE", "sftp") match dbbackup_server_type: case "sftp": DBBACKUP_STORAGE = "storages.backends.sftpstorage.SFTPStorage" DBBACKUP_STORAGE_OPTIONS = { "host": getenv("DBBACKUP_HOST"), "root_path": "/db_backups/", "params": { "username": getenv("DBBACKUP_USER"), "password": getenv("DBBACKUP_PASS"), "allow_agent": False, "look_for_keys": False, }, "interactive": False, "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", } 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/"}