from django.urls import reverse from django.utils.text import slugify from rest_framework import serializers from user.serializers import UserSerializer from .models import Torrent, File class TorrentSerializer(serializers.ModelSerializer): count_files = serializers.IntegerField(read_only=True, source="len_files") download_url = serializers.SerializerMethodField(read_only=True) class Meta: model = Torrent fields = "__all__" def get_download_url(self, obj): return reverse("torrent:download_torrent", kwargs={"torrent_id": obj.id}) class FileSerializer(serializers.ModelSerializer): is_stream_video = serializers.BooleanField(read_only=True) is_video = serializers.BooleanField(read_only=True) download_url = serializers.SerializerMethodField(read_only=True) flux_url = serializers.SerializerMethodField(read_only=True) class Meta: model = File fields = "__all__" def get_download_url(self, obj): return reverse("torrent:download_file", kwargs={"file_id": obj.id}) def get_flux_url(self, obj: File): return f'{reverse("torrent:flux_file", kwargs={"file_id": obj.id})}#{slugify(obj.filename)}'