Surplus_Up (2DU) пре 6 година
родитељ
комит
1a127eabe0
9 измењених фајлова са 118 додато и 21 уклоњено
  1. 5 1
      app.py
  2. 3 1
      language/en-US.json
  3. 4 2
      language/ko-KR.json
  4. 3 3
      route/give_acl.py
  5. 10 6
      route/setting.py
  6. 12 2
      route/tool/func.py
  7. 70 0
      route/topic_acl.py
  8. 9 4
      route/topic_tool.py
  9. 2 2
      version.json

+ 5 - 1
app.py

@@ -171,7 +171,7 @@ if setup_tool != 0:
     create_data['data'] = ['title', 'data']
     create_data['cache_data'] = ['title', 'data', 'id']
     create_data['history'] = ['id', 'title', 'data', 'date', 'ip', 'send', 'leng', 'hide', 'type']
-    create_data['rd'] = ['title', 'sub', 'code', 'date', 'band', 'stop', 'agree']
+    create_data['rd'] = ['title', 'sub', 'code', 'date', 'band', 'stop', 'agree', 'acl']
     create_data['user'] = ['id', 'pw', 'acl', 'date', 'encode']
     create_data['user_set'] = ['name', 'id', 'data']
     create_data['user_application'] = ['id', 'pw', 'date', 'encode', 'question', 'answer', 'ip', 'ua', 'token', 'email']
@@ -497,6 +497,10 @@ def topic_top(topic_num = 1, num = 1):
 def topic_stop(topic_num = 1):
     return topic_stop_2(conn, topic_num)
 
+@app.route('/thread/<int:topic_num>/acl', methods=['POST', 'GET'])
+def topic_acl(topic_num = 1):
+    return topic_acl_2(conn, topic_num)
+
 @app.route('/thread/<int:topic_num>/delete', methods=['POST', 'GET'])
 def topic_delete(topic_num = 1):
     return topic_delete_2(conn, topic_num)

+ 3 - 1
language/en-US.json

@@ -199,6 +199,8 @@
         "category_title" : "Documents under this category",
         "ban_acl" : "Include blocked users",
         "topic_name_change" : "Change discussion name",
+        "topic_acl_setting" : "Discussion ACL setting",
+        "topic_acl" : "Discussion ACL",
         "_comment_2.1_" : "Filter",
             "_comment_2.1.1_" : "List",
                 "interwiki_list" : "Interwiki(s) list",
@@ -315,7 +317,7 @@
             "owner_acl" : "Owner only",
             "_comment_2.6_1_" : "Set",
                 "document_acl" : "Document ACL",
-                "discussion_acl" : "Discussion ACL",
+                "discussion_acl" : "Discussion(s) ACL",
                 "view_acl" : "Reading ACL",
                 "user_document_acl" : "User document ACL",
                 "upload_acl" : "Upload ACL",

+ 4 - 2
language/ko-KR.json

@@ -3,7 +3,7 @@
     "document_name": "문서명",
     "non_login_alert": "비로그인 알림",
     "hide": "숨김",
-    "discussion_acl": "토론 ACL",
+    "discussion_acl": "토론 ACL",
     "ongoing": "진행 중",
     "user_tool": "사용자 도구",
     "compare_target": "비교 대상 이름",
@@ -354,5 +354,7 @@
     "extension_filter_add": "확장자 필터 추가",
     "extension": "확장자",
     "ban_acl": "차단된 사용자 포함",
-    "topic_name_change": "토론 제목 변경"
+    "topic_name_change": "토론 제목 변경",
+    "topic_acl_setting" : "토론 ACL 설정",
+    "topic_acl" : "토론 ACL"
 }

+ 3 - 3
route/give_acl.py

@@ -69,9 +69,9 @@ def give_acl_2(conn, name):
         data = '<h2>' + load_lang('document_acl') + '</h2><hr class=\"main_hr\"><select name="decu" ' + check_ok + '>'
 
         if re.search('^user:', name):
-            acl_list = ['', 'user', 'all']
+            acl_list = get_acl_list('user')
         else:
