Ver Fonte

211017 最新消息

yukyo0821 há 3 anos atrás
pai
commit
db6ed5e9a5

+ 50 - 1
backstage/blogs/routes.py

@@ -185,6 +185,27 @@ def edit_system_furniture():
                            furnitures=sortedData, length=len(furnitures),
                            )
 
+@blogs_app.route('/backstage/edit_news', methods=['GET'])
+def edit_news():
+    response = requests.get('{}contents?url=/news'.format(PORTAL_SERVER))
+    if response.status_code == 200:
+        sortedData = sorted(response.json(), key=lambda x: x['date'], reverse=True)
+        #sortedData = sorted(sortedData, key=lambda x: x['type'])
+        return render_template('news.html',
+                            title='消息與報導',
+                            legend='消息與報導',
+                            news=sortedData, length=len(response.json()),form=BlogCreateForm()
+                            )
+
+@blogs_app.route('/backstage/edit_contact_us', methods=['GET'])
+def edit_contact_us():
+    response = requests.get('{}contents?url=/contact'.format(PORTAL_SERVER))
+    if response.status_code == 200:
+        sortedData = sorted(response.json(), key=lambda x: x['date'], reverse=True)
+        #sortedData = sorted(sortedData, key=lambda x: x['type'])
+        return render_template('contact_us.html',
+                            title='聯絡我們',
+                            )
 
 @blogs_app.route('/backstage/blog/create/', methods=['POST'])
 def create():
