Esempio n. 1
0
 def comment(self, request, pk):
     user = request.user
     obj = get_obj(self.model_class,pk)
     serializer = CommentSerializer(data=request.data)
     if not serializer.is_valid():
         return JsonResponse(u'数据格式错误', code=JsonResponse.CODE_ERROR_DATA, data=serializer.errors)
     comment = Comment.objects.create(author=user, content_object=obj, **serializer.validated_data)
     serializer = CommentSerializer(comment)
     return JsonResponse(u'ok', data=serializer.data,status=1)
class VideoSerializer(serializers.HyperlinkedModelSerializer):
    url = VideoUrlHyperlinkedIdentityField("video_detail_api")
    #category = CategorySerializer(many=False, read_only=True)
    comment_set = CommentSerializer(many=True, read_only=True)
    category_url = serializers.CharField(source='category.get_absolute_url',
                                         read_only=True)

    #category_image = serializers.CharField(source='category.get_image_url', read_only=True)
    #category = serializers.PrimaryKeyRelatedField(queryset=Category.objects.all())
    class Meta:
        model = Video
        fields = [
            "url",
            'id',
            'slug',
            'title',
            'order',
            'embed_code',
            'free_preview',
            'share_message',
            'timestamp',
            #"category",
            #"category_image",
            "category_url",
            "comment_set",
        ]
Esempio n. 3
0
class PostCommentSerializer(serializers.ModelSerializer):
    comments = CommentSerializer(many=True, read_only=True)

    class Meta:
        model = Post
        exclude = ['creator']
        read_only_fields = ['create_at']
Esempio n. 4
0
class PermissionDetailSerializer(PermissionListSerializer):
    """
    Serializer for the detail view of Permission viewset
    """

    comments = CommentSerializer(
        many=True,
        read_only=True,
    )

    class Meta:
        """
        Meta class for PermissionDetailSerializer
        """

        model = Permission
        exclude = [
            'datetime_created',
        ]
        read_only = [
            'id',
            'subscriber',
            'authority',
            'status_display_name',
            'last_modified_by',
            'latest_comment_by',
        ]
Esempio n. 5
0
 def comment(self, request, *args, **kwargs):
     """Create comment for entity"""
     pk = self.get_object().pk
     serializer = CommentSerializer(data=request.data)
     serializer.is_valid(raise_exception=True)
     serializer.save(entity_type=self.entity_type.value, entity_id=pk)
     return Response(serializer.data, status=status.HTTP_201_CREATED)
 def get_comments(self, obj):
     content_type = obj.get_content_type
     object_id = obj.id
     c_qs = Comment.objects.filter_by_instance(
         obj)  # c_qs --> comments queryset
     comments = CommentSerializer(c_qs, many=True).data
     return comments
class ArticleDetailSerializer(serializers.ModelSerializer):
    article_comments = CommentSerializer(many=True,
                                         read_only=True,
                                         source='comments')

    #nickname = serializers.CharField(source='author.nickname', read_only=True)
    #article = serializers.SerializerMethodField()
    #TODO:nickname = UserNicknameSerializer(many=True, read_only=True)

    class Meta:
        model = Articles
        fields = (
            'id',
            #TODO:'parent',
            #'article',
            #todo:'nickname',
            'title',
            'short_description',
            'content',
            'slug',
            'date_posted',
            'date_updated',
            'image',
            'article_choices',
            'author',
            'article_comments',
        )
Esempio n. 8
0
    def put(self, request, id, format=None):
        if id.startswith('commentID='):
            id = id[10:]
        else:
            return Response({'Invalid id of comment.'},
                            status=status.HTTP_404_NOT_FOUND)

        serializer = CommentSerializer(data=request.data)
        if serializer.is_valid() is False:
            return Response(
                {
                    'message':
                    'Cannnot update comment with provided information.'
                },
                status=status.HTTP_400_BAD_REQUEST)

        comment = Comment.objects.filter(id=id).first()
        if comment is None:
            return Response({'No comment has that id.'},
                            status=status.HTTP_404_NOT_FOUND)

        self.check_object_permissions(request, comment)

        data = serializer.validated_data
        comment.content = data.get('content')
        comment.save()

        return Response(data, status=status.HTTP_200_OK)
Esempio n. 9
0
class PostDetailSerializer(serializers.ModelSerializer):
    comments = CommentSerializer(many=True)

    class Meta:
        model = Post
        fields = ('id', 'title', 'content', 'owner', 'created_at', 'comments')
        read_only_fields = ('id', 'title' 'owner', 'create_at', 'content')
Esempio n. 10
0
 def get_comments(self, post):
     
     data = Comment.objects.filter(parent=post)
     paginator = CommentsPageNumberPagination()
     page = paginator.paginate_queryset(data, self.context['request'])
     serializer = CommentSerializer(page, many=True).data
     return paginator.get_paginated_response(serializer).data
Esempio n. 11
0
 def comments(self, request: Request, pk=Optional[str]) -> Response:
     post = self.get_object()
     queryset = (
         post.comment_set.select_related("author").order_by("-created")
     )
     serializer = CommentSerializer(queryset, many=True)
     return Response(serializer.data)
