From bd0ae76f7562554782363e856de10afd3c8ba5a0 Mon Sep 17 00:00:00 2001
From: Jonathan Weth <git@jonathanweth.de>
Date: Sat, 26 Dec 2020 19:44:45 +0100
Subject: [PATCH] Simplify registering of data check results by adding a
 dedicated method

---
 aleksis/apps/alsijil/data_checks.py | 36 ++++-------------------------
 1 file changed, 5 insertions(+), 31 deletions(-)

diff --git a/aleksis/apps/alsijil/data_checks.py b/aleksis/apps/alsijil/data_checks.py
index 2b9834a3c..f454a6b1e 100644
--- a/aleksis/apps/alsijil/data_checks.py
+++ b/aleksis/apps/alsijil/data_checks.py
@@ -56,12 +56,8 @@ class NoPersonalNotesInCancelledLessonsDataCheck(DataCheck):
 
     @classmethod
     def check_data(cls):
-        from aleksis.core.models import DataCheckResult
-
         from .models import PersonalNote
 
-        ct = ContentType.objects.get_for_model(PersonalNote)
-
         personal_notes = PersonalNote.objects.filter(
             lesson_period__substitutions__cancelled=True,
             lesson_period__substitutions__week=F("week"),
@@ -70,9 +66,7 @@ class NoPersonalNotesInCancelledLessonsDataCheck(DataCheck):
 
         for note in personal_notes:
             logging.info(f"Check personal note {note}")
-            result = DataCheckResult.objects.get_or_create(
-                check=cls.name, content_type=ct, object_id=note.id
-            )
+            cls.register_result(note)
 
 
 @DATA_CHECK_REGISTRY.register
@@ -88,19 +82,13 @@ class NoGroupsOfPersonsSetInPersonalNotesDataCheck(DataCheck):
 
     @classmethod
     def check_data(cls):
-        from aleksis.core.models import DataCheckResult
-
         from .models import PersonalNote
 
-        ct = ContentType.objects.get_for_model(PersonalNote)
-
         personal_notes = PersonalNote.objects.filter(groups_of_person__isnull=True)
 
         for note in personal_notes:
             logging.info(f"Check personal note {note}")
-            result = DataCheckResult.objects.get_or_create(
-                check=cls.name, content_type=ct, object_id=note.id
-            )
+            cls.register_result(note)
 
 
 @DATA_CHECK_REGISTRY.register
@@ -121,11 +109,9 @@ class LessonDocumentationOnHolidaysDataCheck(DataCheck):
     @classmethod
     def check_data(cls):
         from aleksis.apps.chronos.models import Holiday
-        from aleksis.core.models import DataCheckResult
 
         from .models import LessonDocumentation
 
-        ct = ContentType.objects.get_for_model(LessonDocumentation)
         holidays = list(Holiday.objects.all())
 
         documentations = LessonDocumentation.objects.filter(
@@ -137,9 +123,7 @@ class LessonDocumentationOnHolidaysDataCheck(DataCheck):
             day = week_weekday_to_date(doc.calendar_week, doc.lesson_period.period.weekday)
             if len(list(filter(lambda h: h.date_start <= day <= h.date_end, holidays))) > 0:
                 logging.info("  ... on holidays")
-                result = DataCheckResult.objects.get_or_create(
-                    check=cls.name, content_type=ct, object_id=doc.id
-                )
+                cls.register_result(doc)
 
 
 @DATA_CHECK_REGISTRY.register
@@ -160,11 +144,9 @@ class PersonalNoteOnHolidaysDataCheck(DataCheck):
     @classmethod
     def check_data(cls):
         from aleksis.apps.chronos.models import Holiday
-        from aleksis.core.models import DataCheckResult
 
         from .models import PersonalNote
 
-        ct = ContentType.objects.get_for_model(PersonalNote)
         holidays = list(Holiday.objects.all())
 
         personal_notes = PersonalNote.objects.filter(
@@ -176,9 +158,7 @@ class PersonalNoteOnHolidaysDataCheck(DataCheck):
             day = week_weekday_to_date(note.calendar_week, note.lesson_period.period.weekday)
             if len(list(filter(lambda h: h.date_start <= day <= h.date_end, holidays))) > 0:
                 logging.info("  ... on holidays")
-                result = DataCheckResult.objects.get_or_create(
-                    check=cls.name, content_type=ct, object_id=note.id
-                )
+                cls.register_result(note)
 
 
 @DATA_CHECK_REGISTRY.register
@@ -193,16 +173,10 @@ class ExcusesWithoutAbsences(DataCheck):
 
     @classmethod
     def check_data(cls):
-        from aleksis.core.models import DataCheckResult
-
         from .models import PersonalNote
 
-        ct = ContentType.objects.get_for_model(PersonalNote)
-
         personal_notes = PersonalNote.objects.filter(excused=True, absent=False)
 
         for note in personal_notes:
             logging.info(f"Check personal note {note}")
-            result = DataCheckResult.objects.get_or_create(
-                check=cls.name, content_type=ct, object_id=note.id
-            )
+            cls.register_result(note)
-- 
GitLab