@@ -212,7 +233,7 @@ col1: "{}"\n\
 col2: "{}"\n\
 ---'''.format(form.title.data,
               get_now_time(),
-              'false',
+              'true',
               'blog',
               '/blog/{}'.format(transtitle),
               form.image.data.filename,
@@ -254,12 +275,40 @@ categories: ["{}"]\n\
     print("11")
     return Response("你好", 200)
 
+@blogs_app.route('/backstage/news/create/', methods=['POST'])
+def createNews():
+    form = BlogCreateForm()
+    transtitle = get_trans_title_url_name(form.title.data)
+
+    front_matter = '''---
+title: "{}"\n\
+date: {}\n\
+draft: {}\n\
+type: "{}"\n\
+url: "{}"\n\
+image: ""\n\
+---'''.format(form.title.data,
+              get_now_time(),
+              'true',
+              'news',
+              '/news/{}'.format(transtitle))
+
+    data = {'frontMatter': front_matter,
+            'name': transtitle,
+            'type': 'news',
+            }
+
+    return create_content(data, form.image.data)
 
 @blogs_app.route('/backstage/blog/remove', methods=['POST'])
 def remove():
     remove_content()
     return redirect(url_for('blogs.blog_list'))
 
+@blogs_app.route('/backstage/news/remove', methods=['POST'])
+def removeNews():
+    remove_content()
+    return redirect(url_for('blogs.edit_news'))
 
 @blogs_app.route('/backstage/utils', methods=['GET'])
 def transService():

+ 1 - 1
backstage/collections/routes.py

@@ -50,7 +50,7 @@ image: "/img/collection/{}"\n\
 description: "{}"\n\
 ---'''.format(form.title.data,
               get_now_time(),
-              'false',
+              'true',
               'collection',
               '/collection/{}'.format(eng_name),
               form.image.data.filename,

+ 5 - 0
backstage/static/js/yo.js

@@ -53,6 +53,11 @@ function getHeader(url) {
         else if ($("#ctype").val() == "blog") {
             $("#sdesc").hide();
         }
+        else if ($("#ctype").val() == "news") {
+            $("#sdesc").hide();
+            $("#scat").hide();
+            $("#simg").hide();
+        }
         else {
             ParseProductSection(contentMatters.join(''));
         }

+ 191 - 0
backstage/templates/contact_us.html

@@ -0,0 +1,191 @@
+{% extends "layout.html" %}
+{% block table_body %}
+<!-- <script type="text/javascript" src="/static/config.js"></script> -->
+<script src="https://cdn.jsdelivr.net/npm/@editorjs/editorjs@latest"></script>
+<script src="https://cdn.jsdelivr.net/npm/@editorjs/image@latest"></script><!-- Image -->
+<script type="text/javascript" src="/static/js/yo.js"></script>
+<tbody id='contactData'>
+
+    <tr>
+        <td class="table__data"></td>
+        <td class="table__data"></td>
+        <td class="table__data"></td>
+        <!-- <td class="table__data">1</td> -->
+        <td class="table__data"></td>
+        <td>
+            <div class="d-flex justify-content-center">
+                <button class="btn btn_light mr-1" onclick="getHeader('');"><b>修改</b> <i
+                        class="fas fa-pencil-alt"></i></button>
+            </div>
+
+        </td>
+    </tr>
+
+</tbody>
+
+{% endblock table_body %}
+
+
+{% block modal_body %}
+
+<div class="form-group">
+    類別:<select id="newSwfDropdown"></select><br />
+    名稱:<input id="newSwfName" type="text" /><br />
+    <!--     敘述:<input id="swfDesc" type="text" /><br />
+    <hr>
+    圖片:
+    <div id="editorjs" style='border:inset 1px;'></div>
+    <hr>
+    定價:<input id="swfPrice" type="text" /><br />
+    顏色:<input id="swfColor" type="text" /><br />
+    尺寸:<input id="swfSize" type="text" /><br />
+    材質:<input id="swfMet" type="text" /><br /> -->
+</div>
+<div class="modal-footer  pb-0 border-0">
+    <button type="button" class="btn btn__cancel" data-dismiss="modal">取消</button>
+    <button type="button" class="btn btn__submitadd" onclick="newfur();">完成</button>
+</div>
+
+{% endblock modal_body %}
+
+{% block main_info_modal_body %}
+<style>
+    .image-tool__caption {
+        display: none;
+    }
+</style>
+<div class="modal fade" id="myModal">
+    <div class="modal-dialog">
+        <div class="modal-content">
+
+            <div class="modal-header">
+                <h4 class="modal-title">單品家具-修改</h4>
+                <button type="button" class="close" data-dismiss="modal">×</button>
+            </div>
+
+            <div class="modal-body">
+                <table class="table table-bordered">
+                    <tbody>
+                        <tr>
+                            <td>
+                                <h4>名稱</h4>
+                            </td>
+                            <td>
+                                <input class="form-control" id="ctitle" type="text" />
+                                <div class="mt-1 text-danger">(建議字數: 15字內)</div>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td>
+                                <h4>類別</h4>
+                            </td>
+                            <td><select id="swfDropdown" onchange="$('#ctype').val(this.value);" disabled></select></td>
+                        </tr>
+                        <tr>
+                            <td>
+                                <h4>敘述</h4>
+                            </td>
+                            <td>
+                                <textarea class="form-control" rows="3" id="swfDesc" type="text"
+                                    style="width: 100%;"></textarea>
+                                <div class="mt-1 text-danger">(建議字數: 50字內)</div>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td>
+                                <h4>日期</h4>
+                            </td>
+                            <td><input class="form-control" id="cdate" type="text" /></td>
+                        </tr>
+                        <tr>
+                            <td>
+                                <h4>是否顯示</h4>
+                            </td>
+                            <td><input id="cdraft" type="checkbox" checked="true" /></td>
+                        </tr>
+                        <tr>
+                            <td colspan="2"> </td>
+                        </tr>
+                        <tr>
+                            <td>
+                                <h4>單品圖</h4>
+                            </td>
+                            <td>
+                                <div class="form-control" id="editorjs" style='border:inset 1px;'></div>
+                            </td>
+                        </tr>
+                        <tr>
+                            <td>
+                                <h4>定價</h4>
+                            </td>
+                            <td><input class="form-control" id="swfPrice" type="text" style="width: 100%;" /></td>
+                        </tr>
+                        <tr>
+                            <td>
+                                <h4>顏色</h4>
+                            </td>
+                            <td><input class="form-control" id="swfColor" type="text" style="width: 100%;" /></td>
+                        </tr>
+                        <tr>
+                            <td>
+                                <h4>尺寸(mm)</h4>
+                            </td>
+                            <td><input class="form-control" id="swfSize" type="text" style="width: 100%;" /></td>
+                        </tr>
+                        <tr>
+                            <td>
+                                <h4>材質</h4>
+                            </td>
+                            <td><input class="form-control" id="swfMat" type="text" style="width: 100%;" /></td>
+                        </tr>
+                        <tr>
+                            <td>
+                                <h4>備註</h4>
+                            </td>
+                            <td><input class="form-control" id="swfMemo" type="text" style="width: 100%;" /></td>
+                        </tr>
+                        <tr>
+                            <td>
+                                <h4>規格圖</h4>
+                            </td>
+                            <td>
+                                <div class="form-control" id="editorjs1" style='border:inset 1px;'></div>
+                            </td>
+                        </tr>
+                    </tbody>
+                </table>
+            </div>
+
+            <div class="modal-footer">
+                <button type="button" class="btn btn__cancel" data-dismiss="modal">取消</button>
+                <button type="button" class="btn btn__submitadd" id='addNewButton'
+                    onclick="UpdateProduct();">完成</button>
+                <!-- <button type="button" id="uptbtn" class="btn btn-danger" onclick="updateHeader();">完成修改</button> -->
+            </div>
+
+        </div>
+    </div>
+</div>
+<script>
+
+    function UpdateProduct() {
+
+        var mdContent = GetMdHeader();
+
+        mdContent += '\n' + sectionContent;
+        //GenProductSection(outputData);
+        postData = {
+            content: mdContent,
+            url: editTarget
+        };
+
+        /* alert(contentApiUrl);
+        alert(editTarget); */
+        //alert(mdContent);
+        /* axios.post(contentApiUrl + editTarget, json = postData).then(({ data }) => {
+            alert('已儲存');
+        }).finally((data) => { location.reload(); }); */
+
+    };
+</script>
+{% endblock %}

+ 55 - 36
backstage/templates/layout.html

@@ -1,5 +1,6 @@
 <!DOCTYPE html>
 <html lang="en">
+
 <head>
   <!-- Required meta tags -->
   <meta charset="utf-8">
@@ -9,14 +10,13 @@
   <link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css'>
   <link rel='stylesheet' href='https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css'>
   <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.4.1/semantic.min.css">
-  <link rel="stylesheet"
-    href="https://use.fontawesome.com/releases/v5.1.0/css/all.css" integrity="sha384-lKuwvrZot6UHsBSfcMvOkWwlCMgc0TaWr+30HWe3a4ltaBwTZhyTEggF5tJv8tbt"
-    crossorigin="anonymous">
-<!--   <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='styles/reset.css') }}"> -->
+  <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.1.0/css/all.css"
+    integrity="sha384-lKuwvrZot6UHsBSfcMvOkWwlCMgc0TaWr+30HWe3a4ltaBwTZhyTEggF5tJv8tbt" crossorigin="anonymous">
+  <!--   <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='styles/reset.css') }}"> -->
   <link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='styles/main.css') }}">
