diff --git a/aleksis/core/settings.py b/aleksis/core/settings.py index ec1dc61ed4ae61f4d9566b4ce8c7991a709726cb..dbf35a7bd5cc834cdd174444a0b9fc6a550f8f9d 100644 --- a/aleksis/core/settings.py +++ b/aleksis/core/settings.py @@ -413,6 +413,8 @@ DBBACKUP_COMPRESS_DB = _settings.get("backup.database.compress", True) DBBACKUP_ENCRYPT_DB = _settings.get("backup.database.encrypt", DBBACKUP_GPG_RECIPIENT is not None) DBBACKUP_COMPRESS_MEDIA = _settings.get("backup.media.compress", True) DBBACKUP_ENCRYPT_MEDIA = _settings.get("backup.media.encrypt", DBBACKUP_GPG_RECIPIENT is not None) +DBBACKUP_CLEANUP_DB = _settings.get("backup.database.clean", True) +DBBACKUP_CLEANUP_MEDIA = _settings.get("backup.media.clean", True) IMPERSONATE = {"USE_HTTP_REFERER": True, "REQUIRE_SUPERUSER": True, "ALLOW_SUPERUSER": True} diff --git a/aleksis/core/tasks.py b/aleksis/core/tasks.py index 863bf7e42839a7b79e674f7175b242228256d2d3..d085f027fad09e875bf612d8352d83151e77d880 100644 --- a/aleksis/core/tasks.py +++ b/aleksis/core/tasks.py @@ -19,12 +19,21 @@ def send_notification(notification: int, resend: bool = False) -> None: def backup_data() -> None: """Backup database and media using django-dbbackup.""" # Assemble command-line options for dbbackup management command - db_options = (["-z"] if settings.DBBACKUP_COMPRESS_DB else []) + ( - ["-e"] if settings.DBBACKUP_ENCRYPT_DB else [] - ) - media_options = (["-z"] if settings.DBBACKUP_COMPRESS_MEDIA else []) + ( - ["-e"] if settings.DBBACKUP_ENCRYPT_MEDIA else [] - ) + db_options = [] + if settings.DBBACKUP_COMPRESS_DB: + db_options.append("-z") + if settings.DBBACKUP_ENCRYPT_DB: + db_options.append("-e") + if settings.DBBACKUP_CLEANUP_DB: + db_options.append("-c") + + media_options = [] + if settings.DBBACKUP_COMPRESS_MEDIA: + media_options.append("-z") + if settings.DBBACKUP_ENCRYPT_MEDIA: + media_options.append("-e") + if settings.DBBACKUP_CLEANUP_MEDIA: + media_options.append("-c") # Hand off to dbbackup's management commands management.call_command("dbbackup", *db_options)