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)
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)
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