159 lines
5.3 KiB
Python
159 lines
5.3 KiB
Python
from django.db import transaction
|
|
from django.utils import timezone
|
|
from rest_framework import status, generics
|
|
from rest_framework.views import APIView
|
|
from rest_framework_simplejwt.tokens import RefreshToken
|
|
from . import serializers
|
|
from accounts.models import IAmPrincipal
|
|
from goodtimes import constants
|
|
from goodtimes.services import SMSError, SMSService
|
|
from manage_cms import models
|
|
from taggit.models import Tag
|
|
from taggit.models import TaggedItem
|
|
from django.contrib.contenttypes.models import ContentType
|
|
|
|
# from nifty11_project.services import SMSError, SMSService
|
|
from goodtimes.utils import ApiResponse
|
|
from goodtimes import date_utils
|
|
from rest_framework.permissions import AllowAny, IsAuthenticated
|
|
from rest_framework_simplejwt.authentication import JWTAuthentication
|
|
|
|
|
|
class NewsAndArticlesView(APIView):
|
|
authentication_classes = [JWTAuthentication]
|
|
permission_classes = [IsAuthenticated]
|
|
|
|
def get(self, request):
|
|
queryset = models.NewsAndArticles.objects.filter(active=True)
|
|
serializer = serializers.NewsAndArticlesSerializer(queryset, many=True)
|
|
success_response = {
|
|
"status": status.HTTP_200_OK,
|
|
"message": constants.SUCCESS,
|
|
"data": serializer.data,
|
|
}
|
|
return ApiResponse.success(**success_response)
|
|
|
|
|
|
class NewsLettersView(APIView):
|
|
authentication_classes = []
|
|
permission_classes = []
|
|
|
|
def get(self, request):
|
|
queryset = models.Newsletter.objects.filter(active=True, is_published=True)
|
|
serializer = serializers.NewsLetterSerializer(queryset, many=True)
|
|
|
|
return ApiResponse.success(
|
|
{"data": serializer.data, "message": constants.SUCCESS}
|
|
)
|
|
|
|
|
|
class FaqView(APIView):
|
|
authentication_classes = []
|
|
permission_classes = []
|
|
|
|
def get(self, request):
|
|
queryset = models.Faqs.objects.filter(active=True)
|
|
serializer = serializers.FaqSerializer(queryset, many=True)
|
|
|
|
success_response = {
|
|
"status": status.HTTP_200_OK,
|
|
"message": constants.SUCCESS,
|
|
"data": serializer.data,
|
|
}
|
|
return ApiResponse.success(**success_response)
|
|
|
|
|
|
class OrganizationView(APIView):
|
|
# queryset = models.Organization.objects.latest('id')
|
|
model = models.Organization
|
|
serializer_class = serializers.OrganizationSerializer
|
|
authentication_classes = []
|
|
permission_classes = []
|
|
|
|
def get(self, request):
|
|
queryset = self.model.objects.filter(active=True).last()
|
|
serializer = self.serializer_class(queryset)
|
|
|
|
success_response = {
|
|
"status": status.HTTP_200_OK,
|
|
"message": constants.SUCCESS,
|
|
"data": serializer.data,
|
|
}
|
|
return ApiResponse.success(**success_response)
|
|
|
|
|
|
class EducationVideoView(APIView):
|
|
model = models.Education
|
|
serializer_class = serializers.EducationVideoSerializer
|
|
authentication_classes = []
|
|
permission_classes = []
|
|
|
|
def get(self, request):
|
|
queryset = self.model.objects.prefetch_related("tags").filter(
|
|
content_type=self.model.VIDEO,
|
|
active=True,
|
|
published_at__lte=date_utils.get_current_date().isoformat(),
|
|
withdrawn_at__gte=date_utils.get_current_date().isoformat(),
|
|
)
|
|
serializer = self.serializer_class(
|
|
queryset, many=True, context={"request": request}
|
|
)
|
|
success_response = {
|
|
"status": status.HTTP_200_OK,
|
|
"message": constants.SUCCESS,
|
|
"data": serializer.data,
|
|
}
|
|
return ApiResponse.success(**success_response)
|
|
|
|
|
|
class EducationMaterialView(APIView):
|
|
model = models.Education
|
|
serializer_class = serializers.EducationMaterialSerializer
|
|
authentication_classes = []
|
|
permission_classes = []
|
|
|
|
def get(self, request):
|
|
queryset = self.model.objects.prefetch_related("tags").filter(
|
|
content_type=self.model.MATERIAL,
|
|
active=True,
|
|
published_at__lte=date_utils.get_current_date().isoformat(),
|
|
withdrawn_at__gte=date_utils.get_current_date().isoformat(),
|
|
)
|
|
serializer = self.serializer_class(
|
|
queryset, many=True, context={"request": request}
|
|
)
|
|
success_response = {
|
|
"status": status.HTTP_200_OK,
|
|
"message": constants.SUCCESS,
|
|
"data": serializer.data,
|
|
}
|
|
return ApiResponse.success(**success_response)
|
|
|
|
|
|
class EducationTagsView(APIView):
|
|
model = models.Education
|
|
serializer_class = serializers.TagSerializer
|
|
authentication_classes = []
|
|
permission_classes = []
|
|
|
|
def get(self, request):
|
|
# Get ContentType for the Education model
|
|
education_content_type = ContentType.objects.get_for_model(self.model)
|
|
|
|
# Fetch tags associated with Education instances
|
|
education_tags = (
|
|
TaggedItem.objects.filter(content_type=education_content_type)
|
|
.values_list("tag", flat=True)
|
|
)
|
|
|
|
# Retrieve actual tag objects from Tag model using the tag IDs obtained
|
|
queryset = Tag.objects.filter(id__in=education_tags)
|
|
|
|
serializer = self.serializer_class(queryset, many=True)
|
|
success_response = {
|
|
"status": status.HTTP_200_OK,
|
|
"message": constants.SUCCESS,
|
|
"data": serializer.data,
|
|
}
|
|
return ApiResponse.success(**success_response)
|