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