-  
+
   <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.20/lodash.min.js"></script>
-  <script src="https://unpkg.com/axios/dist/axios.min.js"></script> 
+  <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
   <script src='https://code.jquery.com/jquery-3.2.1.slim.min.js'></script>
 
   <style>
@@ -25,16 +25,18 @@
     }
   </style>
   {% if title %}
-    <title>bhouse backstage - {{ title }}</title>
+  <title>bhouse backstage - {{ title }}</title>
   {% else %}
-    <title>bhouse backstage</title>
+  <title>bhouse backstage</title>
   {% endif %}
 </head>
+
 <body>
   <div class="container-fluid">
     <div class="row" id="body-row">
       <!-- Sidebar -->
-      <nav id="sidebar-container" class="sidebar-expanded col-2 sidebar"><!-- d-* hiddens the Sidebar in smaller devices. Its itens can be kept on the Navbar 'Menu' -->
+      <nav id="sidebar-container" class="sidebar-expanded col-2 sidebar">
+        <!-- d-* hiddens the Sidebar in smaller devices. Its itens can be kept on the Navbar 'Menu' -->
         <div class="sidebar-header">
           <h3 class="sidebar__company">小寶優居</h3>
         </div>
@@ -42,91 +44,107 @@
         <ul class="list-group pt-2">
           <!-- /END Separator -->
           <!-- Menu with submenu -->
-          <a href="{{ url_for('home.home') }}" class="bg-dark list-group-item list-group-item-action flex-column align-items-start">
+          <a href="{{ url_for('home.home') }}"
+            class="bg-dark list-group-item list-group-item-action flex-column align-items-start">
             <div class="d-flex w-100 justify-content-start align-items-center">
               <i class="fas fa-home mr-3"></i>
