def same_tag(tag): """View blog posts with the same tag **Route:** ``/blog/tag/<tag>`` **Methods:** ``GET`` """ tag = Tag.objects().get(tagname=tag) blog_posts = list(BlogPost.objects(post_tags=tag, published=True) .order_by('-date_published')[:10]) previous_index = None next_index = 1 return render_template('blog/blog.html', posts=blog_posts, previous_index=previous_index, next_index=next_index)
def new(): """Create a new blog post. **Route:** ``/admin/posts/new`` **Methods:** ``POST`` """ form = CreateBlogPostForm(request.form) form.author.choices = [(str(u.id), u.name + " (You)" if u == g.user else u.name) for u in User.objects()] form.author.data = str(g.user.id) upload_form = UploadImageForm() if form.validate_on_submit(): author = User.objects().get(id=ObjectId(form.author.data)) images = [Image.objects().get(filename=fn) for fn in form.images.data] tags = Tag.get_or_create_tags(form.tags.data) post = BlogPost(title=form.title.data, slug=form.slug.data, images=images, markdown_content=form.body.data, author=author, posted_by=g.user, post_tags=tags) post.save() if form.published.data: post.publish() else: post.unpublish() if form.preview.data is True: return redirect(url_for('blog.preview', slug=post.slug)) return redirect(url_for('.index')) images = Image.objects() return render_template('eventum_posts/edit.html', user=g.user, form=form, images=images, upload_form=upload_form)
def new(): """Create a new blog post. **Route:** ``/admin/posts/new`` **Methods:** ``POST`` """ form = CreateBlogPostForm(request.form) form.author.choices = [ (str(u.id), u.name + " (You)" if u == g.user else u.name) for u in User.objects() ] form.author.data = str(g.user.id) upload_form = UploadImageForm() if form.validate_on_submit(): author = User.objects().get(id=ObjectId(form.author.data)) images = [Image.objects().get(filename=fn) for fn in form.images.data] tags = Tag.get_or_create_tags(form.tags.data) post = BlogPost(title=form.title.data, slug=form.slug.data, images=images, markdown_content=form.body.data, author=author, posted_by=g.user, post_tags=tags) post.save() if form.published.data: post.publish() else: post.unpublish() if form.preview.data is True: return redirect(url_for('blog.preview', slug=post.slug)) return redirect(url_for('.index')) images = Image.objects() return render_template('eventum_posts/edit.html', user=g.user, form=form, images=images, upload_form=upload_form)
def edit(post_id): """Edit an existing blog post. **Route:** ``/admin/posts/edit/<post_id>`` **Methods:** ``GET, POST`` :param str post_id: The ID of the post to edit. """ try: object_id = ObjectId(post_id) except InvalidId: return abort(404) try: post = BlogPost.objects().with_id(object_id) except (DoesNotExist, ValidationError): flash('Cannot find blog post with id {}.'.format(post_id), ERROR_FLASH) return redirect(url_for('.index')) if request.method == 'POST': form = CreateBlogPostForm(request.form) form.author.choices = [ (str(u.id), u.name + " (You)" if u == g.user else u.name) for u in User.objects()] form.author.default = str(g.user.id) if form.validate_on_submit(): post.title = form.title.data post.author = User.objects.get(id=ObjectId(form.author.data)) post.slug = form.slug.data post.markdown_content = form.body.data post.images = [ Image.objects().get(filename=fn) for fn in form.images.data ] post.post_tags = Tag.get_or_create_tags(form.tags.data) if form.featured_image.data: post.featured_image = Image.objects().get( filename=form.featured_image.data) else: post.featured_image = None post.save() if post.published != form.published.data: if form.published.data: post.publish() flash('Blogpost published', MESSAGE_FLASH) else: post.unpublish() flash('Blogpost unpublished', MESSAGE_FLASH) if form.preview.data is True: return redirect(url_for('blog.preview', slug=post.slug)) upload_form = UploadImageForm() feat_img = post.featured_image.filename if post.featured_image else None form = CreateBlogPostForm(request.form, title=post.title, slug=post.slug, published=post.published, body=post.markdown_content, images=[image.filename for image in post.images], author=str(post.author.id), featured_image=feat_img, tags=post.post_tags) form.author.choices = [ (str(u.id), u.name + " (You)" if u == g.user else u.name) for u in User.objects() ] form.author.default = str(g.user.id) images = [image for image in Image.objects() if image not in post.images] return render_template('eventum_posts/edit.html', user=g.user, form=form, post=post, images=images, upload_form=upload_form)
def edit(post_id): """Edit an existing blog post. **Route:** ``/admin/posts/edit/<post_id>`` **Methods:** ``GET, POST`` :param str post_id: The ID of the post to edit. """ try: object_id = ObjectId(post_id) except InvalidId: return abort(404) try: post = BlogPost.objects().with_id(object_id) except (DoesNotExist, ValidationError): flash('Cannot find blog post with id {}.'.format(post_id), ERROR_FLASH) return redirect(url_for('.index')) if request.method == 'POST': form = CreateBlogPostForm(request.form) form.author.choices = [(str(u.id), u.name + " (You)" if u == g.user else u.name) for u in User.objects()] form.author.default = str(g.user.id) if form.validate_on_submit(): post.title = form.title.data post.author = User.objects.get(id=ObjectId(form.author.data)) post.slug = form.slug.data post.markdown_content = form.body.data post.images = [ Image.objects().get(filename=fn) for fn in form.images.data ] post.post_tags = Tag.get_or_create_tags(form.tags.data) if form.featured_image.data: post.featured_image = Image.objects().get( filename=form.featured_image.data) else: post.featured_image = None post.save() if post.published != form.published.data: if form.published.data: post.publish() flash('Blogpost published', MESSAGE_FLASH) else: post.unpublish() flash('Blogpost unpublished', MESSAGE_FLASH) if form.preview.data is True: return redirect(url_for('blog.preview', slug=post.slug)) upload_form = UploadImageForm() feat_img = post.featured_image.filename if post.featured_image else None form = CreateBlogPostForm(request.form, title=post.title, slug=post.slug, published=post.published, body=post.markdown_content, images=[image.filename for image in post.images], author=str(post.author.id), featured_image=feat_img, tags=post.post_tags) form.author.choices = [(str(u.id), u.name + " (You)" if u == g.user else u.name) for u in User.objects()] form.author.default = str(g.user.id) images = [image for image in Image.objects() if image not in post.images] return render_template('eventum_posts/edit.html', user=g.user, form=form, post=post, images=images, upload_form=upload_form)