12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- from django.core.urlresolvers import reverse
- from rest_framework import serializers
- from misago.core.utils import format_plaintext_for_html
- 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()
- uploader_ip = serializers.SerializerMethodField()
- url = serializers.SerializerMethodField()
- class Meta:
- model = Attachment
- fields = (
- 'id',
- 'filetype',
- 'post',
- 'uploaded_on',
- 'uploader_name',
- 'uploader_ip',
- 'filename',
- 'downloads',
- '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_uploader_ip(self, obj):
- if self.context['user'].acl['can_see_users_ips']:
- return obj.uploader_ip
- else:
- return None
- 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
|