-              <span class="menu-collapsed">首頁</span> 
+              <span class="menu-collapsed">首頁</span>
               <span class="submenu-icon ml-auto"></span>
             </div>
           </a>
-          <a href="{{ url_for('room_planner.main') }}" class="bg-dark list-group-item list-group-item-action flex-column align-items-start"">
+          <a href="{{ url_for('blogs.edit_news') }}" class="bg-dark list-group-item list-group-item-action">
             <div class="d-flex w-100 justify-content-start align-items-center">
+              <i class="far fa-newspaper mr-3"></i>
+              <span class="menu-collapsed">最新消息</span>
+            </div>
+          </a>
+          <a href="{{ url_for('room_planner.main') }}"
+            class="bg-dark list-group-item list-group-item-action flex-column align-items-start">
+            <div class=" d-flex w-100 justify-content-start align-items-center">
               <i class="fas fa-user-alt mr-3"></i>
               <span class="menu-collapsed">家具規劃師</span>
-              <span class="submenu-icon ml-auto"></span>   
+              <span class="submenu-icon ml-auto"></span>
             </div>
           </a>
           <a href="{{ url_for('collections.collection_list') }}" class="bg-dark list-group-item list-group-item-action">
             <div class="d-flex w-100 justify-content-start align-items-center">
               <i class="fas fa-ruler-combined mr-3"></i>
-              <span class="menu-collapsed">規劃作品</span>    
+              <span class="menu-collapsed">規劃作品</span>
             </div>
           </a>
           <a href="{{ url_for('store_locations.main') }}" class="bg-dark list-group-item list-group-item-action">
             <div class="d-flex w-100 justify-content-start align-items-center">
               <i class="fas fa-location-arrow mr-3"></i>
-              <span class="menu-collapsed">門市據點</span>    
+              <span class="menu-collapsed">門市據點</span>
             </div>
           </a>
           <a href="#" class="bg-dark list-group-item list-group-item-action">
             <div class="d-flex w-100 justify-content-start align-items-center">
               <i class="fas fa-question-circle mr-3"></i>
-              <span class="menu-collapsed">常見問題</span>    
+              <span class="menu-collapsed">常見問題</span>
             </div>
           </a>
           <a href="#" class="bg-dark list-group-item list-group-item-action">
             <div class="d-flex w-100 justify-content-start align-items-center">
               <i class="fas fa-tasks mr-3"></i>
-              <span class="menu-collapsed">關於小寶</span>    
+              <span class="menu-collapsed">關於小寶</span>
             </div>
           </a>
           <a href="{{ url_for('blogs.blog_list') }}" class="bg-dark list-group-item list-group-item-action">
             <div class="d-flex w-100 justify-content-start align-items-center">
               <i class="far fa-newspaper mr-3"></i>
-              <span class="menu-collapsed">設計專欄</span>    
+              <span class="menu-collapsed">設計專欄</span>
             </div>
           </a>
-          <a href="{{ url_for('blogs.edit_solid_wood_furniture') }}" class="bg-dark list-group-item list-group-item-action">
+          <a href="{{ url_for('blogs.edit_solid_wood_furniture') }}"
+            class="bg-dark list-group-item list-group-item-action">
             <div class="d-flex w-100 justify-content-start align-items-center">
               <i class="far fa-newspaper mr-3"></i>
-              <span class="menu-collapsed">單品家具</span>    
+              <span class="menu-collapsed">單品家具</span>
             </div>
           </a>
           <a href="{{ url_for('blogs.edit_system_furniture') }}" class="bg-dark list-group-item list-group-item-action">
             <div class="d-flex w-100 justify-content-start align-items-center">
               <i class="far fa-newspaper mr-3"></i>
-              <span class="menu-collapsed">模組系統櫃</span>    
+              <span class="menu-collapsed">模組系統櫃</span>
+            </div>
+          </a>
+          <a href="{{ url_for('blogs.edit_contact_us') }}" class="bg-dark list-group-item list-group-item-action">
+            <div class="d-flex w-100 justify-content-start align-items-center">
+              <i class="far fa-newspaper mr-3"></i>
+              <span class="menu-collapsed">聯絡我們</span>
             </div>
           </a>
           <!-- Separator with title -->
