notifications/apps/emails/views.py
Sayyid Hamid Mahdavi f91f279a5a celery beat
2025-09-06 17:44:07 +03:30

47 lines
1.7 KiB
Python

from django.shortcuts import render
from django.http import Http404
from django.shortcuts import render
from oauth2_provider.contrib.rest_framework import TokenMatchesOASRequirements
from rest_framework import viewsets, mixins
from rest_framework.generics import get_object_or_404
from rest_framework.viewsets import GenericViewSet
from .models import Email
from .serializers import EmailSerializer
from apps.gooyal_oauth2.models import Application
from apps.gooyal_oauth2.rest_framework import IsAuthenticatedOrTokenMatchesOASRequirements
from apps.gooyal_oauth2.utils import get_application
from ..users.models import User
class ApplicationEmailViewSet(
# mixins.RetrieveModelMixin,
mixins.ListModelMixin,
# mixins.UpdateModelMixin,
# mixins.DestroyModelMixin,
mixins.CreateModelMixin,
GenericViewSet
):
queryset = Email.objects.all()
serializer_class = EmailSerializer
permission_classes = [IsAuthenticatedOrTokenMatchesOASRequirements]
required_alternate_scopes = {
"GET": [["notifications.application.email:submit_email"]],
"POST": [["notifications.application.email:submit_email"]],
}
def get_object(self):
queryset = self.get_queryset()
user_uuid = self.kwargs.get('user_uuid')
push_message = get_object_or_404(queryset, user=user_uuid)
return push_message
def perform_create(self, serializer):
user_uuid = self.kwargs.get('user_uuid')
user = get_object_or_404(User, uuid=user_uuid)
application = get_application(self.request)
instance = serializer.save(user=user, application=application)
if not instance.queue:
instance.send()