добавить возможность для отправки на почту

This commit is contained in:
Mike0001-droid 2024-07-22 10:19:32 +05:00
parent 527dd8a20f
commit 27253c2ed2
2 changed files with 51 additions and 3 deletions

View File

@ -0,0 +1,32 @@
from rest_framework.schemas import AutoSchema
import coreapi
import coreschema
class SendMailSchema(AutoSchema):
def get_serializer_fields(self, path, method):
return [
coreapi.Field(
name='FCs',
location='form',
required=False,
schema=coreschema.String(description='ФИО')
),
coreapi.Field(
name='Name of organization',
location='form',
required=False,
schema=coreschema.String(description='Название организации')
),
coreapi.Field(
name='Email',
location='form',
required=False,
schema=coreschema.String(description='Почта отправителя')
),
coreapi.Field(
name='Text',
location='form',
required=False,
schema=coreschema.String(description='Текст сообщения')
),
]

View File

@ -1,8 +1,12 @@
from rest_framework.viewsets import GenericViewSet from rest_framework.viewsets import GenericViewSet
from rest_framework.response import Response from rest_framework.response import Response
from rest_framework import status from rest_framework import status
from .models import Team, SupportInfo from rest_framework.decorators import action
from .serializers import TeamSerializer, SupportInfoSerializer from config_site.models import Team, SupportInfo
from config_site.schemas import SendMailSchema
from config_site.serializers import TeamSerializer, SupportInfoSerializer
from django.core.mail import EmailMessage
from conf import settings
class TeamViewSet(GenericViewSet): class TeamViewSet(GenericViewSet):
@ -23,3 +27,15 @@ class SupportInfoViewSet(GenericViewSet):
serializer = self.get_serializer(queryset) serializer = self.get_serializer(queryset)
return Response(serializer.data, status=status.HTTP_200_OK) return Response(serializer.data, status=status.HTTP_200_OK)
@action(detail=False, methods=['post'], schema=SendMailSchema())
def send_mail(self, request):
title = f"{request.data.get('Name of organization')} - {request.data.get('FCs')}"
email = EmailMessage(
title,
request.data.get('Text'),
settings.EMAIL_HOST_USER,
(request.data.get('Email'),)
)
email.send()
return Response("Сообщение успешно отправлено!", status=status.HTTP_200_OK)