from django.urls import reverse from rest_framework import serializers from ..models import Attachment __all__ = ["AttachmentSerializer"] class AttachmentSerializer(serializers.ModelSerializer): post = serializers.PrimaryKeyRelatedField(read_only=True) acl = serializers.SerializerMethodField() is_image = serializers.SerializerMethodField() filetype = serializers.SerializerMethodField() url = serializers.SerializerMethodField() class Meta: model = Attachment fields = [ "id", "filetype", "post", "uploaded_on", "uploader_name", "filename", "size", "acl", "is_image", "url", ] def get_acl(self, obj): try: return obj.acl except AttributeError: return None def get_is_image(self, obj): return obj.is_image def get_filetype(self, obj): return obj.filetype.name def get_url(self, obj): return { "index": obj.get_absolute_url(), "thumb": obj.get_thumbnail_url(), "uploader": self.get_uploader_url(obj), } def get_uploader_url(self, obj): if obj.uploader_id: return reverse( "misago:user", kwargs={"slug": obj.uploader_slug, "pk": obj.uploader_id} ) else: return None