Esempio n. 12
0
def comments_list(request):
    """
    List  comments.
    """
    if request.method == 'GET':
        data = []
        nextPage = 1
        previousPage = 1
        customers = Comment.objects.all()
        page = request.GET.get('page', 1)
        paginator = Paginator(customers, 10)
        try:
            data = paginator.page(page)
        except PageNotAnInteger:
            data = paginator.page(1)
        except EmptyPage:
            data = paginator.page(paginator.num_pages)

        serializer = CommentSerializer(data, context={'request': request}, many=True)
        if data.has_next():
            nextPage = data.next_page_number()
        if data.has_previous():
            previousPage = data.previous_page_number()

        url = reverse('list_comments_api_v1')
        return Response({
            'data': serializer.data,
            'count': paginator.count,
            'numpages': paginator.num_pages,
            'nextlink': url + '?page=' + str(nextPage),
            'prevlink': url + '?page=' + str(previousPage)
        })
Esempio n. 13
0
class ReviewForRestaurantSerializer(serializers.ModelSerializer):
    author = UserSerializer(
        required=False,
        read_only=True,
    )

    comments = CommentSerializer(
        required=False,
        read_only=True,
        many=True,
    )

    amount_of_likes = serializers.SerializerMethodField()

    def get_amount_of_likes(self, obj):
        return len(obj.users_who_liked.all())

    amount_of_comments = serializers.SerializerMethodField()

    def get_amount_of_comments(self, obj):
        return len(obj.comments.all())

    logged_in_user_is_review_author = serializers.SerializerMethodField()

    def get_logged_in_user_is_review_author(self, obj):
        return self.context['request'].user == obj.author

    class Meta:
        model = Review
        fields = [
            'id', 'text_content', 'rating', 'created', 'author', 'comments',
            'restaurant_review_about', 'users_who_liked', 'amount_of_likes',
            'amount_of_comments', 'logged_in_user_is_review_author'
        ]
Esempio n. 14
0
class UserSerializer(serializers.ModelSerializer):

    password = serializers.CharField(write_only=True)
    password_confirmation = serializers.CharField(write_only=True)
    images = PopulatedImageSerializer(many=True, required=False)
    videos = PopulatedVideoSerializer(many=True, required=False)
    articles = PopulatedArticleSerializer(many=True, required=False)
    trainings = PopulatedTrainingSerializer(many=True, required=False)
    student_trainings = PopulatedTrainingSerializer(many=True, required=False)
    comments = CommentSerializer(many=True, required=False)
    chats = PopulatedChatSerializer(many=True, required=False)


    def validate(self, data):
        password = data.pop('password')
        password_confirmation = data.pop('password_confirmation')
        if password != password_confirmation:
            raise ValidationError({'password_confirmation': 'does not match'})
        # try:
        #     validations.validate_password(password=password)
        # except ValidationError as err:
        #     raise serializers.ValidationError({'password': err.messages})
        data['password'] = make_password(password)
        return data

    class Meta:
      model = User 
      fields = '__all__'
class PostSerializer(serializers.ModelSerializer):
    user = AccountsSerializer(read_only=True)
    user_id = serializers.PrimaryKeyRelatedField(
        queryset=Accounts.objects.all(), write_only=True)
    tasks = TaskSerializer(many=True)
    comments = CommentSerializer(many=True, read_only=True)
    favorites = FavoriteSerializer(many=True, read_only=True)

    class Meta:
        model = Post
        fields = [
            'id', 'title', 'detail', 'limit', 'user', 'user_id', 'tasks',
            'comments', 'favorites'
        ]

    def create(self, validated_data):
        tasks_data = validated_data.pop('tasks')
        validated_data['user'] = validated_data.get('user_id', None)
        if validated_data['user'] is None:
            raise serializers.ValidationError("user not found.")
        del validated_data['user_id']

        post = Post.objects.create(**validated_data)
        for task_data in tasks_data:
            Task.objects.create(post=post, **task_data)
        return post
Esempio n. 16
0
class ArticleRetrieveSerializer(serializers.ModelSerializer):
    comments = CommentSerializer(many=True, read_only=True)
    created_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M')

    class Meta:
        model = Article
        fields = '__all__'
Esempio n. 17
0
    def get(self, request, userName):
        # Blog.objects.filter(entry__headline__contains='Lennon', entry__pub_date__year=2008)
        selectedUser = User.objects.get(username=userName)
        selectedComment = Comment.objects.filter(owner=selectedUser)

        serializer = CommentSerializer(selectedComment, many=True)

        return Response(serializer.data, status=status.HTTP_200_OK)
Esempio n. 18
0
    def add_comment(
        self, request: Request, pk=Optional[str]
    ) -> Response:
        serializer = CommentSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        serializer.save(post=self.get_object(), author=self.request.user)

        return Response(serializer.data, status=status.HTTP_201_CREATED)
Esempio n. 19
0
 def test_get_comment_detail(self, api_client, setup_test):
     # get API response
     response = api_client.get(self.get_comment_url)
     # get data from db
     comments = Comment.objects.all()
     serializer = CommentSerializer(comments, many=True)
     assert response.data == serializer.data[0]
     assert response.status_code == status.HTTP_200_OK