-            acl_list = ['', 'all', 'user', 'admin', 'owner', '50_edit', 'email', 'ban']
+            acl_list = get_acl_list()
 
         curs.execute(db_change("select decu from acl where title = ?"), [name])
         acl_data = curs.fetchall()
@@ -112,7 +112,7 @@ def give_acl_2(conn, name):
             data += '''
                 </select>
                 <hr class=\"main_hr\">
-                <h2>''' + load_lang('explanation') + '''</h2>
+                <h2 id="exp">''' + load_lang('explanation') + '''</h2>
                 <ul>
                     <li>normal : ''' + load_lang('unset') + '''</li>
                     <li>admin : ''' + load_lang('admin_acl') + '''</li>

+ 10 - 6
route/setting.py

@@ -585,19 +585,23 @@ def setting_2(conn, num):
             conn.commit()
 
             acl_div = ['', '', '', '', '']
-            acl_list = ['normal', 'user', 'admin', 'owner', '50_edit', 'email']
+            acl_list = get_acl_list()
             for i in range(0, 5):
-                for acl_data in acl_list:
-                    if acl_data == d_list[i + 1]:
-                        acl_div[i] = '<option value="' + acl_data + '">' + acl_data + '</option>' + acl_div[i]
+                for data_list in acl_list:
+                    if data_list == d_list[i + 1]:
+                        check = 'selected="selected"'
                     else:
-                        acl_div[i] += '<option value="' + acl_data + '">' + acl_data + '</option>'
+                        check = ''
+                    
+                    acl_div[i] += '<option value="' + data_list + '" ' + check + '>' + (data_list if data_list != '' else 'normal') + '</option>'
 
             return easy_minify(flask.render_template(skin_check(),
                 imp = [load_lang('main_acl_setting'), wiki_set(), custom(), other2([0, 0])],
                 data = '''
                     <form method="post">
-                        <span>''' + load_lang('document_acl') + '</span> <a href="/acl/TEST">(' + load_lang('reference') + ''')</a>
+                        <a href="/acl/TEST#exp">(''' + load_lang('reference') + ''')</a>
+                        <hr>
+                        <span>''' + load_lang('document_acl') + '''</span> 
                         <hr class=\"main_hr\">
                         <select name="edit">''' + acl_div[0] + '''</select>
                         <hr>

+ 12 - 2
route/tool/func.py

@@ -847,7 +847,7 @@ def acl_check(name = 'test', tool = '', topic_num = 'test'):
             else:
                 name = 'test'
 
-        end = 2
+        end = 3
     else:
         end = 1
 
@@ -862,7 +862,9 @@ def acl_check(name = 'test', tool = '', topic_num = 'test'):
 
             num = 5
         elif tool == 'topic':
-            if i == 0:
+            if i == 0 and topic_num:
+                curs.execute(db_change("select acl from rd where code = ?"), [topic_num])
+            elif i == 1:
                 curs.execute(db_change("select dis from acl where title = ?"), [name])
             else:
                 curs.execute(db_change('select data from other where name = "discussion"'))
@@ -1118,6 +1120,14 @@ def edit_filter_do(data):
 def redirect(data = '/'):
     return flask.redirect(data)
 
+def get_acl_list(type_d = None):
+    acl_data = ['', 'all', 'user', 'admin', 'owner', '50_edit', 'email', 'ban']
+    if type_d:
+        if type_d == 'user':
+            acl_data = ['', 'user', 'all']
+
+    return acl_data
+
 def re_error(data):
     conn.commit()
 

+ 70 - 0
route/topic_acl.py

