Пример #1
0
    def post(self, request):
        """
        发布一条评论

        ``POST`` `comments/create/ <http://192.168.1.222:8080/v1/comments/create>`_

        :param tid:
            评论对象(瓦片)的 id.

        :param content:
            评论内容
        """
        params = request.POST.copy()

        tid = params.get("tid")

        if not params.get('name', ''):
            params["name"] = request.user.get_full_name() or request.user.username
        if not params.get('email', ''):
            params["email"] = request.user.email

        try:
            ct = ContentType.objects.get_by_natural_key("kinger", "tile")
        except ContentType.DoesNotExist:
            return rc.NOT_HERE
        comment = Comment(object_pk=tid, content_type=ct, site_id=settings.SITE_ID)
        comment.comment = params.get("content")
        comment.user_name = params.get("name")
        comment.email = params.get("email")
        comment.ip_address = request.META.get("REMOTE_ADDR", None)

        if request.user.is_authenticated():
            comment.user = request.user

        # Signal that the comment is about to be saved
        responses = signals.comment_will_be_posted.send(
            sender=comment.__class__,
            comment=comment,
            request=request
        )

        for (receiver, response) in responses:
            if response == False:
                return rc.BAD_REQUEST
                # return CommentPostBadRequest(
                #     "comment_will_be_posted receiver %r killed the comment" % receiver.__name__)

        # Save the comment and signal that it was saved
        comment.save()
        signals.comment_was_posted.send(
            sender=comment.__class__,
            comment=comment,
            request=request
        )

        return comment