Beispiel #1
0
	def get(self,post_key):
		if post_key:
			self.blog_model = BlogModel.get_by_id(post_key)
		if not self.blog_model:
			error_msg  = 'The blog id ' + str(post_key) +' is not valid. Please enter a valid id or return to home page.'
			flash(error_msg)
			return redirect(url_for('error_msg'))
	
		return render_template('blog/blog_single_post.html', post = self.blog_model)
Beispiel #2
0
    def get(self, blog_id):
        user = getUserFromRequest(self.request)  # type: UserModel
        post = BlogModel.get_by_id(int(blog_id))  # type:BlogModel

        if not user:
            # redirect to sign up page in case user is not found in the db
            self.redirect("/signin")
        elif not post:
            self.response.write("blog entry not found")
        elif post.author.key().id() == user.key().id():
            self.response.write(templater.render_edit_post(post=post))
        else:
            # redirect to users blog entries to choose one
            self.redirect('/blog/all')
Beispiel #3
0
 def get(self, blog_id):
     post = BlogModel.get_by_id(int(blog_id))  # type: BlogModel
     if post:
         user = getUserFromRequest(self.request)  # type: UserModel
         userSignedIn = user is not None  # type: bool
         kwargs = {
             'post': post,
             'userSignedIn': userSignedIn,
             'current_user': user
         }
         if user and post.author.key().id() == user.key().id():
             kwargs['showEdit'] = True
         self.response.write(templater.render_a_post(**kwargs))
     else:
         self.response.write("blog entry not found")
Beispiel #4
0
 def post(self, blog_id):
     title = self.request.get("title")
     content = self.request.get("content")
     post = BlogModel.get_by_id(long(blog_id))  # type:BlogModel
     user = getUserFromRequest(self.request)  # type: UserModel
     if title and content and post.author.key().id() == user.key().id():
         # user is authorised to make changes
         if self.request.get('edit'):
             # update the post contents
             post.content = content
             post.title = title
             post.put()
             self.redirect("/blog/%s" % (blog_id))
         elif self.request.get('delete'):
             # delete post is triggered and got confirmation from user
             post.delete()
         # redirect to user home. If we return user entries, it will list old posts as well
         self.redirect('/welcome')
     elif user:
         # redirect to user blog entries
         self.redirect('/blog/user')
     else:
         self.redirect("/signin")
Beispiel #5
0
    def post(self, blog_id):
        """
        This method is used to handle comment post/edit/delete on a post
        """
        user = getUserFromRequest(self.request)  # type: UserModel
        if user:
            post = BlogModel.get_by_id(long(blog_id))  # type: BlogModel
            if not post:
                # no post found. so redirect to default page.
                self.redirect('/blog/all')
                return
            logging.info(self.request)
            commentBtnAction = self.request.get('commentBtn')  # type:str
            # update/create a new comment
            if commentBtnAction:
                # check if the comment body is valid
                content = self.request.get('content')
                if content:
                    if commentBtnAction == 'comment':
                        # create comment
                        cmnt = CommentModel(author=user,
                                            post=post,
                                            content=content)
                        cmnt.put()
                        # making the page to refresh after putting content; because of db eng consistency problems
                        time.sleep(0.1)
                    elif commentBtnAction.isdigit():
                        # update comment by the id
                        cmnt = CommentModel.get_by_id(
                            long(commentBtnAction))  # type: CommentModel
                        # confirm that the comment is updated by its author
                        if cmnt and user.key() == cmnt.author.key():
                            cmnt.content = content
                            cmnt.put()
                            time.sleep(0.1)
            # delete comment
            elif self.request.get('deleteComment'):
                commentId = self.request.get('deleteComment')  # type:str
                if commentId and commentId.isdigit():
                    cmnt = CommentModel.get_by_id(
                        long(commentId))  # type: CommentModel
                    # confirm that the comment is deleted by its author
                    if cmnt and user.key() == cmnt.author.key():
                        logging.info('cmnt %s' % cmnt)
                        cmnt.delete()
                        time.sleep(0.1)
            # like or dislike posts
            elif user.key().id() != post.author.key().id():
                # author of the post can't like his own
                if self.request.get('likeComment'):
                    # add the like count if the user already didn't liked
                    if user.key().id() not in post.likes:
                        post.likes.append(user.key().id())
                        post.likescount = int(post.likescount) + 1
                        # persist changes
                        post.put()
                        time.sleep(0.1)
                elif self.request.get('dislikeComment'):
                    # reduce the like count and pop user id from list
                    if user.key().id() in post.likes:
                        post.likes.remove(user.key().id())
                        post.likescount = int(post.likescount) - 1
                        # persist changes
                        post.put()
                        time.sleep(0.1)

            self.redirect('/blog/%s' % blog_id)
        else:
            self.redirect('/signin')