@@ -0,0 +1,70 @@
+from .tool.func import *
+
+def topic_acl_2(conn, topic_num):
+    curs = conn.cursor()
+
+    if admin_check(3) != 1:
+        return re_error('/error/3')
+
+    ip = ip_check()
+    time = get_time()
+    topic_num = str(topic_num)
+
+    curs.execute(db_change("select title, sub from rd where code = ?"), [topic_num])
+    rd_d = curs.fetchall()
+    if not rd_d:
+        return redirect('/')
+
+    if flask.request.method == 'POST':
+        admin_check(3, 'topic_acl_set (code ' + topic_num + ')')
+
+        curs.execute(db_change("select id from topic where code = ? order by id + 0 desc limit 1"), [topic_num])
+        topic_check = curs.fetchall()
+        if topic_check:
+            acl_data = flask.request.form.get('acl', '')
+
+            curs.execute(db_change("update rd set acl = ? where code = ?"), [
+                acl_data,
+                topic_num
+            ])
+
+            curs.execute(db_change("insert into topic (id, data, date, ip, top, code) values (?, ?, ?, ?, '1', ?)"), [
+                str(int(topic_check[0][0]) + 1),
+                'acl change ' + acl_data,
+                time,
+                ip,
+                topic_num
+            ])
+
+            rd_plus(topic_num, time)
+
+        return redirect('/thread/' + topic_num)
+    else:
+        acl_list = get_acl_list()
+        acl_html_list = ''
+
+        curs.execute(db_change("select acl from rd where code = ?"), [topic_num])
+        topic_acl_get = curs.fetchall()
+        for data_list in acl_list:
+            if topic_acl_get and topic_acl_get[0][0] == data_list:
+                check = 'selected="selected"'
+            else:
+                check = ''
+
+            acl_html_list += '<option value="' + data_list + '" ' + check + '>' + (data_list if data_list != '' else 'normal') + '</option>'
+
+        return easy_minify(flask.render_template(skin_check(),
+            imp = [load_lang('topic_acl_setting'), wiki_set(), custom(), other2([0, 0])],
+            data = '''
+                <form method="post">
+                    <a href="/acl/TEST#exp">(''' + load_lang('reference') + ''')</a>
+                    <hr>
+                    <select name="acl">
+                    ''' + acl_html_list + '''
+                    </select>
+                    <hr class=\"main_hr\">
+                    <button type="submit">''' + load_lang('save') + '''</button>
+                </form>
+            ''',
+            menu = [['thread/' + topic_num + '/tool', load_lang('return')]]
+        ))

+ 9 - 4
route/topic_tool.py

@@ -10,19 +10,23 @@ def topic_tool_2(conn, topic_num):
     close_data = curs.fetchall()
     if close_data:
         if close_data[0][0] == 'S':
-            t_state = 'Stop'
+            t_state = 'stop'
         elif close_data[0][0] == 'O':
-            t_state = 'Close'
+            t_state = 'close'
         else:
-            t_state = 'Normal'
+            t_state = 'normal'
     else:
-        t_state = 'Normal'
+        t_state = 'normal'
+
+    curs.execute(db_change("select acl from rd where code = ?"), [topic_num])
+    topic_acl_get = curs.fetchall()
 
     if admin_check(3) == 1:
         data = '''
             <h2>''' + load_lang('admin_tool') + '''</h2>
             <ul>
                 <li><a href="/thread/''' + topic_num + '/setting">' + load_lang('topic_setting') + '''</a></li>
+                <li><a href="/thread/''' + topic_num + '/acl">' + load_lang('topic_acl_setting') + '''</a></li>
             </ul>
         '''
     data += '''
@@ -30,6 +34,7 @@ def topic_tool_2(conn, topic_num):
         <ul>
             <li><a id="reload" href="javascript:void(0);" onclick="req_alarm();">''' + load_lang('use_push_alarm') + '''</a></li>
             <li>''' + load_lang('topic_state') + ''' : ''' + t_state + '' + (' (Agree)' if close_data and (close_data[0][1] == 'O') else '') + '''</li>
+            <li>''' + load_lang('topic_acl') + ''' : <a href="/acl/TEST#exp">''' + ('normal' if not topic_acl_get or (topic_acl_get[0][0] == '') else topic_acl_get[0][0]) + '''</a></li>
         </ul>
     '''
 

+ 2 - 2
version.json

@@ -1,7 +1,7 @@
 {
     "master" : {
-        "r_ver" : "v3.1.7-master-07",
-        "c_ver" : "3170600",
+        "r_ver" : "v3.1.7-master-08",
+        "c_ver" : "3170801",
         "s_ver" : "7"
     }, "stable" : {
         "r_ver" : "v3.1.6-stable-05",