-          <a href="#" data-toggle="sidebar-colapse" class="bg-dark list-group-item list-group-item-action d-flex align-items-center">
+          <a href="#" data-toggle="sidebar-colapse"
+            class="bg-dark list-group-item list-group-item-action d-flex align-items-center">
             <div class="d-flex w-100 justify-content-start align-items-center">
               <span id="collapse-icon" class="fa fa-2x mr-3"></span>
               <span id="collapse-text" class="menu-collapsed">Collapse</span>
             </div>
-          </a> 
+          </a>
         </ul><!-- List Group END-->
       </nav><!-- sidebar-container END -->
       <!-- Modal -->
       <div>
         {% with messages = get_flashed_messages(with_categories=true) %}
-          {% if messages %}
-            {% for category, message in messages %}
-              <div class="alert alert-{{ category }}" role="alert">
-                {{ message }}
-                <button type="button" class="close modal__close" data-dismiss="alert" aria-label="Close">
-                  <span class="modal__close__back">
-                    <span aria-hidden="true">&times;</span>
-                  </span>
-                </button>
-              </div>
-            {% endfor %}
-          {% endif %}
+        {% if messages %}
+        {% for category, message in messages %}
+        <div class="alert alert-{{ category }}" role="alert">
+          {{ message }}
+          <button type="button" class="close modal__close" data-dismiss="alert" aria-label="Close">
+            <span class="modal__close__back">
+              <span aria-hidden="true">&times;</span>
+            </span>
+          </button>
+        </div>
+        {% endfor %}
+        {% endif %}
         {% endwith %}
       </div>
       <!-- Main -->
       <div class="main my-4 ml-auto col-10">
-          {% block main %}{% endblock %}
+        {% block main %}{% endblock %}
       </div>
       <!-- toTop Button -->
       <div class='toTop'>
@@ -140,4 +158,5 @@
   <script src='https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js'></script>
   <script type="text/javascript" src="{{url_for('static', filename='js/sidebar.js')}}"></script>
 </body>
+
 </html>

+ 118 - 0
backstage/templates/news.html

