Exemple #1
0
    def get(self, post_id):
        """
        Renders the post.html template with the requested post
        """
        current_user = self.authenticate_user()

        if not post_id:
            self.render("post.html", error="No post id provided")
        else:
            post = Post.get_by_id(long(post_id))

            if not post:
                self.render("post404.html")
            else:
                user = User.get_by_id(post.user.id())
                comments = Comment.query().filter(Comment.post == post.key).fetch()
                likes = Like.query(Like.post == post.key).fetch()
                like = Like.query(
                    Like.user == current_user.key,
                    Like.post == post.key).get()

                self.render(
                    "post.html",
                    post=post,
                    current_user=current_user,
                    user=user,
                    like_count = len(likes),
                    like=like,
                    comments=comments)
Exemple #2
0
    def post(self, post_id):
        """
        Handles the post request from the post page. This is the comment submission.
        """
        content = self.request.get("content")
        current_user = self.authenticate_user()

        post = Post.get_by_id(long(post_id))

        if not post:
            self.render("post404.html")
        else:
            user = User.get_by_id(post.user.id())
            comments = Comment.query().filter(Comment.post == post.key).fetch()

            if not current_user:
                self.redirect("/login")
            elif not content:
                self.render("post.html",
                    comments=comments,
                    post=post,
                    current_user=current_user,
                    user=user,
                    error="No comment text was received")
            else:
                comment = Comment(content=content, user=current_user.key, post=post.key)
                comment.put()
                current_user.comments.append(comment.key)
                current_user.put()

                self.render(
                    "post.html",
                    post=post,
                    user=user,
                    current_user=current_user,
                    comments=comments)
Exemple #3
0
    def post(self, blog_id):
        # Check user login validity
        usernameCookie = self.request.cookies.get("userid", 0)
        username = vaild_cookie(usernameCookie)

        toDo = self.request.get("toDo")

        if (not username) and (toDo == "Like" or toDo == "DisLike"):
            self.write("Please Log in to register your response")
            return

        if username:
            user = ndb.Key('UserData', encrypt(username)).get()

        blog = ndb.Key('BlogData', encrypt(blog_id)).get()

        if toDo == "Like" or toDo == "DisLike":
            if blog.created_by == user.username:
                self.write(
                    "You can't respond to Like/Dislike your own own post")
                return

        if toDo == "Like":

            # Like
            if user.username not in blog.liked_by:
                # Remove Dislike
                if user.username in blog.disliked_by:
                    blog.disliked_by.remove(user.username)
                    user.dislikes.remove(blog_id)
                    blog.dislike_count -= 1

                blog.liked_by.append(user.username)
                blog.like_count += 1
                user.likes.append(blog.blog_id)

            # Unlike
            else:
                blog.liked_by.remove(user.username)
                user.likes.remove(blog.blog_id)
                blog.like_count -= 1

            ndb.put_multi([user, blog])
            return

        elif toDo == "DisLike":

            # Dislike
            if user.username not in blog.disliked_by:
                # Remove Dislike
                if user.username in blog.liked_by:
                    blog.liked_by.remove(user.username)
                    user.likes.remove(blog_id)
                    blog.like_count -= 1

                blog.disliked_by.append(user.username)
                blog.dislike_count += 1
                user.dislikes.append(blog.blog_id)

            # UnDislike
            else:
                blog.disliked_by.remove(user.username)
                user.dislikes.remove(blog.blog_id)
                blog.dislike_count -= 1

            ndb.put_multi([user, blog])
            return

        elif toDo == "Comment" and username:
            # Create comment entity
            content = self.request.get("content")
            if content:
                comment_id = Comment.query().count() + 1
                comment_id = str(comment_id)
                comment = Comment(content=content,
                                  comment_id=comment_id,
                                  created_by=user.username,
                                  blog_id=blog.blog_id)
                comment.key = ndb.Key('Comment', encrypt(comment_id))

                user.comment.append(comment_id)
                blog.comment.append(comment_id)

                ndb.put_multi([user, blog, comment])

        if toDo == "Comment":
            # Fetch comments
            comments = []
            for comment in blog.comment:
                hold = {}
                get_comment = ndb.Key('Comment', encrypt(comment)).get()
                hold["comment_id"] = get_comment.comment_id
                hold["content"] = get_comment.content
                hold["created_by"] = get_comment.created_by
                comments.append(hold)

            self.write(json.dumps(comments))
            return