LIL-284. Add api for moderation of comments

remotes/origin/hasaccess
Ivlev Denis 8 years ago
parent 6c60d411b4
commit b8e393f82f
  1. 46
      api/v1/serializers/course.py
  2. 4
      api/v1/urls.py
  3. 14
      api/v1/views.py

@ -1,7 +1,11 @@
from rest_framework import serializers
from apps.course.models import Category, Course, Material, Lesson, Like
from apps.course.models import (
Category, Course,
Comment, CourseComment, LessonComment,
Material, Lesson,
Like,
)
from .content import (
ImageObjectSerializer, ContentSerializer, ContentCreateSerializer,
GallerySerializer, GalleryImageSerializer,
@ -368,3 +372,41 @@ class CourseSerializer(serializers.ModelSerializer):
'update_at',
'deactivated_at',
)
class CommentSerializer(serializers.ModelSerializer):
class Meta:
model = Comment
fields = (
'id',
'content',
'author',
'parent',
'created_at',
'update_at',
)
def to_representation(self, instance):
if isinstance(instance, CourseComment):
return CourseCommentSerializer(instance, context=self.context).to_representation(instance)
elif isinstance(instance, LessonComment):
return LessonCommentSerializer(instance, context=self.context).to_representation(instance)
class CourseCommentSerializer(serializers.ModelSerializer):
class Meta:
model = CourseComment
fields = CommentSerializer.Meta.fields + (
'course',
)
class LessonCommentSerializer(serializers.ModelSerializer):
class Meta:
model = LessonComment
fields = CommentSerializer.Meta.fields + (
'lesson',
)

@ -10,6 +10,7 @@ from .auth import ObtainToken
from .views import (
AuthorBalanceViewSet, ConfigViewSet,
CategoryViewSet, CourseViewSet,
CommentViewSet,
MaterialViewSet, LikeViewSet,
ImageViewSet, TextViewSet,
ImageTextViewSet, VideoViewSet,
@ -20,8 +21,9 @@ from .views import (
router = DefaultRouter()
router.register(r'author-balance', AuthorBalanceViewSet, base_name='author-balance')
router.register(r'courses', CourseViewSet, base_name='courses')
router.register(r'categories', CategoryViewSet, base_name='categories')
router.register(r'courses', CourseViewSet, base_name='courses')
router.register(r'comments', CommentViewSet, base_name='comments')
router.register(r'materials', MaterialViewSet, base_name='materials')
router.register(r'lessons', LessonViewSet, base_name='lessons')
router.register(r'likes', LikeViewSet, base_name='likes')

@ -15,6 +15,7 @@ from .serializers.course import (
CategorySerializer, LikeSerializer,
CourseSerializer, CourseCreateSerializer,
CourseBulkChangeCategorySerializer,
CommentSerializer,
MaterialSerializer, MaterialCreateSerializer,
LessonSerializer, LessonCreateSerializer,
)
@ -35,7 +36,12 @@ from .serializers.user import (
from .permissions import IsAdmin, IsAdminOrIsSelf, IsAuthorOrAdmin, IsAuthorObjectOrAdmin
from apps.course.models import Category, Course, Material, Lesson, Like
from apps.course.models import (
Category, Course,
Comment, CourseComment, LessonComment,
Material, Lesson,
Like,
)
from apps.content.models import (
Image, Text, ImageText, Video,
Gallery, GalleryImage, ImageObject,
@ -329,3 +335,9 @@ class ConfigViewSet(generics.RetrieveUpdateAPIView):
if serializer.is_valid():
serializer.update(get_values(), serializer.validated_data)
return Response(serializer.data)
class CommentViewSet(ExtendedModelViewSet):
queryset = Comment.objects.all()
serializer_class = CommentSerializer
permission_classes = (IsAdmin,)

Loading…
Cancel
Save