feat: make use of new notification mapping
This commit is contained in:
		@@ -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)
 | 
			
		||||
 
 | 
			
		||||
@@ -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()
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -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.
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -5,21 +5,31 @@
 | 
			
		||||
{% endblock %}
 | 
			
		||||
 | 
			
		||||
{% block content %}
 | 
			
		||||
    <p>Moin,</p>
 | 
			
		||||
    <p>{% translate 'Moin' %},</p>
 | 
			
		||||
    <p>
 | 
			
		||||
        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 %}
 | 
			
		||||
 | 
			
		||||
    </p>
 | 
			
		||||
    {% if notification.report.user_comment %}
 | 
			
		||||
        <p>
 | 
			
		||||
            <i>
 | 
			
		||||
                {{ notification.report.user_comment }}
 | 
			
		||||
            </i>
 | 
			
		||||
        </p>
 | 
			
		||||
    {% endif %}
 | 
			
		||||
    <p>
 | 
			
		||||
        <i>
 | 
			
		||||
            {{ user_comment }}
 | 
			
		||||
        </i>
 | 
			
		||||
        {% blocktranslate %}
 | 
			
		||||
            Bitte bearbeite die Meldung möglichst bald.
 | 
			
		||||
        {% endblocktranslate %}
 | 
			
		||||
    </p>
 | 
			
		||||
    <p>
 | 
			
		||||
 | 
			
		||||
        Bitte bearbeite die Meldung möglichst bald.
 | 
			
		||||
    </p>
 | 
			
		||||
    <p>
 | 
			
		||||
        <a href="{{ report_url }}" class="cta-button">{% translate 'Report bearbeiten' %}</a>
 | 
			
		||||
        <a href="{{ notification.report.get_full_url }}" class="cta-button">{% translate 'Report bearbeiten' %}</a>
 | 
			
		||||
    </p>
 | 
			
		||||
{% endblock %}
 | 
			
		||||
@@ -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()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user