12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- from django.urls import reverse
- from rest_framework import serializers
- from misago.threads.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
|