12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- from django.core.urlresolvers import reverse
- from rest_framework import serializers
- from misago.core.utils import format_plaintext_for_html
- from misago.categories.models import Category
- __all__ = ['CategorySerializer']
- class CategorySerializer(serializers.ModelSerializer):
- description = serializers.SerializerMethodField()
- is_read = serializers.SerializerMethodField()
- subcategories = serializers.SerializerMethodField()
- absolute_url = serializers.SerializerMethodField()
- last_poster_url = serializers.SerializerMethodField()
- last_thread_url = serializers.SerializerMethodField()
- acl = serializers.SerializerMethodField()
- class Meta:
- model = Category
- fields = (
- 'id',
- 'name',
- 'description',
- 'is_closed',
- 'threads',
- 'posts',
- 'last_post_on',
- 'last_thread_title',
- 'last_poster_name',
- 'css_class',
- 'is_read',
- 'subcategories',
- 'absolute_url',
- 'last_thread_url',
- 'last_poster_url',
- 'acl',
- )
- def get_description(self, obj):
- if obj.description:
- return {
- 'plain': obj.description,
- 'html': format_plaintext_for_html(obj.description),
- }
- else:
- return None
- def get_is_read(self, obj):
- try:
- return obj.is_read
- except AttributeError:
- return None
- def get_subcategories(self, obj):
- try:
- return CategorySerializer(obj.subcategories, many=True).data
- except AttributeError:
- return []
- def get_absolute_url(self, obj):
- return obj.get_absolute_url()
- def get_last_thread_url(self, obj):
- return obj.get_last_thread_url()
- def get_last_poster_url(self, obj):
- if obj.last_poster_id:
- return reverse('misago:user', kwargs={
- 'user_slug': obj.last_poster_slug,
- 'user_id': obj.last_poster_id,
- })
- else:
- return None
- def get_acl(self, obj):
- try:
- return obj.acl
- except AttributeError:
- return []
|