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