Skip to content

Commit 4cea471

Browse files
committed
add organization to contact endpoints
1 parent cadc0b9 commit 4cea471

File tree

11 files changed

+80
-27
lines changed

11 files changed

+80
-27
lines changed

apps/emailing/templates/abuse.html

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@
1515
</mj-text>
1616

1717
<mj-text>
18-
URL: <span style="color: #444444">{{ url }}</span>
18+
URL: <a href="{{ url }}" ="color: #444444">{{ url }}</span>
19+
</mj-text>
20+
<mj-text font-size="14px" color="#444444">
21+
On portal : <a href="{{ organization_url }}" style="#444444">{{ organization_url }}</a>
1922
</mj-text>
20-
2123

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

apps/emailing/templates/abuse.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Subject: {{ title }}
22
From: {{ reported_by }}
33
URL: {{ url }}
4-
4+
From portal {{ organization_url }}
55
{{ message|safe }}

apps/emailing/templates/bug.html

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@
1515
</mj-text>
1616

1717
<mj-text>
18-
URL: <span style="color: #444444">{{ url }}</span>
18+
URL: <a href="{{ url }}" ="color: #444444">{{ url }}</span>
19+
</mj-text>
20+
<mj-text font-size="14px" color="#444444">
21+
On portal : <a href="{{ organization_url }}" style="#444444">{{ organization_url }}</a>
1922
</mj-text>
20-
2123

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

apps/emailing/templates/bug.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Subject: {{ title }}
22
From: {{ reported_by }}
33
URL: {{ url }}
4-
4+
From portal {{ organization_url }}
55
{{ message|safe }}

apps/emailing/templates/contact_us.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
From: <span style="color: #444444">{{ email }}</span>
1515
</mj-text>
1616

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

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
Subject: {{ subject }}
22
From: {{ email }}
3-
3+
From portal {{ organization_url }}
44
{{ content|safe }}

apps/notifications/tests/views/test_contact_us.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,17 @@
66
from rest_framework import status
77

88
from apps.commons.test import JwtAPITestCase, TestRoles
9+
from apps.organizations.factories import OrganizationFactory
910

1011
faker = Faker()
1112

1213

