Преглед на файлове

사용자 정보 API로 통합

Surplus_Up (2DU) преди 6 години
родител
ревизия
00d14fd786
променени са 10 файла, в които са добавени 119 реда и са изтрити 109 реда
  1. 6 2
      app.py
  2. 1 1
      route/api_markup.py
  3. 15 3
      route/api_topic_sub.py
  4. 66 0
      route/api_user_info.py
  5. 1 1
      route/edit.py
  6. 4 43
      route/user_info.py
  7. 8 56
      route/view_read.py
  8. 1 1
      version.json
  9. 2 2
      views/main_css/js/load_preview.js
  10. 15 0
      views/main_css/js/load_user_info.js

+ 6 - 2
app.py

@@ -595,8 +595,12 @@ def api_skin_info(name = ''):
     return api_skin_info_2(conn, name)
 
 @app.route('/api/markup')
-def api_markup(name = ''):
-    return api_markup_2(conn, name)
+def api_markup():
+    return api_markup_2(conn)
+
+@app.route('/api/user_info/<name>')
+def api_user_info(name = ''):
+    return api_user_info_2(conn, name)
 
 @app.route('/api/topic/<everything:name>/sub/<sub>')
 def api_topic_sub(name = '', sub = '', time = ''):

+ 1 - 1
route/api_markup.py

@@ -1,6 +1,6 @@
 from .tool.func import *
 
-def api_markup_2(conn, name):
+def api_markup_2(conn):
     curs = conn.cursor()
 
     curs.execute('select data from other where name = "markup"')

+ 15 - 3
route/api_topic_sub.py

@@ -71,9 +71,21 @@ def api_topic_sub_2(conn, name, sub, time):
                 if t_data_f == '':
                     t_data_f = '[br]'
             
