diff --git a/server/proj/config_site/schemas.py b/server/proj/config_site/schemas.py new file mode 100644 index 0000000..4971aee --- /dev/null +++ b/server/proj/config_site/schemas.py @@ -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='Текст сообщения') + ), + ] \ No newline at end of file diff --git a/server/proj/config_site/views.py b/server/proj/config_site/views.py index df50a1e..dfb31ec 100644 --- a/server/proj/config_site/views.py +++ b/server/proj/config_site/views.py @@ -1,8 +1,12 @@ from rest_framework.viewsets import GenericViewSet from rest_framework.response import Response from rest_framework import status -from .models import Team, SupportInfo -from .serializers import TeamSerializer, SupportInfoSerializer +from rest_framework.decorators import action +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): @@ -22,4 +26,16 @@ class SupportInfoViewSet(GenericViewSet): queryset = self.get_queryset().first() serializer = self.get_serializer(queryset) return Response(serializer.data, status=status.HTTP_200_OK) - \ No newline at end of file + + @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) + \ No newline at end of file