Esempio n. 20
0
 def test_list_all_comments(self, api_client, setup_test):
     # get API response
     response = api_client.get(self.list_comments_url)
     # get data from db
     comments = Comment.objects.all()
     serializer = CommentSerializer(comments, many=True)
     assert response.data['data'] == serializer.data
     assert response.status_code == status.HTTP_200_OK
Esempio n. 21
0
    def get_comments(self, request, pk=None):

        retweet = self.get_object()
        comments = Comment.objects.filter(retweet=retweet.id).order_by('date')
        if (comments.count() > 0):
            return (Response(CommentSerializer(comments, many=True).data))
        else:
            return Response([])
Esempio n. 22
0
class MealSerializer(serializers.ModelSerializer):
    comments = CommentSerializer(many=True)

    class Meta:
        model = Meal
        fields = [
            'id', 'description', 'price', 'portion', 'image', 'category',
            'comments'
        ]
Esempio n. 23
0
 def __call__(self, qs):
     from comments.serializers import CommentSerializer
     for comment in qs.iterator():
         serializer = CommentSerializer(comment)
         rec = etree.Element(
             'comment',
             **{key: str(val)
                for key, val in serializer.data.items()})
         yield etree.tostring(rec)
class QuestionSerializer(serializers.ModelSerializer):
    url = serializers.HyperlinkedIdentityField(view_name='question-detail')
    user = UserSerializer(read_only=True)
    tags = serializers.SlugRelatedField(many=True,
                                        read_only=True,
                                        slug_field='name',
                                        allow_null=True)
    comment = CommentSerializer(many=True, read_only=True)

    class Meta:
        model = Question
        fields = [
            'id',
            'url',
            'user',
            'title',
            'body',
            'tags',
            'comment',
            'registered_date',
        ]

    def __init__(self, *args, **kwargs):
        super(QuestionSerializer, self).__init__(*args, **kwargs)

    def create(self, validated_data):
        user = None
        request = self.context.get("request")

        if request and hasattr(request, "user"):
            user = request.user

        question = Question.objects.create(user=user,
                                           title=validated_data['title'],
                                           body=validated_data['body'])

        for item in request.data['tags']:
            tag, created = Tag.objects.get_or_create(name=item, is_public=True)
            question.tags.add(tag)

        return question

    def update(self, question, validated_data):
        question.title = validated_data.get('title', question.body)
        question.body = validated_data.get('body', question.body)

        tags_to_update = self.initial_data.get('tags')

        temp = []
        for tag in tags_to_update:
            tag, created = Tag.objects.get_or_create(name=tag, is_public=True)
            temp.append(tag)

        question.tags.set(temp)

        return super(QuestionSerializer, self).update(question, validated_data)
class PostByAccountSerializer(serializers.ModelSerializer):
    tasks = TaskSerializer(many=True)
    comments = CommentSerializer(many=True, read_only=True)
    favorites = FavoriteSerializer(many=True, read_only=True)

    class Meta:
        model = Post
        fields = [
            'id', 'title', 'detail', 'limit', 'tasks', 'comments', 'favorites'
        ]
Esempio n. 26
0
 def comments(self, request, pk):
     """
     Endpoint for querying Comments on a photo.
     """
     photo = Photo.objects.get(id=pk)
     comments = Comment.objects.filter(photo=photo)
     serializer = CommentSerializer(comments,
                                    many=True,
                                    context={'request': request})
     return Response(serializer.data)
Esempio n. 27
0
class CardSerializer(serializers.ModelSerializer):
    comments = CommentSerializer(many=True, required=False)
    members = serializers.PrimaryKeyRelatedField(many=True,
                                                 required=False,
                                                 read_only=True)
    owner = serializers.PrimaryKeyRelatedField(read_only=True)

    class Meta:
        model = Card
        fields = '__all__'
Esempio n. 28
0
class PostListSerializer(serializers.ModelSerializer):
    owner = UserSerializer(many=False)
    comments = CommentSerializer(many=True)
    url = HyperlinkedIdentityField(view_name='posts:detail', )

    class Meta:
        model = Post
        fields = ('id', 'title', 'content', 'owner', 'created_at', 'comments',
                  'url')
        read_only_fields = ('id', 'owner', 'created_at', 'comments')
Esempio n. 29
0
 def test_list_comments(self):
     """
 测试某篇文章的评论列表接口
 """
     url = reverse('v1:post-comment', kwargs={'pk': self.post3.pk})
     response = self.client.get(url)
     self.assertEqual(response.status_code, status.HTTP_200_OK)
     serializer = CommentSerializer(instance=[self.comment2, self.comment1],
                                    many=True)
     self.assertEqual(response.data['results'], serializer.data)
Esempio n. 30
0
class PostSerializer(serializers.ModelSerializer):
    author_detail = UserSerializer(source='author', read_only=True)
    comments = CommentSerializer(many=True, required=False)

    class Meta:
        model = Post
        fields = [
            'id', 'title', 'content', 'author', 'created_at', 'comments',
            'author_detail'
        ]