""" Centralized email service API views. Migrated from apps.email_service.views """ from rest_framework.views import APIView from rest_framework.response import Response from rest_framework import status from rest_framework.permissions import AllowAny from django.contrib.sites.shortcuts import get_current_site from apps.email_service.services import EmailService class SendEmailView(APIView): """ API endpoint for sending emails. Migrated from apps.email_service.views.SendEmailView to centralized API structure. """ permission_classes = [AllowAny] # Allow unauthenticated access def post(self, request): """ Send an email via the email service. Request body: { "to": "recipient@example.com", "subject": "Email subject", "text": "Email body text", "from_email": "sender@example.com" // optional } """ data = request.data to = data.get("to") subject = data.get("subject") text = data.get("text") from_email = data.get("from_email") # Optional if not all([to, subject, text]): return Response( { "error": "Missing required fields", "required_fields": ["to", "subject", "text"], }, status=status.HTTP_400_BAD_REQUEST, ) try: # Get the current site site = get_current_site(request) # Send email using the site's configuration response = EmailService.send_email( to=to, subject=subject, text=text, from_email=from_email, # Will use site's default if None site=site, ) return Response( {"message": "Email sent successfully", "response": response}, status=status.HTTP_200_OK, ) except Exception as e: return Response( {"error": str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR )