From 4f1026f8fcdacdbfc7aacb0879458b772f618a79 Mon Sep 17 00:00:00 2001
From: Jonathan Weth <git@jonathanweth.de>
Date: Sun, 27 Dec 2020 17:37:12 +0100
Subject: [PATCH] Allow sending data check notifications emails to groups

---
 aleksis/core/data_checks.py | 13 ++++++++++---
 aleksis/core/preferences.py | 13 ++++++++++++-
 2 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/aleksis/core/data_checks.py b/aleksis/core/data_checks.py
index 9f2a0ac07..1f2e2c5ef 100644
--- a/aleksis/core/data_checks.py
+++ b/aleksis/core/data_checks.py
@@ -216,12 +216,19 @@ def send_emails_for_data_checks():
                 (DATA_CHECK_REGISTRY.data_checks_by_name[result["check"]], result["count"])
             )
 
+        recipient_list = [
+            p.mail_sender
+            for p in get_site_preferences()["general__data_checks_recipients"]
+            if p.email
+        ]
+
+        for group in get_site_preferences()["general__data_checks_recipient_groups"]:
+            recipient_list += [p.mail_sender for p in group.announcement_recipients if p.email]
+
         send_templated_mail(
             template_name="data_checks",
             from_email=get_site_preferences()["mail__address"],
-            recipient_list=[
-                p.email for p in get_site_preferences()["general__data_checks_recipients"]
-            ],
+            recipient_list=recipient_list,
             context={"results": results_with_checks},
         )
 
diff --git a/aleksis/core/preferences.py b/aleksis/core/preferences.py
index 9f3944918..a8cbe1ef5 100644
--- a/aleksis/core/preferences.py
+++ b/aleksis/core/preferences.py
@@ -13,7 +13,7 @@ from dynamic_preferences.types import (
     StringPreference,
 )
 
-from .models import Person
+from .models import Group, Person
 from .registries import person_preferences_registry, site_preferences_registry
 from .util.notifications import get_notification_choices_lazy
 
@@ -232,3 +232,14 @@ class DataChecksEmailsRecipients(ModelMultipleChoicePreference):
     default = []
     model = Person
     verbose_name = _("Email recipients for data checks problem emails")
+
+
+@site_preferences_registry.register
+class DataChecksEmailsRecipientGroups(ModelMultipleChoicePreference):
+    """Email recipient groups for data check problem emails."""
+
+    section = general
+    name = "data_checks_recipient_groups"
+    default = []
+    model = Group
+    verbose_name = _("Email recipient groups for data checks problem emails")
-- 
GitLab