Surplus_Up (2DU) 6 лет назад
Родитель
Сommit
aeeccc4493
7 измененных файлов с 72 добавлено и 12 удалено
  1. 5 1
      app.py
  2. 2 0
      language/en-US.json
  3. 3 1
      language/ko-KR.json
  4. 56 0
      route/edit_many_delete.py
  5. 1 0
      route/main_manager.py
  6. 4 9
      route/tool/set_mark/namu.py
  7. 1 1
      version.json

+ 5 - 1
app.py

@@ -459,7 +459,11 @@ def edit(name = None):
         
 @app.route('/delete/<everything:name>', methods=['POST', 'GET'])
 def edit_delete(name = None):
-    return edit_delete_2(conn, name, app_var)        
+    return edit_delete_2(conn, name, app_var)  
+
+@app.route('/many_delete', methods=['POST', 'GET'])
+def edit_many_delete(name = None):
+    return edit_many_delete_2(conn, app_var)     
             
 @app.route('/move/<everything:name>', methods=['POST', 'GET'])
 def edit_move(name = None):

+ 2 - 0
language/en-US.json

@@ -182,6 +182,7 @@
         "topic_setting" : "Topic setting(s)",
         "old_page" : "Old decument(s)",
         "skin_set" : "Skin setting(s)",
+        "many_delete" : "Bulk delete",
         "_comment_2.1_" : "Filter",
             "_comment_2.1.1_" : "List",
                 "interwiki_list" : "Interwiki(s) list",
@@ -298,6 +299,7 @@
         "update_warring" : "Manual updates are recommended if your version is 0.2 or lower than the latest version. For Windows, the contents of the route folder disappear.",
         "defalut_edit_help" : "Describe it here",
         "markup_enabled" : "Markup enabled",
+        "many_delete_help" : "Please write down the document name one by one on the line.",
         "_comment_3.1_" : "Error",
             "update_error" : "Auto update is not support.",
             "inter_error" : "Internal error.",

+ 3 - 1
language/ko-KR.json

@@ -301,5 +301,7 @@
     "old_page" : "오래된 문서",
     "skin_set" : "스킨 설정",
     "edit_help" : "편집창 문구",
-    "defalut_edit_help" : "이곳에 내용을 써주세요"
+    "defalut_edit_help" : "이곳에 내용을 써주세요",
+    "many_delete" : "대량 삭제",
+    "many_delete_help" : "한 줄에 문서명 하나씩 적어주세요."
 }

+ 56 - 0
route/edit_many_delete.py

@@ -0,0 +1,56 @@
+from .tool.func import *
+
+def edit_many_delete_2(conn, app_var):
+    curs = conn.cursor()
+
+    ip = ip_check()
+    if admin_check() != 1:
+        return re_error('/ban')
+    
+    if flask.request.method == 'POST':
+        all_title = re.findall(r'([^\n]+)\n', flask.request.form.get('content', '').replace('\r\n', '\n') + '\n')
+        for name in all_title:
+            curs.execute(db_change("select data from data where title = ?"), [name])
+            data = curs.fetchall()
+            if data:
+                today = get_time()
+                leng = '-' + str(len(data[0][0]))
+                
+                history_plus(
+                    name, 
+                    '', 
+                    today, 
+                    ip, 
+                    flask.request.form.get('send', ''), 
+                    leng,
+                    'delete'
+                )
+                
+                curs.execute(db_change("select title, link from back where title = ? and not type = 'cat' and not type = 'no'"), [name])
+                for data in curs.fetchall():
+                    curs.execute(db_change("insert into back (title, link, type) values (?, ?, 'no')"), [data[0], data[1]])
+                
+                curs.execute(db_change("delete from back where link = ?"), [name])
+                curs.execute(db_change("delete from data where title = ?"), [name])
+                conn.commit()
+
+            file_check = re.search('^file:(.+)\.(.+)$', name)
+            if file_check:
+                file_check = file_check.groups()
+                os.remove(os.path.join(
+                    app_var['path_data_image'],
+                    hashlib.sha224(bytes(file_check[0], 'utf-8')).hexdigest() + '.' + file_check[1]
+                ))
+                
+        return redirect('/recent_changes')
+    else:
+        return easy_minify(flask.render_template(skin_check(), 
+            imp = [load_lang('many_delete'), wiki_set(), custom(), other2([0, 0])],
+            data = '''
+                <form method="post">
+                    <textarea rows="25" placeholder="''' + load_lang('many_delete_help') + '''" name="content"></textarea>
+                    <button type="submit">''' + load_lang('delete') + '''</button>
+                </form>
+            ''',
+            menu = [['manager/1', load_lang('return')]]
+        ))     

+ 1 - 0
route/main_manager.py

@@ -36,6 +36,7 @@ def main_manager_2(conn, num, r_ver, db_type):
                     <h2>''' + load_lang('owner') + '''</h2>
                     <ul>
                         <li><a href="/give_log">''' + load_lang('admin_group_list') + '''</a></li>
+                        <li><a href="/many_delete">''' + load_lang('many_delete') + '''</a></li>
                         <li><a href="/setting">''' + load_lang('setting') + '''</a></li>
                     </ul>
                     <h3>''' + load_lang('filter') + '''</h3>

+ 4 - 9
route/tool/set_mark/namu.py

@@ -668,8 +668,7 @@ def namu(conn, data, title, main_num, include_num):
 
     data = tool.savemark(data)
     
-    anchor_re = re.compile("\[anchor\((?P<in>(?:(?!\)\]).)+)\)\]", re.I)
-    data = anchor_re.sub('<span id="\g<in>"></span>', data)
+    data = re.sub(r"\[anchor\((?P<in>(?:(?!\)\]).)+)\)\]", '<span id="\g<in>"></span>', data, flags = re.I)
 
     ruby_all = re.findall(r"\[ruby\(((?:(?:(?!\)\]).)+))\)\]", data, flags = re.I)
     for i in ruby_all:
@@ -702,17 +701,13 @@ def namu(conn, data, title, main_num, include_num):
 
         data = re.sub(r"\[ruby\(((?:(?:(?!\)\]).)+))\)\]", ruby_data, data, 1, flags = re.I)
 
-    now_time = tool.get_time()
-
-    date_re = re.compile('\[date\]', re.I)
-    data = date_re.sub(now_time, data)
-
-    pagecount_re = re.compile('\[pagecount\]', re.I)
 
     curs.execute(tool.db_change('select data from other where name = "count_all_title"'))
     all_title = curs.fetchall()
+    data = re.sub(r'\[pagecount\]', all_title[0][0], data, flags = re.I)
 
-    data = pagecount_re.sub(all_title[0][0], data)
+    now_time = tool.get_time()
+    data = re.sub(r'\[date\]', now_time, data, flags = re.I)
     
     time_data = re.search('^([0-9]{4}-[0-9]{2}-[0-9]{2})', now_time)
     time = time_data.groups()

+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
     "master" : {
-        "r_ver" : "v3.1.5-master-10",
+        "r_ver" : "v3.1.5-master-11",
         "c_ver" : "400004",
         "s_ver" : "5"
     }, "stable" : {