Procházet zdrojové kódy

새로운 ACL 기록 방식 도입

https://github.com/openNAMU/openNAMU/issues/2099
잉여개발기 před 2 roky
rodič
revize
8aa21f2eac
4 změnil soubory, kde provedl 40 přidání a 5 odebrání
  1. 1 1
      app.py
  2. 2 0
      route/recent_change.py
  3. 3 3
      route/tool/func.py
  4. 34 1
      route/view_set.py

+ 1 - 1
app.py

@@ -521,7 +521,7 @@ app.route('/doc_star_doc/<int:num>/<everything:name>', defaults = { 'db_set' : d
 
 app.route('/raw/<everything:name>')(view_w_raw)
 app.route('/raw_acl/<everything:name>', defaults = { 'doc_acl' : 'on' })(view_w_raw)
-app.route('/raw_rev/<int:rev>/<everything:name>')(view_w_raw)
+app.route('/raw_rev/<int(signed = True):rev>/<everything:name>')(view_w_raw)
 
 app.route('/diff/<int(signed = True):num_a>/<int(signed = True):num_b>/<everything:name>')(view_diff)
 

+ 2 - 0
route/recent_change.py

@@ -40,6 +40,8 @@ def recent_change(name = '', tool = '', num = 1, set_type = 'normal'):
             ['r1', get_lang(conn, 'new_doc')],
             ['edit_request', get_lang(conn, 'edit_request')]
         ]
+        if tool == 'history':
+            option_list += [['setting', get_lang(conn, 'setting')]]
 
         if flask.request.method == 'POST':
             return redirect(conn, '/diff/' + flask.request.form.get('b', '1') + '/' + flask.request.form.get('a', '1') + '/' + url_pas(name))

+ 3 - 3
route/tool/func.py

@@ -2481,7 +2481,7 @@ def history_plus(conn, title, data, date, ip, send, leng, t_check = '', mode = '
     if db_data and db_data[0][0] != '':
         return 0
 
-    if mode == 'add':
+    if mode == 'add' or mode == 'setting':
         curs.execute(db_change("select id from history where title = ? order by id + 0 asc limit 1"), [title])
         id_data = curs.fetchall()
         id_data = str(int(id_data[0][0]) - 1) if id_data else '0'
@@ -2497,11 +2497,11 @@ def history_plus(conn, title, data, date, ip, send, leng, t_check = '', mode = '
     send = send[:512] if len(send) > 512 else send
     send = send + ' (' + t_check + ')' if t_check != '' else send
 
-    if mode != 'add' and mode != 'user':
+    if mode != 'add' and mode != 'setting' and mode != 'user':
         history_plus_rc_max(conn, 'normal')
         curs.execute(db_change("insert into rc (id, title, date, type) values (?, ?, ?, 'normal')"), [id_data, title, date])
     
-    if mode != 'add':
+    if mode != 'add' and mode != 'setting':
         history_plus_rc_max(conn, mode)
         curs.execute(db_change("insert into rc (id, title, date, type) values (?, ?, ?, ?)"), [id_data, title, date, mode])
 

+ 34 - 1
route/view_set.py

@@ -6,6 +6,7 @@ def view_set(name = 'Test'):
 
         check_ok = ''
         ip = ip_check()
+        time = get_time()
 
         if flask.request.method == 'POST':
             check_data = 'document_set (' + name + ')'
@@ -32,9 +33,16 @@ def view_set(name = 'Test'):
 
         if flask.request.method == 'POST':
             acl_data = ['decu', 'document_edit_acl', 'document_edit_request_acl', 'document_move_acl', 'document_delete_acl', 'dis', 'view', 'why']
+            acl_result = []
+            acl_text = ''
 
             for i in acl_data:
                 form_data = flask.request.form.get(i, '')
+                
+                acl_result += [form_data]
+
+                acl_text += i + '\n'
+                acl_text += form_data + '\n'
             
                 curs.execute(db_change("delete from acl where title = ? and type = ?"), [name, i])
                 curs.execute(db_change("insert into acl (title, data, type) values (?, ?, ?)"), [name, form_data, i])
@@ -44,8 +52,15 @@ def view_set(name = 'Test'):
                 time_limit = flask.request.form.get(i + '_date', '')
                 if re.search(r'^[0-9]{4}-[0-9]{2}-[0-9]{2}$', time_limit):
                     curs.execute(db_change("insert into data_set (doc_name, doc_rev, set_name, set_data) values (?, ?, 'acl_date', ?)"), [name, i, time_limit])
+                    
+                    acl_text += time_limit + '\n'
+
+                acl_text += '\n\n'
 
             markup_data = flask.request.form.get('document_markup', '')
+            
+            acl_text += 'document_markup\n'
+            acl_text += markup_data + '\n\n'
 
             curs.execute(db_change("select set_data from data_set where doc_name = ? and set_name = 'document_markup'"), [name])
             db_data = curs.fetchall()
@@ -67,15 +82,33 @@ def view_set(name = 'Test'):
 
             if admin_check(conn) == 1:
                 document_top = flask.request.form.get('document_top', '')
+
+                acl_text += 'document_top\n'
+                acl_text += document_top + '\n\n'
+
                 curs.execute(db_change("delete from data_set where doc_name = ? and set_name = 'document_top'"), [name])
                 curs.execute(db_change("insert into data_set (doc_name, doc_rev, set_name, set_data) values (?, '', 'document_top', ?)"), [name, document_top])
                 
                 document_editor_top = flask.request.form.get('document_editor_top', '')
+
+                acl_text += 'document_editor_top\n'
+                acl_text += document_editor_top + '\n\n'
+
                 curs.execute(db_change("delete from data_set where doc_name = ? and set_name = 'document_editor_top'"), [name])
                 curs.execute(db_change("insert into data_set (doc_name, doc_rev, set_name, set_data) values (?, '', 'document_editor_top', ?)"), [name, document_editor_top])
 
             admin_check(conn, 5, check_data)
 
+            history_plus(conn, 
+                name,
+                acl_text,
+                time,
+                ip,
+                acl_result[7],
+                '0',
+                mode = 'setting'
+            )
+
             conn.commit()
 
             return redirect(conn, '/acl/' + url_pas(name))
@@ -193,7 +226,7 @@ def view_set(name = 'Test'):
             data += '<hr class="main_hr">'
 
             return easy_minify(conn, flask.render_template(skin_check(conn),
-                imp = [name, wiki_set(conn), wiki_custom(conn), wiki_css(['(' + get_lang(conn, 'acl') + ')', 0])],
+                imp = [name, wiki_set(conn), wiki_custom(conn), wiki_css(['(' + get_lang(conn, 'setting') + ')', 0])],
                 data = '''
                     <form method="post">
                         <a href="/setting/acl">(''' + get_lang(conn, 'main_acl_setting') + ''')</a>