from rest_framework.generics import RetrieveAPIView from rest_framework.response import Response from rest_framework import status from ..models import ContentRelease, HadisDatabaseVersion from ..serializers.version import ContentReleaseSyncSerializer, HadisDatabaseVersionSerializer from ..docs import content_release_sync_swagger class ContentReleaseSyncView(RetrieveAPIView): """ API view to get the latest content release for offline mode sync """ serializer_class = ContentReleaseSyncSerializer @content_release_sync_swagger def get(self, request, *args, **kwargs): return self.retrieve(request, *args, **kwargs) def get_object(self): return ContentRelease.objects.filter(is_active=True).order_by('-published_at').first() class HadisDatabaseVersionView(RetrieveAPIView): """ API view to get the latest pre-built SQLite database info and direct Nginx download URL """ serializer_class = HadisDatabaseVersionSerializer def get_object(self): return HadisDatabaseVersion.get_latest_active() def retrieve(self, request, *args, **kwargs): instance = self.get_object() if not instance: return Response( {"detail": "No active SQLite database version found."}, status=status.HTTP_404_NOT_FOUND ) serializer = self.get_serializer(instance) return Response(serializer.data)