|
@@ -1,6 +1,8 @@
|
|
|
-from flask import render_template, Blueprint
|
|
|
+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
|
|
|
|
|
|
blogs_app = Blueprint('blogs', __name__)
|
|
|
|
|
@@ -9,5 +11,43 @@ blogs_app = Blueprint('blogs', __name__)
|
|
|
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()))
|
|
|
+ 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'))
|