-                all_data = '<table id="toron"><tbody><tr><td id="' + t_color + '">'
-                all_data += '<a href="#' + i[0] + '">#' + i[0] + '</a> ' + ip + ' <span style="float: right;">' + i[2] + '</span>'
-                all_data += '</td></tr><tr><td id="' + b_color + '">' + render_set(data = t_data_f) + '</td></tr></tbody></table><hr class=\"main_hr\">'
+                all_data = '''
+                    <table id="toron">
+                        <tbody>
+                            <tr>
+                                <td id="''' + t_color + '''">
+                                    <a href="#''' + i[0] + '">#' + i[0] + '</a> ' + ip + ' <span style="float: right;">' + i[2] + '''</span>
+                                </td>
+                            </tr>
+                            <tr>
+                                <td id="''' + b_color + '">' + render_set(data = t_data_f) + '''</td>
+                            </tr>
+                        </tbody>
+                    </table>
+                    <hr class="main_hr">
+                '''
                 
                 json_data[i[0]] = {
                     "data" : all_data

+ 66 - 0
route/api_user_info.py

@@ -0,0 +1,66 @@
+from .tool.func import *
+
+def api_user_info_2(conn, name):
+    curs = conn.cursor()
+
+    if flask.request.args.get('render', None):
+        plus_d = ''
+        plus_t = []
+
+        plus_d = '''
+            <table>
+                <tbody>
+                    <tr>
+                        <td>''' + load_lang('user_name') + '''</td>
+                        <td>{}</td>
+                    </tr>
+                    <tr>
+                        <td>''' + load_lang('authority') + '''</td>
+                        <td>{}</td>
+                    </tr>
+                    <tr>
+                        <td>''' + load_lang('state') + '''</td>
+                        <td>{}</td>
+                    </tr>
+                </tbody>
+            </table>
+        '''
+        
+        curs.execute("select acl from user where id = ?", [name])
+        data = curs.fetchall()
+        if data:
+            if data[0][0] != 'user':
+                plus_t += [data[0][0]]
+            else:
+                plus_t += [load_lang('member')]
+        else:
+            plus_t += [load_lang('normal')]
+
+        if ban_check(name) == 0:
+            plus_t += [load_lang('normal')]
+        else:
+            match = re.search("^([0-9]{1,3}\.[0-9]{1,3})", name)
+            if match:
+                match = match.groups()[0]
+            else:
+                match = '-'
+
+            curs.execute("select end, login, band from ban where block = ? or block = ?", [name, match])
+            block_data = curs.fetchall()
+            if block_data:
+                if block_data[0][0] != '':
+                    plus_t += [load_lang('period') + ' : ' + block_data[0][0]]
+                else:
+                    plus_t += [load_lang('limitless')]
+
+                if block_data[0][1] != '':
+                    plus_t += [load_lang('login_able')]
+
+                if block_data[0][2] == 'O':
+                    plus_t += [load_lang('band_blocked')]
+
+        plus_d = plus_d.format(ip_pas(name), plus_t[0], plus_t[1])
+
+        return flask.jsonify({ "data" : plus_d })
+    else:
+        pass

+ 1 - 1
route/edit.py

@@ -123,7 +123,7 @@ def edit_2(conn, name):
                     <hr class=\"main_hr\">
                     ''' + captcha_get() + ip_warring() + '''
                     <button id="save" type="submit">''' + load_lang('save') + '''</button>
-                    <button id="preview" type="button" onclick="do_preview(\'''' + name + '\')">' + load_lang('preview') + '''</button>
+                    <button id="preview" type="button" onclick="load_preview(\'''' + name + '\')">' + load_lang('preview') + '''</button>
                 </form>
                 ''' + b_text + '''
                 <hr class=\"main_hr\">

+ 4 - 43
route/user_info.py

@@ -4,39 +4,6 @@ def user_info_2(conn):
     curs = conn.cursor()
 
     ip = ip_check()
-    
-    curs.execute("select acl from user where id = ?", [ip])
-    data = curs.fetchall()
-    if ban_check() == 0:
-        if data:
-            if data[0][0] != 'user':
-                acl = data[0][0]
-            else:
-                acl = load_lang('member')
-        else:
-            acl = load_lang('normal')
-    else:
-        acl = load_lang('blocked')
-
-        match = re.search("^([0-9]{1,3}\.[0-9]{1,3})", ip)
-        if match:
-            match = match.groups()[0]
-        else:
-            match = '-'
-
-        curs.execute("select end, login, band from ban where block = ? or block = ?", [ip, match])
-        block_data = curs.fetchall()
-        if block_data:
-            if block_data[0][0] != '':
-                acl += ' (' + load_lang('period') + ' : ' + block_data[0][0] + ')'
-            else:
-                acl += ' (' + load_lang('limitless') + ')'        
-
-            if block_data[0][1] != '':
-                acl += ' (' + load_lang('login_able') + ')'
-
-            if block_data[0][2] == 'O':
-                acl += ' (' + load_lang('band_blocked') + ')'
 
     curs.execute('select name from alarm where name = ? limit 1', [ip_check()])
     if curs.fetchall():
@@ -44,9 +11,7 @@ def user_info_2(conn):
     else:
         plus2 = '<li><a href="/alarm">' + load_lang('alarm') + '</a></li>'
 
-    if custom()[2] != 0:
-        ip_user = '<a href="/w/user:' + ip + '">' + ip + '</a>'
-        
+    if custom()[2] != 0:        
         plus = '''
             <li><a href="/logout">''' + load_lang('logout') + '''</a></li>
             <li><a href="/change">''' + load_lang('user_setting') + '''</a></li>
@@ -54,9 +19,7 @@ def user_info_2(conn):
 
         plus2 += '<li><a href="/watch_list">' + load_lang('watchlist') + '</a></li>'
         plus3 = '<li><a href="/acl/user:' + url_pas(ip) + '">' + load_lang('user_document_acl') + '</a></li>'
-    else:
-        ip_user = ip
-        
+    else:        
         plus = '''
             <li><a href="/login">''' + load_lang('login') + '''</a></li>
             <li><a href="/register">''' + load_lang('register') + '''</a></li>
@@ -72,10 +35,8 @@ def user_info_2(conn):
         imp = [load_lang('user_tool'), wiki_set(), custom(), other2([0, 0])],
         data = '''
             <h2>''' + load_lang('state') + '''</h2>
-            <ul>
-                <li>''' + ip_user + ''' <a href="/record/''' + url_pas(ip) + '''">(''' + load_lang('record') + ''')</a></li>
-                <li>''' + load_lang('state') + ''' : ''' + acl + '''</li>
-            </ul>
+            <div id="get_user_info"></div>
+            <script>load_user_info("''' + ip + '''");</script>
             <br>
             <h2>''' + load_lang('login') + '''</h2>
             <ul>

+ 8 - 56
route/view_read.py

@@ -6,8 +6,6 @@ def view_read_2(conn, name):
     sub = ''
     acl = ''
     div = ''
-    plus_d = ''
-    plus_t = []
 
     num = flask.request.args.get('num', None)
     if num:
@@ -187,62 +185,16 @@ def view_read_2(conn, name):
     div = adsense_code + '<div>' + div + '</div>'
 
     # 이 부분 개선 필요
-    m = re.search("^user:([^/]*)", name)
-    if m:
-        g = m.groups()
-
-        plus_d = '''
-            <table>
-                <tbody>
-                    <tr>
-                        <td>''' + load_lang('authority') + '''</td>
-                        <td>{}</td>
-                    </tr>
-                    <tr>
-                        <td>''' + load_lang('state') + '''</td>
-                        <td>{}</td>
-                    </tr>
-                </tbody>
-            </table>
-        '''
+    match = re.search("^user:([^/]*)", name)
+    if match:
+        user_name = match.groups()[0]
+        div = '''
+            <div id="get_user_info"></div>
+            <script>load_user_info("''' + user_name + '''");</script>
+        ''' + div
         
-        curs.execute("select acl from user where id = ?", [g[0]])
-        data = curs.fetchall()
-        if data:
-            if data[0][0] != 'user':
-                plus_t += [data[0][0]]
-            else:
-                plus_t += [load_lang('member')]
-        else:
-            plus_t += [load_lang('normal')]
-
-        if ban_check(g[0]) == 0:
-            plus_t += [load_lang('normal')]
-        else:
-            match = re.search("^([0-9]{1,3}\.[0-9]{1,3})", g[0])
-            if match:
-                match = match.groups()[0]
-            else:
-                match = '-'
-
-            curs.execute("select end, login, band from ban where block = ? or block = ?", [g[0], match])
-            block_data = curs.fetchall()
-            if block_data:
-                if block_data[0][0] != '':
-                    plus_t += [load_lang('period') + ' : ' + block_data[0][0]]
-                else:
-                    plus_t += [load_lang('limitless')]
-
-                if block_data[0][1] != '':
-                    plus_t += [load_lang('login_able')]
-
-                if block_data[0][2] == 'O':
-                    plus_t += [load_lang('band_blocked')]
-
-        plus_d = plus_d.format(plus_t[0], plus_t[1])
-
     return easy_minify(flask.render_template(skin_check(), 
         imp = [flask.request.args.get('show', name), wiki_set(), custom(), other2([sub + acl, r_date])],
-        data = plus_d + div,
+        data = div,
         menu = menu
     )), response_data

+ 1 - 1
version.json

@@ -1,6 +1,6 @@
 {
     "master" : {
-        "r_ver" : "v3.1.2-master-20",
+        "r_ver" : "v3.1.2-master-21",
         "c_ver" : "400002",
         "s_ver" : "2"
     }, "stable" : {

+ 2 - 2
views/main_css/js/do_preview.js → views/main_css/js/load_preview.js

@@ -1,11 +1,11 @@
-function do_preview(name) {
+function load_preview(name) {
     var o_data = document.getElementById('content');
     var p_data = document.getElementById('see_preview');
 
     var s_data = new FormData();
     s_data.append('data', o_data.value);
 
-    var url = "/api/w/" + name;
+    var url = "/api/w/" + encodeURI(name);
     var url_2 = "/api/markup";
     
     var xhr = new XMLHttpRequest();

+ 15 - 0
views/main_css/js/load_user_info.js

@@ -0,0 +1,15 @@
+function load_user_info(name) {
+    var n_ver = document.getElementById('get_user_info');
+
+    var url = "/api/user_info/" + encodeURI(name) + "?render=1";
+    
+    var xhr = new XMLHttpRequest();
+    xhr.open("GET", url, true);
+    xhr.send(null);
+
+    xhr.onreadystatechange = function() {
+        if(this.readyState === 4 && this.status === 200) {
+            n_ver.innerHTML += JSON.parse(this.responseText)['data'];
+        }
+    }
+}