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)