Skip to content

Commit

Permalink
PROJ-1962-Ajouter-le-portail-sur-report-contact-mails (#335)
Browse files Browse the repository at this point in the history
  • Loading branch information
samonaisi authored Dec 11, 2024
1 parent cadc0b9 commit 5dc4776
Show file tree
Hide file tree
Showing 11 changed files with 80 additions and 27 deletions.
6 changes: 4 additions & 2 deletions apps/emailing/templates/abuse.html
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,11 @@
</mj-text>

<mj-text>
URL: <span style="color: #444444">{{ url }}</span>
URL: <a href="{{ url }}" ="color: #444444">{{ url }}</span>
</mj-text>
<mj-text font-size="14px" color="#444444">
On portal : <a href="{{ organization_url }}" style="#444444">{{ organization_url }}</a>
</mj-text>


<mj-divider border-color="#F45E43"></mj-divider>

Expand Down
2 changes: 1 addition & 1 deletion apps/emailing/templates/abuse.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Subject: {{ title }}
From: {{ reported_by }}
URL: {{ url }}

From portal {{ organization_url }}
{{ message|safe }}
6 changes: 4 additions & 2 deletions apps/emailing/templates/bug.html
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,11 @@
</mj-text>

<mj-text>
URL: <span style="color: #444444">{{ url }}</span>
URL: <a href="{{ url }}" ="color: #444444">{{ url }}</span>
</mj-text>
<mj-text font-size="14px" color="#444444">
On portal : <a href="{{ organization_url }}" style="#444444">{{ organization_url }}</a>
</mj-text>


<mj-divider border-color="#F45E43"></mj-divider>

Expand Down
2 changes: 1 addition & 1 deletion apps/emailing/templates/bug.txt
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
Subject: {{ title }}
From: {{ reported_by }}
URL: {{ url }}

From portal {{ organization_url }}
{{ message|safe }}
3 changes: 3 additions & 0 deletions apps/emailing/templates/contact_us.html
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@
From: <span style="color: #444444">{{ email }}</span>
</mj-text>

<mj-text font-size="14px" color="#444444">
On portal : <a href="{{ organization_url }}" style="#444444">{{ organization_url }}</a>
</mj-text>

<mj-divider border-color="#F45E43"></mj-divider>

Expand Down
2 changes: 1 addition & 1 deletion apps/emailing/templates/contact_us.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
Subject: {{ subject }}
From: {{ email }}

From portal {{ organization_url }}
{{ content|safe }}
10 changes: 9 additions & 1 deletion apps/notifications/tests/views/test_contact_us.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,17 @@
from rest_framework import status

from apps.commons.test import JwtAPITestCase, TestRoles
from apps.organizations.factories import OrganizationFactory

faker = Faker()


class ContactTestCase(JwtAPITestCase):
@classmethod
def setUpTestData(cls):
super().setUpTestData()
cls.organization = OrganizationFactory()

@parameterized.expand(
[
(TestRoles.ANONYMOUS,),
Expand All @@ -26,6 +32,8 @@ def test_contact_us(self, role, send_email):
"content": faker.text(),
"email": faker.email(),
}
response = self.client.post(reverse("Contact-us"), data=payload)
response = self.client.post(
reverse("Contact-us", args=(self.organization.code,)), data=payload
)
self.assertEqual(response.status_code, status.HTTP_200_OK, response.content)
send_email.assert_called_once()
14 changes: 12 additions & 2 deletions apps/notifications/tests/views/test_report.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,17 @@
from rest_framework import status

from apps.commons.test import JwtAPITestCase, TestRoles
from apps.organizations.factories import OrganizationFactory

faker = Faker()


class ReportTestCase(JwtAPITestCase):
@classmethod
def setUpTestData(cls):
super().setUpTestData()
cls.organization = OrganizationFactory()

@parameterized.expand(
[
(TestRoles.ANONYMOUS,),
Expand All @@ -27,7 +33,9 @@ def test_bug_report(self, role, send_email):
"reported_by": faker.email(),
"url": faker.url(),
}
response = self.client.post(reverse("Report-bug"), data=payload)
response = self.client.post(
reverse("Report-bug", args=(self.organization.code,)), data=payload
)
self.assertEqual(response.status_code, status.HTTP_200_OK, response.content)
send_email.assert_called_once()

Expand All @@ -47,6 +55,8 @@ def test_abuse_report(self, role, send_email):
"reported_by": faker.email(),
"url": faker.url(),
}
response = self.client.post(reverse("Report-abuse"), data=payload)
response = self.client.post(
reverse("Report-abuse", args=(self.organization.code,)), data=payload
)
self.assertEqual(response.status_code, status.HTTP_200_OK, response.content)
send_email.assert_called_once()
33 changes: 23 additions & 10 deletions apps/notifications/urls.py
Original file line number Diff line number Diff line change
@@ -1,18 +1,31 @@
from django.urls import include, path
from rest_framework.routers import SimpleRouter

from . import views
from apps.commons.urls import organization_router_register

from .views import (
ContactViewSet,
NotificationSettingsViewSet,
NotificationsViewSet,
ReportViewSet,
)

router = SimpleRouter()
router.register(r"report", views.ReportViewSet, basename="Report")
router.register(r"contact", views.ContactViewSet, basename="Contact")
router.register(r"notification", views.NotificationsViewSet, basename="Notification")

router.register(r"notification", NotificationsViewSet, basename="Notification")
router.register(
r"notifications-setting",
views.NotificationSettingsViewSet,
NotificationSettingsViewSet,
basename="NotificationSettings",
)

urlpatterns = [
path(r"", include(router.urls)),
]
organization_router_register(
router,
r"report",
ReportViewSet,
basename="Report",
)
organization_router_register(
router,
r"contact",
ContactViewSet,
basename="Contact",
)
28 changes: 22 additions & 6 deletions apps/notifications/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@

from django.conf import settings
from django.db import transaction
from django.shortcuts import get_object_or_404
from drf_spectacular.utils import extend_schema
from rest_framework import status, viewsets
from rest_framework.decorators import action
Expand All @@ -16,6 +17,7 @@
from apps.commons.views import ListViewSet, MultipleIDViewsetMixin
from apps.emailing.tasks import send_email_task
from apps.emailing.utils import render_message
from apps.organizations.models import Organization
from apps.organizations.permissions import HasOrganizationPermission

from .models import Notification, NotificationSettings
Expand Down Expand Up @@ -83,15 +85,19 @@ class ReportViewSet(viewsets.GenericViewSet):

@extend_schema(request=EmailReportSerializer)
@action(detail=False, methods=["POST"])
def abuse(self, request: Request):
def abuse(self, request: Request, *args, **kwargs):
"""Allow to send an abuse report email."""
organization_code = self.kwargs.get("organization_code", None)
organization = get_object_or_404(Organization, code=organization_code)
serializer = EmailReportSerializer(
data=request.data, context={"request": request}
)
serializer.is_valid(raise_exception=True)

text_content, html_content = render_message(
"abuse", **serializer.validated_data
"abuse",
organization_url=organization.website_url,
**serializer.validated_data,
)
send_email_task.delay(
f"[Abuse] {serializer.validated_data['title']}",
Expand All @@ -104,14 +110,20 @@ def abuse(self, request: Request):

@extend_schema(request=EmailReportSerializer)
@action(detail=False, methods=["POST"])
def bug(self, request: Request):
def bug(self, request: Request, *args, **kwargs):
"""Allow to send a bug report email."""
organization_code = self.kwargs.get("organization_code", None)
organization = get_object_or_404(Organization, code=organization_code)
serializer = EmailReportSerializer(
data=request.data, context={"request": request}
)
serializer.is_valid(raise_exception=True)

text_content, html_content = render_message("bug", **serializer.validated_data)
text_content, html_content = render_message(
"bug",
organization_url=organization.website_url,
**serializer.validated_data,
)
send_email_task.delay(
f"[Bug] {serializer.validated_data['title']}",
text_content,
Expand All @@ -130,13 +142,17 @@ class ContactViewSet(viewsets.GenericViewSet):

@extend_schema(request=ContactSerializer)
@action(detail=False, methods=["POST"])
def us(self, request: Request):
def us(self, request: Request, *args, **kwargs):
"""Allow to send an abuse report email."""
organization_code = self.kwargs.get("organization_code", None)
organization = get_object_or_404(Organization, code=organization_code)
serializer = ContactSerializer(data=request.data, context={"request": request})
serializer.is_valid(raise_exception=True)

text_content, html_content = render_message(
"contact_us", **serializer.validated_data
"contact_us",
organization_url=organization.website_url,
**serializer.validated_data,
)
send_email_task.delay(
f"[Contact] {serializer.validated_data['subject']}",
Expand Down
1 change: 0 additions & 1 deletion projects/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,6 @@ def redirect_to_swagger(request):
urlpatterns_v1 = [
path("", include(router.urls)),
path("", include("apps.accounts.urls")),
path("", include("apps.notifications.urls")),
path("", include("apps.organizations.urls")),
path("", include("apps.emailing.urls")),
path("healthz/", include(("apps.healthcheck.urls", "healthcheck"))),
Expand Down

0 comments on commit 5dc4776

Please sign in to comment.