Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
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'))