mirror of
https://github.com/jointakahe/takahe.git
synced 2024-11-22 15:21:01 +00:00
New Moderation Report Email (#346)
This commit is contained in:
parent
03bfc417df
commit
c10aa46fc5
3 changed files with 93 additions and 2 deletions
33
templates/emails/report_new.html
Normal file
33
templates/emails/report_new.html
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
{% extends "emails/base.html" %}
|
||||||
|
{% load mail_tags %}
|
||||||
|
{% autoescape off %}
|
||||||
|
{% block title %}{{config.site_name}} - New Moderation Report{% endblock title %}
|
||||||
|
{% block subtitle %}{{config.site_name}} - New Moderation Report{% endblock subtitle %}
|
||||||
|
|
||||||
|
{% block body_greeting %}
|
||||||
|
{% email_body_content "Moderation Team," %}
|
||||||
|
{% email_body_content "A new report has been recieved for {{config.site_name}}." %}
|
||||||
|
{% endblock body_greeting %}
|
||||||
|
|
||||||
|
{% block body_content %}
|
||||||
|
{% email_body_content "=============== Report Summary ===============" %}
|
||||||
|
|
||||||
|
{% if report.source_identity %}
|
||||||
|
{% email_body_content "Reporter Identity: {{report.source_identity}} @ {{report.source_domain}}" %}
|
||||||
|
{% else %}
|
||||||
|
{% email_body_content "Reporter Identity: Anonymous Report from {{report.source_domain}}" %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% email_body_content "Reported Identity: {{report.subject_identity}}" %}
|
||||||
|
{% email_body_content "Complaint Type: {{report.type}}" %}
|
||||||
|
{% email_body_content "Complaint Notes: {{report.complaint}}" %}
|
||||||
|
{% endblock body_content %}
|
||||||
|
|
||||||
|
{% block body_button %}
|
||||||
|
{% email_button button_text="View Report" button_link="https://{{settings.MAIN_DOMAIN}}/admin/reports/{{report.id}}/" %}
|
||||||
|
{% endblock body_button %}
|
||||||
|
|
||||||
|
{% block extra_footer %}
|
||||||
|
{% email_footer "You are recieving this email because you are a moderator on the Takahe instance https://{{settings.MAIN_DOMAIN}}" %}
|
||||||
|
{% endblock extra_footer %}
|
||||||
|
{% endautoescape %}
|
22
templates/emails/report_new.txt
Normal file
22
templates/emails/report_new.txt
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
A new report has been recieved for {{config.site_name}}.
|
||||||
|
|
||||||
|
Please review the report at the link below:
|
||||||
|
|
||||||
|
https://{{settings.MAIN_DOMAIN}}/admin/reports/{{report.id}}/
|
||||||
|
|
||||||
|
=============== Report Summary ===============
|
||||||
|
{% if report.source_identity %}
|
||||||
|
Reporter Identity: {{report.source_identity}} @ {{report.source_domain}}
|
||||||
|
{% else %}
|
||||||
|
Reporter Identity: Anonymous Report from {{report.source_domain}}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
Reported Identity: {{report.subject_identity}}
|
||||||
|
|
||||||
|
Complaint Type: {{report.type}}
|
||||||
|
|
||||||
|
Complaint Notes: {{report.complaint}}
|
||||||
|
|
||||||
|
=============== End Report ===============
|
||||||
|
|
||||||
|
You are recieving this email because you are a moderator on the Takahe instance https://{{settings.MAIN_DOMAIN}}
|
|
@ -2,9 +2,14 @@ from urllib.parse import urlparse
|
||||||
|
|
||||||
import httpx
|
import httpx
|
||||||
import urlman
|
import urlman
|
||||||
|
from asgiref.sync import sync_to_async
|
||||||
|
from django.conf import settings
|
||||||
|
from django.core.mail import EmailMultiAlternatives
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from django.template.loader import render_to_string
|
||||||
|
|
||||||
from core.ld import canonicalise, get_list
|
from core.ld import canonicalise, get_list
|
||||||
|
from core.models import Config
|
||||||
from stator.models import State, StateField, StateGraph, StatorModel
|
from stator.models import State, StateField, StateGraph, StatorModel
|
||||||
from users.models import Domain
|
from users.models import Domain
|
||||||
|
|
||||||
|
@ -20,9 +25,15 @@ class ReportStates(StateGraph):
|
||||||
"""
|
"""
|
||||||
Sends the report to the remote server if we need to
|
Sends the report to the remote server if we need to
|
||||||
"""
|
"""
|
||||||
from users.models import SystemActor
|
from users.models import SystemActor, User
|
||||||
|
|
||||||
|
recipients = []
|
||||||
report = await instance.afetch_full()
|
report = await instance.afetch_full()
|
||||||
|
async for mod in User.objects.filter(
|
||||||
|
models.Q(moderator=True) | models.Q(admin=True)
|
||||||
|
).values_list("email", flat=True):
|
||||||
|
recipients.append(mod)
|
||||||
|
|
||||||
if report.forward and not report.subject_identity.domain.local:
|
if report.forward and not report.subject_identity.domain.local:
|
||||||
system_actor = SystemActor()
|
system_actor = SystemActor()
|
||||||
try:
|
try:
|
||||||
|
@ -32,7 +43,32 @@ class ReportStates(StateGraph):
|
||||||
body=canonicalise(report.to_ap()),
|
body=canonicalise(report.to_ap()),
|
||||||
)
|
)
|
||||||
except httpx.RequestError:
|
except httpx.RequestError:
|
||||||
return
|
pass
|
||||||
|
email = EmailMultiAlternatives(
|
||||||
|
subject=f"{Config.system.site_name}: New Moderation Report",
|
||||||
|
body=render_to_string(
|
||||||
|
"emails/report_new.txt",
|
||||||
|
{
|
||||||
|
"report": report,
|
||||||
|
"config": Config.system,
|
||||||
|
"settings": settings,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
from_email=settings.SERVER_EMAIL,
|
||||||
|
bcc=recipients,
|
||||||
|
)
|
||||||
|
email.attach_alternative(
|
||||||
|
content=render_to_string(
|
||||||
|
"emails/report_new.html",
|
||||||
|
{
|
||||||
|
"report": report,
|
||||||
|
"config": Config.system,
|
||||||
|
"settings": settings,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
mimetype="text/html",
|
||||||
|
)
|
||||||
|
await sync_to_async(email.send)()
|
||||||
return cls.sent
|
return cls.sent
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue