def post(self, blog_id): blog = BlogPost.get_by_id(int(blog_id)) title = self.request.get("title") slug = self.request.get("slug") text = self.request.get("text") if title and slug and text: blog = BlogPost.update(blog_post=blog, title=title, slug=slug, text=text) return self.redirect_to("blog-details", slug=blog.slug)
def single_post(post_id): if request.method == "POST" and request.form and request.form['_method']: if authenticate(): if request.form['_method'] == "PUT" or request.form['_method'] == "PATCH": post = request.form error = False title = request.form['title'].strip() if request.form['title'] != None else None if title: if re.search("^[ a-zA-Z0-9\,\?\!]+$", title) == None: flash('Invalid characters detected in title') error = True else: flash('Title cannot be empty') error = True content = request.form['content'].strip() if content: regex = re.compile('^[ a-zA-Z0-9\.\?\,\!\"\(\)]+$', re.MULTILINE) content = content.replace("\r","") num_matches = len(regex.findall(content)) num_lines = len(list(filter(remove_blanks,content.split("\n")))) if num_matches != num_lines: flash('Invalid characters detected in article body') error = True if not error: try: q = BlogPost.update( title=request.form['title'], content=request.form['content'] ).where(BlogPost.id == post_id) q.execute() except IntegrityError: flash('That title is already taken') error = True except BlogPost.DoesNotExist: return redirect(url_for('blog')) else: flash('Article body cannot be empty') error = True if error: return render_template('blog/edit.html', post=post) else: return redirect(url_for('single_post', post_id=post_id)) elif request.form['_method'] == "DELETE": try: post = BlogPost.get(BlogPost.id == post_id) post.delete_instance() flash('Successfully deleted the blog post') return redirect(url_for('blog')) except BlogPost.DoesNotExist: return redirect(url_for('blog')) else: abort(405) else: flash('Not authorized to do that') return redirect(url_for('blog')) else: try: post = BlogPost.get(BlogPost.id == post_id) if post.tags: tags = post.tags.split(',') return render_template('blog/show.html', post=post, tags=tags) except BlogPost.DoesNotExist: return redirect(url_for('blog'))