From d86bf0e7427ebcea953d0aebc52f962f8adfe00f Mon Sep 17 00:00:00 2001
From: Tom Teichler <tom.teichler@teckids.org>
Date: Sat, 20 Feb 2021 14:51:55 +0100
Subject: [PATCH] Use seperate settings for db and media backup

---
 aleksis/core/health_checks.py | 37 +++++++++++++++++------------------
 aleksis/core/settings.py      |  3 ++-
 2 files changed, 20 insertions(+), 20 deletions(-)

diff --git a/aleksis/core/health_checks.py b/aleksis/core/health_checks.py
index 3e89adcc0..806a7005a 100644
--- a/aleksis/core/health_checks.py
+++ b/aleksis/core/health_checks.py
@@ -28,34 +28,36 @@ class BaseBackupHealthCheck(BaseHealthCheckBackend):
     """Common base class for backup age checks."""
 
     critical_service = False
+    content_type = None
+    configured_seconds = None
 
     def check_status(self):
         storage = get_storage()
-        last_backup = storage.list_backups(content_type=self.content_type)[-1]
-        last_backup_time = dbbackup_utils.filename_to_date(last_backup)
-        time_gone_since_backup = last_backup_time - datetime.now()
+        backups = storage.list_backups(content_type=self.content_type)
+        if backups:
+            last_backup = storage.list_backups(content_type=self.content_type)[-1]
+            last_backup_time = dbbackup_utils.filename_to_date(last_backup)
+            time_gone_since_backup = last_backup_time - datetime.now()
 
-        # Check if backup is older than configured time
-        if time_gone_since_backup.seconds > settings.DBBACKUP_SECONDS:
-            self.add_error(_(f"Last backup {time_gone_since_backup}!"))
+            # Check if backup is older than configured time
+            if time_gone_since_backup.seconds > self.configured_seconds:
+                self.add_error(_(f"Last backup {time_gone_since_backup}!"))
+        else:
+            self.add_error(_("No backup found!"))
 
 
 class DbBackupAgeHealthCheck(BaseBackupHealthCheck):
     """Checks if last backup file is less than configured seconds ago."""
 
     content_type = "db"
-
-    def identifier(self):
-        return self.__class__.__name__
+    configured_seconds = settings.DBBACKUP_CHECK_SECONDS
 
 
 class MediaBackupAgeHealthCheck(BaseBackupHealthCheck):
     """Checks if last backup file is less than configured seconds ago."""
 
     content_type = "media"
-
-    def identifier(self):
-        return self.__class__.__name__
+    configured_seconds = settings.MEDIABACKUP_CHECK_SECONDS
 
 
 class BackupJobHealthCheck(BaseHealthCheckBackend):
@@ -64,13 +66,10 @@ class BackupJobHealthCheck(BaseHealthCheckBackend):
     critical_service = False
 
     def check_status(self):
-        task = TaskResult.objects.filter(task_name="aleksis.core.tasks.backup_data")
+        task = TaskResult.objects.filter(task_name="aleksis.core.tasks.backup_data").last()
 
         # Check if state is success
-        if not task.last():
+        if not task:
             self.add_error(_("No backup result found!"))
-        if task.last() and task.last().status != "SUCCESS":
-            self.add_error(_(f"{task.last().status} - {task.last().result}"))
-
-    def identifier(self):
-        return self.__class__.__name__
+        elif task and task.status != "SUCCESS":
+            self.add_error(_(f"{task.status} - {task.result}"))
diff --git a/aleksis/core/settings.py b/aleksis/core/settings.py
index f16a7f2a4..1fa406111 100644
--- a/aleksis/core/settings.py
+++ b/aleksis/core/settings.py
@@ -730,6 +730,7 @@ HEALTH_CHECK = {
     "MEMORY_MIN": _settings.get("health.memory_min_mb", 500),
 }
 
-DBBACKUP_SECONDS = _settings.get("backup.seconds", 7200)
+DBBACKUP_CHECK_SECONDS = _settings.get("backup.database.check_seconds", 7200)
+MEDIABACKUP_CHECK_SECONDS = _settings.get("backup.media.check_seconds", 7200)
 
 PROMETHEUS_EXPORT_MIGRATIONS = False
-- 
GitLab