49 lines
1.8 KiB
Python
49 lines
1.8 KiB
Python
from datetime import datetime
|
|
|
|
import requests
|
|
from django.conf import settings
|
|
from django.contrib.auth import authenticate
|
|
from rest_framework import status
|
|
from rest_framework.permissions import IsAuthenticated
|
|
from rest_framework.response import Response
|
|
from rest_framework.views import APIView
|
|
from rest_framework_simplejwt.authentication import JWTAuthentication
|
|
from module_project.utils import ApiResponse
|
|
from module_project import constants
|
|
|
|
from .serializers import InAppNotificationSerializer
|
|
|
|
from ..models import InAppNotification
|
|
|
|
|
|
class InAppNotificationCountAPIView(APIView):
|
|
authentication_classes = [JWTAuthentication]
|
|
permission_classes = [IsAuthenticated]
|
|
model = InAppNotification
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
count = InAppNotification.pending_read_count(user=request.user)
|
|
return ApiResponse.success(message=constants.SUCCESS, data={"count": count})
|
|
|
|
|
|
class InAppNotificationListAPIView(APIView):
|
|
authentication_classes = [JWTAuthentication]
|
|
permission_classes = [IsAuthenticated]
|
|
model = InAppNotification
|
|
serializer_class = InAppNotificationSerializer
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
obj = InAppNotification.latest_15(user=request.user)
|
|
serializer_obj = self.serializer_class(obj, many=True)
|
|
return ApiResponse.success(message=constants.SUCCESS, data=serializer_obj.data)
|
|
|
|
|
|
class InAppNotificationReadAPIView(APIView):
|
|
authentication_classes = [JWTAuthentication]
|
|
permission_classes = [IsAuthenticated]
|
|
model = InAppNotification
|
|
serializer_class = InAppNotificationSerializer
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
obj = InAppNotification.objects.filter(user=request.user).update(is_read=True)
|
|
return ApiResponse.success(message=constants.SUCCESS) |