Ver Fonte

extract create function partial data from blogs and collection routes to utils routes create_content function

weichen há 4 anos atrás
pai
commit
48230a45eb
4 ficheiros alterados com 37 adições e 36 exclusões
  1. 6 17
      backstage/blogs/routes.py
  2. 5 17
      backstage/collections/routes.py
  3. 25 2
      backstage/utils/routes.py
  4. 1 0
      requirements.txt

+ 6 - 17
backstage/blogs/routes.py

@@ -1,9 +1,8 @@
-from flask import render_template, Blueprint, flash, request, redirect, url_for
+from flask import render_template, Blueprint, 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
+from backstage.utils import get_now_time
+from backstage.utils.routes import create_content, remove_content, get_trans_title_url_name
 
 blogs_app = Blueprint('blogs', __name__)
 
@@ -20,10 +19,9 @@ def blog_list():
                                form=BlogCreateForm())
 
 
-@blogs_app.route('/backstage/create/blog', methods=['POST'])
+@blogs_app.route('/backstage/blog/create/', methods=['POST'])
 def create():
     form = BlogCreateForm()
-    url_name = translate(form.title.data).replace(' ', '_')
     front_matter = '''---
 title: "{}"\n\
 date: {}\n\
@@ -36,22 +34,13 @@ categories: ["{}"]\n\
               get_now_time(),
               'false',
               'blog',
-              '/blog/{}'.format(url_name),
+              '/blog/{}'.format(get_trans_title_url_name(form.title.data)),
               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'))
+    return create_content(data, form.image.data, 'blog')
 
 
 @blogs_app.route('/backstage/blog/remove', methods=['POST'])

+ 5 - 17
backstage/collections/routes.py

@@ -1,10 +1,8 @@
-from flask import render_template, Blueprint, flash, request, redirect, url_for
+from flask import render_template, Blueprint, request, redirect, url_for
 import requests
 from backstage.collections.forms import CollectionCreateForm
-from backstage.utils import translate, get_now_time
-from backstage.utils.routes import remove_content
-from time import sleep
-
+from backstage.utils import get_now_time
+from backstage.utils.routes import create_content, remove_content, get_trans_title_url_name
 
 collections_app = Blueprint('collections', __name__)
 
@@ -24,7 +22,6 @@ def collection_list():
 @collections_app.route('/backstage/collection/create', methods=['POST'])
 def create():
     form = CollectionCreateForm()
-    url_name = translate(form.title.data).replace(' ', '_')
     front_matter = '''---
 title: "{}"\n\
 date: {}\n\
@@ -37,22 +34,13 @@ description: "{}"\n\
               get_now_time(),
               'false',
               'collection',
-              '/collection/{}'.format(url_name),
+              '/collection/{}'.format(get_trans_title_url_name(form.title.data)),
               form.image.data.filename,
               form.description.data)
     data = {'frontMatter': front_matter,
             'name': request.form['title'],
             'type': 'collection'}
-    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=collection&filename={}'.format(
-                form.image.data.filename), files={'image': form.image.data})
-        sleep(0.5)
-        return redirect(url_for('editor.editor', url='/collection/{}'.format(url_name)))
-    else:
-        flash('新增文章失敗', 'danger')
-        return redirect(url_for('collections.collection_list'))
+    return create_content(data, form.image.data, 'collection')
 
 
 @collections_app.route('/backstage/collection/remove', methods=['POST'])

+ 25 - 2
backstage/utils/routes.py

@@ -1,5 +1,24 @@
-from flask import flash, request
+from flask import flash, request, redirect, url_for
 import requests
+from time import sleep
+from backstage.utils import translate
+
+TYPE_URL_FOR = {'collection': 'collections.collection_list',
+                'blog': 'blogs.blog_list'}
+
+
+def create_content(data, image_data, type_):
+    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={}&filename={}'.format(
+                type_, image_data.filename), files={'image': image_data})
+        sleep(0.5)  # sleep for waiting for new_content API generating content successfully.
+        return redirect(url_for('editor.editor', url='/{}/{}'.format(
+            type_, get_trans_title_url_name(data.get('name')))))
+    else:
+        flash('新增文章失敗', 'danger')
+        return redirect(url_for(TYPE_URL_FOR.get(type_)))
 
 
 def remove_content():
@@ -8,4 +27,8 @@ def remove_content():
     if response.status_code == 200:
         flash('刪除文章成功', 'success')
     else:
-        flash('刪除文章失敗', 'danger')
+        flash('刪除文章失敗', 'danger')
+
+
+def get_trans_title_url_name(title):
+    return translate(title).replace(' ', '_')

+ 1 - 0
requirements.txt

@@ -23,3 +23,4 @@ sniffio==1.2.0
 urllib3==1.26.4
 Werkzeug==1.0.1
 WTForms==2.3.3
+flake8==3.9.0