from rest_framework import permissions, viewsets, generics from django.http import HttpResponse from django.shortcuts import get_object_or_404 from PyRSS2Gen import RSS2, RSSItem, Guid from . import models, serializers from cp_video.pagination import LimitPagination class VideoAPIView(viewsets.ModelViewSet): model = models.Video serializer_class = serializers.VideoSerializer permission_classes = [permissions.AllowAny] pagination_class = LimitPagination default_limit = 20 def get_queryset(self): queryset = self.model.objects.filter(s3_file__isnull=False) return queryset class VideoRetrieveAPIView(generics.RetrieveAPIView): queryset = models.Playlist.objects.all() serializer_class = serializers.PlaylistSerializer permission_classes = [permissions.AllowAny] lookup_field = 'pk' def playlist_mrss_view(request, pk): mrss_items = [] playlist = get_object_or_404(models.Playlist, pk=pk) for video in playlist.videos.all(): item = RSSItem( title=video.title, link='link', description=video.description, guid=Guid('http://example.com/item1'), pubDate=video.created, ) mrss_items.append(item) rss = RSS2( title=playlist.title, link='http://example.com/mrss', description=playlist.description, items=mrss_items, ) # Возвращаем mRSS-канал как HTTP-ответ response = HttpResponse(content_type='application/rss+xml') rss.write_xml(response) return response