diff --git a/aleksis/core/admin.py b/aleksis/core/admin.py index e35910f597983ea8cfaa957cd475e607c490dfa0..ae51f4bcfddec26f5b31af1fb79628ac6812476f 100644 --- a/aleksis/core/admin.py +++ b/aleksis/core/admin.py @@ -10,6 +10,7 @@ from .models import ( Announcement, AnnouncementRecipient, CustomMenuItem, + DataCheckResult, Group, Notification, Person, @@ -33,3 +34,4 @@ class AnnouncementAdmin(BaseModelAdmin, VersionAdmin): admin.site.register(Announcement, AnnouncementAdmin) +admin.site.register(DataCheckResult) diff --git a/aleksis/core/data_checks.py b/aleksis/core/data_checks.py index 17023c322ad7942459fc1787146bf767e484f3d3..d73163ac8dceb90ec695402d959dbf3c04172295 100644 --- a/aleksis/core/data_checks.py +++ b/aleksis/core/data_checks.py @@ -67,7 +67,7 @@ def check_data(): logging.info(f"Run check: {check.verbose_name}") check.check_data() - if get_site_preferences()["alsijil__data_checks_send_emails"]: + if get_site_preferences()["general__data_checks_send_emails"]: send_emails_for_data_checks() @@ -93,9 +93,11 @@ def send_emails_for_data_checks(): template_name="data_checks", from_email=get_site_preferences()["mail__address"], recipient_list=[ - p.email for p in get_site_preferences()["alsijil__data_checks_recipients"] + p.email for p in get_site_preferences()["general__data_checks_recipients"] ], context={"results": results_with_checks}, ) + logging.info("Sent notification email because of unsent data checks") + results.update(sent=True) diff --git a/aleksis/core/preferences.py b/aleksis/core/preferences.py index eba67c7220314823b0f74efa986cbe09c24d1f43..9f3944918c616c1371d1f17fc18084e52e6c2487 100644 --- a/aleksis/core/preferences.py +++ b/aleksis/core/preferences.py @@ -5,8 +5,10 @@ from django.utils.translation import gettext_lazy as _ from dynamic_preferences.preferences import Section from dynamic_preferences.types import ( + BooleanPreference, ChoicePreference, FilePreference, + ModelMultipleChoicePreference, MultipleChoicePreference, StringPreference, ) @@ -209,3 +211,24 @@ class AvailableLanguages(MultipleChoicePreference): verbose_name = _("Available languages") field_attribute = {"initial": []} choices = settings.LANGUAGES + + +@site_preferences_registry.register +class DataChecksSendEmails(BooleanPreference): + """Enable email sending if data checks detect problems.""" + + section = general + name = "data_checks_send_emails" + default = False + verbose_name = _("Send emails if data checks detect problems") + + +@site_preferences_registry.register +class DataChecksEmailsRecipients(ModelMultipleChoicePreference): + """Email recipients for data check problem emails.""" + + section = general + name = "data_checks_recipients" + default = [] + model = Person + verbose_name = _("Email recipients for data checks problem emails")