diff --git a/src/fellchensammlung/mail.py b/src/fellchensammlung/mail.py index a9a8923..6d2230a 100644 --- a/src/fellchensammlung/mail.py +++ b/src/fellchensammlung/mail.py @@ -7,29 +7,27 @@ from django.utils.translation import gettext_lazy as _ from django.conf import settings from django.core import mail from fellchensammlung.models import User, Notification, TrustLevel, NotificationTypeChoices -from notfellchen.settings import base_url - -NEWLINE = "\r\n" +from fellchensammlung.tools.model_helpers import ndm -def mail_admins_new_report(report): +def notify_mods_new_report(report, notification_type): """ Sends an e-mail to all users that should handle the report. """ for moderator in User.objects.filter(trust_level__gt=TrustLevel.MODERATOR): - report_url = base_url + report.get_absolute_url() - context = {"report_url": report_url, - "user_comment": report.user_comment, } - - subject = _("Neue Meldung") - html_message = render_to_string('fellchensammlung/mail/notifications/report.html', context) - plain_message = render_to_string('fellchensammlung/mail/notifications/report.txt', context) - - mail.send_mail(subject, - plain_message, - from_email="info@notfellchen.org", - recipient_list=[moderator.email], - html_message=html_message) + if notification_type == NotificationTypeChoices.NEW_REPORT_AN: + title = _("Vermittlung gemeldet") + elif notification_type == NotificationTypeChoices.NEW_COMMENT: + title = _("Kommentar gemeldet") + else: + raise NotImplementedError + notification = Notification.objects.create( + notification_type=notification_type, + user_to_notify=moderator, + report=report, + title=title, + ) + notification.save() def send_notification_email(notification_pk): @@ -37,33 +35,9 @@ def send_notification_email(notification_pk): subject = f"{notification.title}" context = {"notification": notification, } - if notification.notification_type == NotificationTypeChoices.NEW_REPORT_COMMENT or notification.notification_type == NotificationTypeChoices.NEW_REPORT_AN: - context["user_comment"] = notification.report.user_comment - context["report_url"] = f"{base_url}{notification.report.get_absolute_url()}" - html_message = render_to_string('fellchensammlung/mail/notifications/report.html', context) - plain_message = render_to_string('fellchensammlung/mail/notifications/report.txt', context) - elif notification.notification_type == NotificationTypeChoices.NEW_USER: - html_message = render_to_string('fellchensammlung/mail/notifications/new-user.html', context) - new_user_url = notification.user_related.get_full_url() - context["new_user_url"] = new_user_url - plain_message = render_to_string('fellchensammlung/mail/notifications/new-user.txt', context) - elif notification.notification_type == NotificationTypeChoices.AN_IS_TO_BE_CHECKED: - html_message = render_to_string('fellchensammlung/mail/notifications/an-to-be-checked.html', context) - plain_message = render_to_string('fellchensammlung/mail/notifications/an-to-be-checked.txt', context) - elif notification.notification_type == NotificationTypeChoices.AN_WAS_DEACTIVATED: - html_message = render_to_string('fellchensammlung/mail/notifications/an-deactivated.html', context) - plain_message = render_to_string('fellchensammlung/mail/notifications/an-deactivated.txt', context) - elif notification.notification_type == NotificationTypeChoices.AN_FOR_SEARCH_FOUND: - html_message = render_to_string('fellchensammlung/mail/notifications/an-for-search-found.html', context) - plain_message = render_to_string('fellchensammlung/mail/notifications/an-for-search-found.txt', context) - elif notification.notification_type == NotificationTypeChoices.NEW_COMMENT: - html_message = render_to_string('fellchensammlung/mail/notifications/new-comment.html', context) - plain_message = render_to_string('fellchensammlung/mail/notifications/new-comment.txt', context) - else: - raise NotImplementedError("Unknown notification type") + html_message = render_to_string(ndm[notification.notification_type].email_html_template, context) + plain_message = render_to_string(ndm[notification.notification_type].email_plain_template, context) - if "plain_message" not in locals(): - plain_message = strip_tags(html_message) mail.send_mail(subject, plain_message, settings.DEFAULT_FROM_EMAIL, [notification.user_to_notify.email], html_message=html_message) diff --git a/src/fellchensammlung/models.py b/src/fellchensammlung/models.py index c615d55..696b4d1 100644 --- a/src/fellchensammlung/models.py +++ b/src/fellchensammlung/models.py @@ -732,6 +732,9 @@ class Report(models.Model): """Returns the url to access a detailed page for the report.""" return reverse('report-detail', args=[str(self.id)]) + def get_full_url(self): + return f"{base_url}{self.get_absolute_url()}" + def get_reported_rules(self): return self.reported_broken_rules.all() diff --git a/src/fellchensammlung/templates/fellchensammlung/mail/notifications/new-user.txt b/src/fellchensammlung/templates/fellchensammlung/mail/notifications/new-user.txt index f9a8ef4..e925e7e 100644 --- a/src/fellchensammlung/templates/fellchensammlung/mail/notifications/new-user.txt +++ b/src/fellchensammlung/templates/fellchensammlung/mail/notifications/new-user.txt @@ -1,6 +1,6 @@ {% extends "fellchensammlung/mail/base.txt" %} {% load i18n %} -{% block content %}{% blocktranslate %}Moin, +{% block content %}{% blocktranslate with new_user_url=notification.user_related.get_full_url %}Moin, es wurde ein neuer Useraccount erstellt. diff --git a/src/fellchensammlung/templates/fellchensammlung/mail/notifications/report.html b/src/fellchensammlung/templates/fellchensammlung/mail/notifications/report.html index 8bfc26b..b551ae9 100644 --- a/src/fellchensammlung/templates/fellchensammlung/mail/notifications/report.html +++ b/src/fellchensammlung/templates/fellchensammlung/mail/notifications/report.html @@ -5,21 +5,31 @@ {% endblock %} {% block content %} -
Moin,
+{% translate 'Moin' %},
- es gibt eine neue Meldung. Folgende Nachricht wurde zur Meldung hinzugefügt: + {% blocktranslate %} + es gibt eine neue Meldung. + {% endblocktranslate %} + {% if notification.report.user_comment %} + {% blocktranslate %} + Folgende Nachricht wurde zur Meldung hinzugefügt: + {% endblocktranslate %} + {% endif %}
+ {% if notification.report.user_comment %} ++ + {{ notification.report.user_comment }} + +
+ {% endif %}- - {{ user_comment }} - + {% blocktranslate %} + Bitte bearbeite die Meldung möglichst bald. + {% endblocktranslate %}
- - Bitte bearbeite die Meldung möglichst bald. -
-- {% translate 'Report bearbeiten' %} + {% translate 'Report bearbeiten' %}
{% endblock %} \ No newline at end of file diff --git a/src/fellchensammlung/views.py b/src/fellchensammlung/views.py index bc301e5..cb1eb07 100644 --- a/src/fellchensammlung/views.py +++ b/src/fellchensammlung/views.py @@ -15,7 +15,7 @@ from django.core.serializers import serialize from django.utils.translation import gettext_lazy as _ import json -from .mail import mail_admins_new_report +from .mail import notify_mods_new_report from notfellchen import settings from fellchensammlung import logger @@ -478,8 +478,7 @@ def report_adoption(request, adoption_notice_id): report_instance.status = Report.WAITING report_instance.save() form.save_m2m() - mail_admins_new_report(report_instance) - print("dada") + notify_mods_new_report(report_instance, NotificationTypeChoices.NEW_REPORT_AN) return redirect(reverse("report-detail-success", args=[report_instance.pk], )) else: form = ReportAdoptionNoticeForm() @@ -499,7 +498,7 @@ def report_comment(request, comment_id): report_instance.status = Report.WAITING report_instance.save() form.save_m2m() - mail_admins_new_report(report_instance) + notify_mods_new_report(report_instance, NotificationTypeChoices.NEW_REPORT_COMMENT) return redirect(reverse("report-detail-success", args=[report_instance.pk], )) else: form = ReportCommentForm()