Browse Source

#644: dropped BasicCategorySerializer

Rafał Pitoń 8 years ago
parent
commit
a50052670e

+ 3 - 25
misago/categories/serializers.py

@@ -2,16 +2,13 @@ from rest_framework import serializers
 
 from django.urls import reverse
 
+from misago.core.serializers import Subsettable
 from misago.core.utils import format_plaintext_for_html
 
 from .models import Category
 
 
-__all__ = [
-    'BasicCategorySerializer',
-    'IndexCategorySerializer',
-    'CategorySerializer',
-]
+__all__ = ['CategorySerializer']
 
 
 def last_activity_detail(f):
@@ -32,7 +29,7 @@ def last_activity_detail(f):
     return decorator
 
 
-class CategorySerializer(serializers.ModelSerializer):
+class CategorySerializer(serializers.ModelSerializer, Subsettable):
     parent = serializers.PrimaryKeyRelatedField(read_only=True)
     description = serializers.SerializerMethodField()
     is_read = serializers.SerializerMethodField()
@@ -123,22 +120,3 @@ class CategorySerializer(serializers.ModelSerializer):
         return {
             'read': obj.get_read_api_url(),
         }
-
-
-class BasicCategorySerializer(CategorySerializer):
-    class Meta:
-        model = Category
-        fields = (
-            'id',
-            'parent',
-            'name',
-            'description',
-            'is_closed',
-            'css_class',
-            'absolute_url',
-            'api_url',
-            'level',
-            'lft',
-            'rght',
-            'is_read',
-        )

+ 3 - 9
misago/threads/serializers/post.py

@@ -3,7 +3,7 @@ from rest_framework import serializers
 from django.urls import reverse
 
 from misago.categories.models import Category
-from misago.categories.serializers import BasicCategorySerializer
+from misago.categories.serializers import CategorySerializer
 from misago.threads.models import Post
 from misago.users.serializers import BasicUserSerializer, UserSerializer
 
@@ -168,14 +168,8 @@ class PostSerializer(serializers.ModelSerializer):
             return None
 
 
-class CategoryFeedSerializer(BasicCategorySerializer):
-    class Meta:
-        model = Category
-        fields = (
-            'name',
-            'css_class',
-            'absolute_url',
-        )
+CategoryFeedSerializer = CategorySerializer.subset(
+    'name', 'css_class', 'absolute_url')
 
 
 class PostFeedSerializer(PostSerializer):

+ 6 - 1
misago/threads/serializers/thread.py

@@ -2,7 +2,7 @@ from rest_framework import serializers
 
 from django.urls import reverse
 
-from misago.categories.serializers import BasicCategorySerializer
+from misago.categories.serializers import CategorySerializer
 from misago.threads.models import Thread
 
 from .poll import PollSerializer
@@ -16,6 +16,11 @@ __all__ = [
 ]
 
 
+BasicCategorySerializer = CategorySerializer.subset(
+    'id', 'parent', 'name', 'description', 'is_closed', 'css_class',
+    'absolute_url', 'api_url', 'level', 'lft', 'rght', 'is_read')
+
+
 class ThreadSerializer(serializers.ModelSerializer):
     category = BasicCategorySerializer(many=False, read_only=True)
 

+ 6 - 1
misago/threads/viewmodels/category.py

@@ -3,7 +3,7 @@ from django.http import Http404
 from misago.acl import add_acl
 from misago.categories.models import Category
 from misago.categories.permissions import allow_browse_category, allow_see_category
-from misago.categories.serializers import BasicCategorySerializer
+from misago.categories.serializers import CategorySerializer
 from misago.core.shortcuts import validate_slug
 from misago.core.viewmodel import ViewModel as BaseViewModel
 from misago.threads.permissions import allow_use_private_threads
@@ -88,3 +88,8 @@ class PrivateThreadsCategory(ViewModel):
         allow_use_private_threads(request.user)
 
         return categories[0]
+
+
+BasicCategorySerializer = CategorySerializer.subset(
+    'id', 'parent', 'name', 'description', 'is_closed', 'css_class',
+    'absolute_url', 'api_url', 'level', 'lft', 'rght', 'is_read')