1314
class ContactTestCase(JwtAPITestCase):
15+
@classmethod
16+
def setUpTestData(cls):
17+
super().setUpTestData()
18+
cls.organization = OrganizationFactory()
19+
1420
@parameterized.expand(
1521
[
1622
(TestRoles.ANONYMOUS,),
@@ -26,6 +32,8 @@ def test_contact_us(self, role, send_email):
2632
"content": faker.text(),
2733
"email": faker.email(),
2834
}
29-
response = self.client.post(reverse("Contact-us"), data=payload)
35+
response = self.client.post(
36+
reverse("Contact-us", args=(self.organization.code,)), data=payload
37+
)
3038
self.assertEqual(response.status_code, status.HTTP_200_OK, response.content)
3139
send_email.assert_called_once()

apps/notifications/tests/views/test_report.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,17 @@
66
from rest_framework import status
77

88
from apps.commons.test import JwtAPITestCase, TestRoles
9+
from apps.organizations.factories import OrganizationFactory
910

1011
faker = Faker()
1112

1213

1314
class ReportTestCase(JwtAPITestCase):
15+
@classmethod
16+
def setUpTestData(cls):
17+
super().setUpTestData()
18+
cls.organization = OrganizationFactory()
19+
1420
@parameterized.expand(
1521
[
1622
(TestRoles.ANONYMOUS,),
@@ -27,7 +33,9 @@ def test_bug_report(self, role, send_email):
2733
"reported_by": faker.email(),
2834
"url": faker.url(),
2935
}
30-
response = self.client.post(reverse("Report-bug"), data=payload)
36+
response = self.client.post(
37+
reverse("Report-bug", args=(self.organization.code,)), data=payload
38+
)
3139
self.assertEqual(response.status_code, status.HTTP_200_OK, response.content)
3240
send_email.assert_called_once()
3341

@@ -47,6 +55,8 @@ def test_abuse_report(self, role, send_email):
4755
"reported_by": faker.email(),
4856
"url": faker.url(),
4957
}
50-
response = self.client.post(reverse("Report-abuse"), data=payload)
58+
response = self.client.post(
59+
reverse("Report-abuse", args=(self.organization.code,)), data=payload
60+
)
5161
self.assertEqual(response.status_code, status.HTTP_200_OK, response.content)
5262
send_email.assert_called_once()

apps/notifications/urls.py

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,31 @@
1-
from django.urls import include, path
21
from rest_framework.routers import SimpleRouter
32

4-
from . import views
3+
from apps.commons.urls import organization_router_register
4+
5+
from .views import (
6+
ContactViewSet,
7+
NotificationSettingsViewSet,
8+
NotificationsViewSet,
9+
ReportViewSet,
10+
)
511

612
router = SimpleRouter()
7-
router.register(r"report", views.ReportViewSet, basename="Report")
8-
router.register(r"contact", views.ContactViewSet, basename="Contact")
9-
router.register(r"notification", views.NotificationsViewSet, basename="Notification")
13+
14+
router.register(r"notification", NotificationsViewSet, basename="Notification")
1015
router.register(
1116
r"notifications-setting",
12-
views.NotificationSettingsViewSet,
17+
NotificationSettingsViewSet,
1318
basename="NotificationSettings",
1419
)
15-
16-
urlpatterns = [
17-
path(r"", include(router.urls)),
18-
]
20+
organization_router_register(
21+
router,
22+
r"report",
23+
ReportViewSet,
24+
basename="Report",
25+
)
26+
organization_router_register(
27+
router,
28+
r"contact",
29+
ContactViewSet,
30+
basename="Contact",
31+
)

apps/notifications/views.py

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
from django.conf import settings
55
from django.db import transaction
6+
from django.shortcuts import get_object_or_404
67
from drf_spectacular.utils import extend_schema
78
from rest_framework import status, viewsets
89
from rest_framework.decorators import action
@@ -16,6 +17,7 @@
1617
from apps.commons.views import ListViewSet, MultipleIDViewsetMixin
1718
from apps.emailing.tasks import send_email_task
1819
from apps.emailing.utils import render_message
20+
from apps.organizations.models import Organization
1921
from apps.organizations.permissions import HasOrganizationPermission
2022

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

8486
@extend_schema(request=EmailReportSerializer)
8587
@action(detail=False, methods=["POST"])
86-
def abuse(self, request: Request):
88+
def abuse(self, request: Request, *args, **kwargs):
8789
"""Allow to send an abuse report email."""
90+
organization_code = self.kwargs.get("organization_code", None)
91+
organization = get_object_or_404(Organization, code=organization_code)
8892
serializer = EmailReportSerializer(
8993
data=request.data, context={"request": request}
9094
)
9195
serializer.is_valid(raise_exception=True)
9296

9397
text_content, html_content = render_message(
94-
"abuse", **serializer.validated_data
98+
"abuse",
99+
organization_url=organization.website_url,
100+
**serializer.validated_data,
95101
)
96102
send_email_task.delay(
97103
f"[Abuse] {serializer.validated_data['title']}",
@@ -104,14 +110,20 @@ def abuse(self, request: Request):
104110

105111
@extend_schema(request=EmailReportSerializer)
106112
@action(detail=False, methods=["POST"])
107-
def bug(self, request: Request):
113+
def bug(self, request: Request, *args, **kwargs):
108114
"""Allow to send a bug report email."""
115+
organization_code = self.kwargs.get("organization_code", None)
116+
organization = get_object_or_404(Organization, code=organization_code)
109117
serializer = EmailReportSerializer(
110118
data=request.data, context={"request": request}
111119
)
112120
serializer.is_valid(raise_exception=True)
113121

114-
text_content, html_content = render_message("bug", **serializer.validated_data)
122+
text_content, html_content = render_message(
123+
"bug",
124+
organization_url=organization.website_url,
125+
**serializer.validated_data,
126+
)
115127
send_email_task.delay(
116128
f"[Bug] {serializer.validated_data['title']}",
117129
text_content,
@@ -130,13 +142,17 @@ class ContactViewSet(viewsets.GenericViewSet):
130142

131143
@extend_schema(request=ContactSerializer)
132144
@action(detail=False, methods=["POST"])
133-
def us(self, request: Request):
145+
def us(self, request: Request, *args, **kwargs):
134146
"""Allow to send an abuse report email."""
147+
organization_code = self.kwargs.get("organization_code", None)
148+
organization = get_object_or_404(Organization, code=organization_code)
135149
serializer = ContactSerializer(data=request.data, context={"request": request})
136150
serializer.is_valid(raise_exception=True)
137151

138152
text_content, html_content = render_message(
139-
"contact_us", **serializer.validated_data
153+
"contact_us",
154+
organization_url=organization.website_url,
155+
**serializer.validated_data,
140156
)
141157
send_email_task.delay(
142158
f"[Contact] {serializer.validated_data['subject']}",

0 commit comments

Comments
 (0)