from rest_framework import generics from rest_framework.response import Response from rest_framework.views import APIView from .models import ContactMessage, Doctor, Document, Page, Service, SiteSettings from .serializers import ( ContactMessageSerializer, DoctorSerializer, DocumentSerializer, PageSerializer, ServiceSerializer, SiteSettingsSerializer, ) class HomeAPIView(APIView): def get(self, request): settings_obj = SiteSettings.objects.order_by("id").first() data = { "site": SiteSettingsSerializer(settings_obj).data if settings_obj else None, "pages": PageSerializer(Page.objects.filter(is_published=True)[:6], many=True).data, "services": ServiceSerializer(Service.objects.all()[:6], many=True).data, "doctors": DoctorSerializer(Doctor.objects.all(), many=True).data, "documents": DocumentSerializer(Document.objects.all()[:4], many=True).data, } return Response(data) class SiteSettingsAPIView(generics.RetrieveAPIView): serializer_class = SiteSettingsSerializer def get_object(self): return SiteSettings.objects.order_by("id").first() class PageListAPIView(generics.ListAPIView): serializer_class = PageSerializer queryset = Page.objects.filter(is_published=True) class PageDetailAPIView(generics.RetrieveAPIView): serializer_class = PageSerializer lookup_field = "slug" queryset = Page.objects.filter(is_published=True) class ServiceListAPIView(generics.ListAPIView): serializer_class = ServiceSerializer queryset = Service.objects.all() class ServiceDetailAPIView(generics.RetrieveAPIView): serializer_class = ServiceSerializer lookup_field = "slug" queryset = Service.objects.all() class DoctorListAPIView(generics.ListAPIView): serializer_class = DoctorSerializer queryset = Doctor.objects.all() class DocumentListAPIView(generics.ListAPIView): serializer_class = DocumentSerializer queryset = Document.objects.all() class ContactMessageCreateAPIView(generics.CreateAPIView): serializer_class = ContactMessageSerializer queryset = ContactMessage.objects.all()