@@ -0,0 +1,118 @@
+{% extends "tables/editor_table.html" %}
+{% block table_body %}
+<script src="https://cdn.jsdelivr.net/npm/@editorjs/editorjs@latest"></script>
+<script src="https://cdn.jsdelivr.net/npm/@editorjs/image@latest"></script><!-- Image -->
+<script type="text/javascript" src="/static/js/yo.js"></script>
+{% for idx in range(0, length) %}
+{% if news[idx].url != '/news' %}
+<tbody>
+  <tr>
+    <td class="table__data">{{ idx+1 }}</td>
+    <td class="table__data">{{ news[idx].title }}</td>
+    <td class="table__data">{{ news[idx].date }}</td>
+    <td class="table__data"><input type="checkbox" {{ 'checked' if (news[idx].draft.lower()=='false' ) }}
+        onclick="toggleDraft(this,'{{ news[idx].url }}');" /></td>
+    <td>
+      <div class="d-flex justify-content-center">
+        <button class="btn btn_light mr-1" onclick="getHeader('{{ news[idx].url }}');"><b>主資訊</b> <i
+            class="fas fa-pencil-alt"></i></button>
+        <a class="m-1 btn__edit" href="{{ url_for('editor.editor', url=news[idx].url) }}"><i
+            class="fas fa-edit"></i></a>
+        <form action="{{ url_for('blogs.removeNews', url=news[idx].url) }}" method="POST" class="m-1 inline_block">
+          <button class="btn__delete" type="submit" value="delete" onclick=" return confirm('確定要刪除此文章?');"><i
+              class="fas fa-trash-alt"></i></button>
+        </form>
+      </div>
+    </td>
+  </tr>
+</tbody>
+{% endif %}
+{% endfor %}
+{% endblock table_body %}
+{% block modal_body %}
+<form action="{{ url_for('blogs.createNews') }}" method="POST" enctype="multipart/form-data">
+  <div class="form-group">
+    {{ form.title.label(class="form-control-label modal__label mb-1") }} <span class="text-danger">(建議字數: 15字內)</span>
+    {{ form.title(class="form-control form-control-lg") }}
+  </div>
+  <div class="modal-footer pb-0 border-0">
+    <button type="button" class="btn btn__cancel" data-dismiss="modal">取消</button>
+    <input class="btn btn__submitadd" type="submit" value="完成">
+  </div>
+</form>
+{% endblock modal_body %}
+
+{% block main_info_modal_body %}
+<div class="modal fade" id="myModal">
+  <div class="modal-dialog">
+    <div class="modal-content">
+
+      <div class="modal-header">
+        <h4 class="modal-title">設計專欄-主資訊修改</h4>
+        <button type="button" class="close" data-dismiss="modal">×</button>
+      </div>
+
+      <div class="modal-body">
+        <table class="table table-bordered">
+          <tbody>
+            <tr>
+              <td>
+                <h4>標題</h4>
+              </td>
+              <td><input class="form-control" id="ctitle" type="text" />
+                <div class="mt-1 text-danger">(建議字數: 15字內)</div>
+              </td>
+            </tr>
+            <tr id='simg'>
+              <td>
+                <h4>圖片</h4>
+              </td>
+              <td>
+                <input class="form-control" id="cfile" type="file" />
+                <div class="mt-1 text-danger">(建議尺寸/比例: 寬2664px * 高956px)</div>
+              </td>
+            </tr>
+            <tr>
+            <tr id='scat'>
+              <td>
+                <h4>文章分類</h4>
+              </td>
+              <td><textarea class="form-control" rows="1" id="ccategories"></textarea>
+                <div class="mt-1 text-danger">(建議字數: 15字內)</div>
+              </td>
+            </tr>
+            <tr>
+              <td>
+                <h4>日期</h4>
+              </td>
+              <td><input class="form-control" id="cdate" type="text" /></td>
+            </tr>
+            <tr>
+              <td>
+                <h4>是否顯示</h4>
+              </td>
+              <td><input id="cdraft" type="checkbox" checked="true" /></td>
+            </tr>
+          </tbody>
+        </table>
+        <div class="d-none">
+          <input id="ctype" type="text" /><br />
+          <input id="curl" type="text" /><br />
+          <input id="cimage" type="text" /><br />
+          <input id="cweight" type="text" /><br />
+          <input id="ctag" type="text" /><br />
+          <input id="ccategories" type="text" /><br />
+          <input id="ccaturl" type="text" /><br />
+          <input id="ccol1" type="text" /><br />
+          <input id="ccol2" type="text" /><br />
+        </div>
+      </div>
+
+      <div class="modal-footer">
+        <button type="button" id="uptbtn" class="btn btn-danger" onclick="updateHeader();">完成修改</button>
+      </div>
+
+    </div>
+  </div>
+</div>
+{% endblock %}

+ 2 - 1
backstage/upload/routes.py

@@ -95,7 +95,8 @@ def upload_post(iurl):
                 if filepath == "title":
                     sitepath = UPLOAD_PATH_MAP[0][0] + "../../static/img/collection/"
                 else:
-                    sitepath = UPLOAD_PATH_MAP[0][0] + "../" + itype + "/" + filepath + "/img/"
+                    sitepath = mdPath + "/img/"
+                    #sitepath = UPLOAD_PATH_MAP[0][0] + "../" + itype + "/" + filepath + "/img/"
 
                 wfname = str(uuid.uuid4()).replace('-','') + ".webp"
                 owfname = wfname.replace('webp', oimgtype)

+ 5 - 4
backstage/utils/routes.py

@@ -19,10 +19,11 @@ def create_content(data, image_data):
         #flash('新增文章失敗', 'danger')
         return "<script>alert('已有重複的標題,請重新設定');history.go(-1);</script>"
     if new_response.status_code == 200:
-        requests.post(
-            '{}upload/static/img?type={}&filename={}'.format(
-                PORTAL_SERVER, data.get('type'), image_data.filename), files={'image': image_data})
-        sleep(1)  # sleep for waiting for new_content API generating content successfully.
+        if not image_data == None:
+            requests.post(
+                '{}upload/static/img?type={}&filename={}'.format(
+                    PORTAL_SERVER, data.get('type'), image_data.filename), files={'image': image_data})
+            sleep(1)  # sleep for waiting for new_content API generating content successfully.
         return redirect(url_for('editor.editor', url='/{}/{}'.format(
             data.get('type'), get_trans_title_url_name(data.get('name')))))
     else: