from flask import render_template, Blueprint, flash, request, redirect, url_for import requests from backstage.blogs.forms import BlogCreateForm from backstage.utils import translate, get_now_time from time import sleep from backstage.utils.routes import remove_content blogs_app = Blueprint('blogs', __name__) @blogs_app.route('/backstage/blogs') def blog_list(): response = requests.get('http://127.0.0.1:5000/api/contents?url=/blog') if response.status_code == 200: return render_template('blogs.html', title='設計專欄', legend='設計專欄列表', blogs=response.json(), length=len(response.json()), form=BlogCreateForm()) @blogs_app.route('/backstage/create/blog', methods=['POST']) def create(): form = BlogCreateForm() url_name = translate(form.title.data).replace(' ', '_') front_matter = '''--- title: "{}"\n\ date: {}\n\ draft: {}\n\ type: "{}"\n\ url: "{}"\n\ image: "/img/blog/{}"\n\ categories: ["{}"]\n\ ---'''.format(form.title.data, get_now_time(), 'false', 'blog', '/blog/{}'.format(url_name), form.image.data.filename, form.categories.data) data = {'frontMatter': front_matter, 'name': request.form['title'], 'type': form.categories.data} new_response = requests.post('http://127.0.0.1:5000/api/new_content', json=data) if new_response.status_code == 200: requests.post( 'http://127.0.0.1:5000/api/upload/static/img?type=blog&filename={}'.format( form.image.data.filename), files={'image': form.image.data}) sleep(0.5) return redirect(url_for('editor.editor', url='/blog/{}'.format(url_name))) else: flash('新增文章失敗', 'danger') return redirect(url_for('blogs.blog_list')) @blogs_app.route('/backstage/blog/remove', methods=['POST']) def remove(): remove_content() return redirect(url_for('blogs.blog_list'))