diff --git a/apps/epg/api_urls.py b/apps/epg/api_urls.py index d1ad7dcf..2818e66b 100644 --- a/apps/epg/api_urls.py +++ b/apps/epg/api_urls.py @@ -1,12 +1,13 @@ from django.urls import path, include from rest_framework.routers import DefaultRouter -from .api_views import EPGSourceViewSet, ProgramViewSet, EPGGridAPIView, EPGImportAPIView +from .api_views import EPGSourceViewSet, ProgramViewSet, EPGGridAPIView, EPGImportAPIView, EPGDataViewSet app_name = 'epg' router = DefaultRouter() router.register(r'sources', EPGSourceViewSet, basename='epg-source') router.register(r'programs', ProgramViewSet, basename='program') +router.register(r'epgdata', EPGDataViewSet, basename='epgdata') urlpatterns = [ path('grid/', EPGGridAPIView.as_view(), name='epg_grid'), diff --git a/apps/epg/api_views.py b/apps/epg/api_views.py index f59f63e2..571a7165 100644 --- a/apps/epg/api_views.py +++ b/apps/epg/api_views.py @@ -7,8 +7,8 @@ from drf_yasg.utils import swagger_auto_schema from drf_yasg import openapi from django.utils import timezone from datetime import timedelta -from .models import EPGSource, ProgramData # Using ProgramData -from .serializers import ProgramDataSerializer, EPGSourceSerializer # Updated serializer +from .models import EPGSource, ProgramData, EPGData # Added ProgramData +from .serializers import ProgramDataSerializer, EPGSourceSerializer, EPGDataSerializer # Updated serializer from .tasks import refresh_epg_data logger = logging.getLogger(__name__) @@ -78,3 +78,16 @@ class EPGImportAPIView(APIView): refresh_epg_data.delay() # Trigger Celery task logger.info("EPGImportAPIView: Task dispatched to refresh EPG data.") return Response({'success': True, 'message': 'EPG data import initiated.'}, status=status.HTTP_202_ACCEPTED) + + +# ───────────────────────────── +# 5) EPG Data View +# ───────────────────────────── +class EPGDataViewSet(viewsets.ReadOnlyModelViewSet): + """ + API endpoint that allows EPGData objects to be viewed. + """ + queryset = EPGData.objects.all() + serializer_class = EPGDataSerializer + permission_classes = [IsAuthenticated] + diff --git a/apps/epg/serializers.py b/apps/epg/serializers.py index 9a62e74e..b10e7371 100644 --- a/apps/epg/serializers.py +++ b/apps/epg/serializers.py @@ -13,12 +13,14 @@ class ProgramDataSerializer(serializers.ModelSerializer): fields = ['id', 'start_time', 'end_time', 'title', 'sub_title', 'description', 'tvg_id'] class EPGDataSerializer(serializers.ModelSerializer): - programs = ProgramDataSerializer(many=True, read_only=True) - channel = serializers.SerializerMethodField() - - def get_channel(self, obj): - return {"id": obj.channel.id, "name": obj.channel.name} if obj.channel else None - + """ + Only returns the tvg_id and the 'name' field from EPGData. + We assume 'name' is effectively the channel name. + """ class Meta: model = EPGData - fields = ['id', 'channel', 'name', 'programs'] + fields = [ + 'id', + 'tvg_id', + 'name', + ] \ No newline at end of file