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