Ver Fonte

함수화 패치

2DU há 8 anos atrás
pai
commit
a06db5e061
3 ficheiros alterados com 51 adições e 100 exclusões
  1. 38 99
      app.py
  2. 12 0
      func.py
  3. 1 1
      version.md

+ 38 - 99
app.py

@@ -10,12 +10,13 @@ logging.basicConfig(level = logging.ERROR)
 session_opts = { 'session.type' : 'dbm', 'session.data_dir' : './app_session/', 'session.auto' : 1 }
 app = beaker.middleware.SessionMiddleware(app(), session_opts)
 BaseRequest.MEMFILE_MAX = 1000 ** 4
-r_ver = '2.5.1'
+r_ver = '2.5.2'
 
 from func import *
 from set_mark.mid_pas import mid_pas
 from set_mark.macro import savemark
 
+# set.json 설정 확인
 try:
     json_data = open('set.json').read()
     set_data = json.loads(json_data)
@@ -41,12 +42,14 @@ except:
             print('모든 값을 입력하세요.')
             pass
 
+# 디비 연결
 conn = sqlite3.connect(set_data['db'] + '.db')
 curs = conn.cursor()
 
 # 스킨 불러오기 부분
 TEMPLATE_PATH.insert(0, skin_check(conn))
 
+# 호환성 설정
 try:
     try:
         plus_all_data = ''
@@ -121,6 +124,7 @@ if(not os.path.exists('image')):
 if(not os.path.exists('views')):
     os.makedirs('views')
 
+# 백업 설정
 def back_up():
     try:
         shutil.copyfile(set_data['db'] + '.db', 'back_' + set_data['db'] + '.db')
@@ -137,6 +141,7 @@ try:
 except:
     back_time = 0
     
+# 백업 여부 확인
 if(back_time != 0):
     print(str(back_time) + '시간 간격으로 백업')
 
@@ -644,15 +649,9 @@ def user_log(num = 1):
         else:
             count = 0
 
-        list_data += '</ul><hr><ul><li>이 위키에는 ' + str(count) + '명의 사람이 있습니다.</li>'
-        
-    if(num == 1):
-        if(len(user_list) == 50):
-            list_data += '</ul><hr><a href="/user_log/' + str(num + 1) + '">(이후)</a>'
-    elif(len(user_list) != 50):
-        list_data += '</ul><hr><a href="/user_log/' + str(num - 1) + '">(이전)</a>'
-    else:
-        list_data += '</ul><hr><a href="/user_log/' + str(num - 1) + '">(이전)</a> <a href="/user_log/' + str(num + 1) + '">(이후)</a>'
+        list_data += '</ul><hr><ul><li>이 위키에는 ' + str(count) + '명의 사람이 있습니다.</li></ul>'
+
+    list_data += next_fix('/user_log/', num, user_list)
 
     return(html_minify(template('index', 
         imp = ['사용자 가입 기록', wiki_set(conn, 1), custom(conn), other2([0, 0])],
@@ -677,14 +676,7 @@ def user_log(num = 1):
         list_data += '<li>' + ip + ' / ' + data[1] + ' / ' + data[2] + '</li>'
 
     list_data += '</ul><hr><ul><li>주의 : 권한 사용 안하고 열람만 해도 기록되는 경우도 있습니다.</li></ul>'
-
-    if(num == 1):
-        if(len(get_list) == 50):
-            list_data += '<hr><a href="/admin_log/' + str(num + 1) + '">(이후)</a>'
-    elif(len(get_list) != 50):
-        list_data += '<hr><a href="/admin_log/' + str(num - 1) + '">(이전)</a>'
-    else:
-        list_data += '<hr><a href="/admin_log/' + str(num - 1) + '">(이전)</a> <a href="/admin_log/' + str(num + 1) + '">(이후)</a>'
+    list_data += next_fix('/admin_log/', num, get_list)
 
     return(html_minify(template('index', 
         imp = ['권한 사용 기록', wiki_set(conn, 1), custom(conn), other2([0, 0])],
@@ -765,13 +757,7 @@ def xref(name = None, num = 1):
         if(re.search('^틀:', data[0])):
             div += '<li><a id="inside" href="/xref/' + url_pas(data[0]) + '">' + data[0] + '</a> (역링크)</li>'
       
-    if(num == 1):
-        if(len(data_list) == 50):
-            div += '</ul><hr><a href="/xref/' + url_pas(name) + '/num/' + str(num + 1) + '">(이후)</a>'
-    elif(len(data_list) != 50):
-        div += '</ul><hr><a href="/xref/' + url_pas(name) + '/num/' + str(num - 1) + '">(이전)</a>'
-    else:
-        div += '</ul><hr><a href="/xref/' + url_pas(name) + '/num/' + str(num - 1) + '">(이전)</a> <a href="/xref/' + url_pas(name) + '/num/' + str(num + 1) + '">(이후)</a>'
+    div += '</ul>' + next_fix('/xref/' + url_pas(name) + '/num/', num, data_list)
     
     return(html_minify(template('index', 
         imp = [name, wiki_set(conn, 1), custom(conn), other2([' (역링크)', 0])],
@@ -797,13 +783,7 @@ def please(num = 1):
             div += '<li><a class="not_thing" href="/w/' + url_pas(data[0]) + '">' + data[0] + '</a></li>'        
             var = data[0]
         
-    if(num == 1):
-        if(len(data_list) == 50):
-            div += '</ul><hr><a href="/please/' + str(num + 1) + '">(이후)</a>'
-    elif(len(data_list) != 50):
-        div += '</ul><hr><a href="/please/' + str(num - 1) + '">(이전)</a>'
-    else:
-        div += '</ul><hr><a href="/please/' + str(num - 1) + '">(이전)</a> <a href="/please/' + str(num + 1) + '">(이후)</a>'
+    div += '</ul>' + next_fix('/please/', num, data_list)
     
     return(html_minify(template('index', 
         imp = ['필요한 문서', wiki_set(conn, 1), custom(conn), other2([0, 0])],
@@ -856,7 +836,8 @@ def recent_discuss(tools = 'normal'):
 
 @route('/block_log')
 @route('/block_log/<num:int>')
-@route('/block_log/<num:int>/<tool2:re:ip|user|never_end|can_end|end>')
+@route('/block_log/<tool2:re:ip|user|never_end|can_end|end>')
+@route('/block_log/<tool2:re:ip|user|never_end|can_end|end>/<num:int>')
 @route('/<tool:re:block_user|block_admin>/<name:path>')
 @route('/<tool:re:block_user|block_admin>/<name:path>/<num:int>')
 def block_log(num = 1, name = None, tool = None, tool2 = None):
@@ -869,7 +850,7 @@ def block_log(num = 1, name = None, tool = None, tool2 = None):
     
     if(not name):
         if(not tool2):
-            div = '<a href="/manager/11">(차단자 검색)</a> <a href="/manager/12">(관리자 검색)</a><hr><a href="/block_log/1/ip">(아이피)</a> <a href="/block_log/1/user">(가입자)</a> <a href="/block_log/1/never_end">(영구)</a> <a href="/block_log/1/can_end">(기간)</a> <a href="/block_log/1/end">(해제)</a><hr>' + div
+            div = '<a href="/manager/11">(차단자)</a> <a href="/manager/12">(관리자)</a><hr><a href="/block_log/ip">(아이피)</a> <a href="/block_log/user">(가입자)</a> <a href="/block_log/never_end">(영구)</a> <a href="/block_log/can_end">(기간)</a> <a href="/block_log/end">(해제)</a><hr>' + div
             sub = 0
             menu = [['other', '기타']]
 
@@ -896,7 +877,7 @@ def block_log(num = 1, name = None, tool = None, tool2 = None):
             else:
                 sub = '(기간)'
 
-                curs.execute("select why, block, blocker, end, today from rb where end like ? order by today desc limit ?, '50'", ['%:%', str(sql_num)])
+                curs.execute("select why, block, blocker, end, today from rb where end like ? order by today desc limit ?, '50'", ['%-%', str(sql_num)])
     else:
         menu = [['block_log', '일반']]
 
@@ -931,15 +912,15 @@ def block_log(num = 1, name = None, tool = None, tool2 = None):
         div += '<tr><td>' + ip + '</td><td>' + ip_pas(conn, data[2]) + '</td><td>시작 : ' + data[4] + '<br>끝 : ' + end + '</td></tr>'
         div += '<tr><td colspan="3">' + why + '</td></tr>'
 
-    div += '</tbody></table><hr>'
+    div += '</tbody></table>'
 
-    if(num == 1):
-        if(len(data_list) == 50):
-            div += '<a href="/block_log/' + str(num + 1) + '">(이후)</a>'
-    elif(len(data_list) != 50):
-        div += '<a href="/block_log/' + str(num - 1) + '">(이전)</a>'
+    if(not name):
+        if(not tool2):
+            div += next_fix('/block_log/', num, data_list)
+        else:
+            div += next_fix('/block_log/' + url_pas(tool2) + '/', num, data_list)
     else:
-        div += '<a href="/block_log/' + str(num - 1) + '">(이전)</a> <a href="/block_log/' + str(num + 1) + '">(이후)</a>'
+        div += next_fix('/' + url_pas(tool) + '/' + url_pas(name) + '/', num, data_list)
                 
     return(html_minify(template('index', 
         imp = ['차단 기록', wiki_set(conn, 1), custom(conn), other2([sub, 0])],
@@ -1006,15 +987,8 @@ def deep_search(name = None, num = 1):
     else:
         div += '<li>검색 결과 없음</li>'
 
-    div += div_plus
-
-    if(num == 1):
-        if(len(all_list) == 50):
-            div += '</ul><hr><a href="/search/' + url_pas(name) + '/' + str(num + 1) + '">(이후)</a>'
-    elif(len(all_list) != 50):
-        div += '</ul><hr><a href="/search/' + url_pas(name) + '/' + str(num - 1) + '">(이전)</a>'
-    else:
-        div += '</ul><hr><a href="/search/' + url_pas(name) + '/' + str(num - 1) + '">(이전)</a> <a href="/search/' + url_pas(name) + '/' + str(num + 1) + '">(이후)</a>'
+    div += div_plus + '</ul>'
+    div += next_fix('/search/' + url_pas(name) + '/', num, all_list)
     
     return(html_minify(template('index', 
         imp = [name, wiki_set(conn, 1), custom(conn), other2([' (검색)', 0])],
@@ -1769,7 +1743,7 @@ def title_index(num = 100, page = 1):
 
         count_end += [count_end[0] - count_end[1]  - count_end[2]  - count_end[3]  - count_end[4]]
 
-        data += '<hr><li>이 위키에는 총 ' + str(count_end[0]) + '개의 문서가 있습니다.</li><hr>'
+        data += '</ul><hr><ul><li>이 위키에는 총 ' + str(count_end[0]) + '개의 문서가 있습니다.</li></ul><hr><ul>'
         data += '<li>틀 문서는 총 ' + str(count_end[1]) + '개의 문서가 있습니다.</li>'
         data += '<li>분류 문서는 총 ' + str(count_end[2]) + '개의 문서가 있습니다.</li>'
         data += '<li>사용자 문서는 총 ' + str(count_end[3]) + '개의 문서가 있습니다.</li>'
@@ -1777,13 +1751,7 @@ def title_index(num = 100, page = 1):
         data += '<li>나머지 문서는 총 ' + str(count_end[5]) + '개의 문서가 있습니다.</li>'
 
     if(num != 0):
-        if(page == 1):
-            if(len(title_list) == num):
-                data += '</ul><hr><a href="/title_index/' + str(num) + '/' + str(page + 1) + '">(이후)</a>'
-        elif(len(title_list) != num):
-            data += '</ul><hr><a href="/title_index/' + str(num) + '/' + str(page - 1) + '">(이전)</a>'
-        else:
-            data += '</ul><hr><a href="/title_index/' + str(num) + '/' + str(page - 1) + '">(이전)</a> <a href="/title_index/' + str(num) + '/' + str(page + 1) + '">(이후)</a>'
+        data += '</ul>' + next_fix('/title_index/' + str(num) + '/', page, title_list, num)
     
     if(' (' + str(num) + '개)' == ' (0개)'):
         sub = 0
@@ -2930,14 +2898,7 @@ def user_topic_list(name = None, num = 1):
         div += '<td>' + ip + ban +  '</td><td>' + data[4] + '</td></tr>'
 
     div += '</tbody></table>'
-
-    if(num == 1):
-        if(len(data_list) == 50):
-            div += '<hr><a href="/topic_record/' + url_pas(name) + '/' + str(num + 1) + '">(이후)</a>'
-    elif(len(data_list) != 50):
-        div += '<hr><a href="/topic_record/' + url_pas(name) + '/' + str(num - 1) + '">(이전)</a>'
-    else:
-        div += '<hr><a href="/topic_record/' + url_pas(name) + '/' + str(num - 1) + '">(이전)</a> <a href="/topic_record/' + url_pas(name) + '/' + str(num + 1) + '">(이후)</a>'
+    div += next_fix('/topic_record/' + url_pas(name) + '/', num, data_list)
                 
     curs.execute("select end, why from ban where block = ?", [name])
     ban_it = curs.fetchall()
@@ -2953,8 +2914,9 @@ def user_topic_list(name = None, num = 1):
     )))
 
 @route('/<tool:re:history|record>/<name:path>', method=['POST', 'GET'])
-@route('/<tool:re:history|record>/<name:path>/num/<num:int>', method=['POST', 'GET'])
-@route('/record/<name:path>/<num:int>/<what:path>')
+@route('/<tool:re:history>/<name:path>/num/<num:int>', method=['POST', 'GET'])
+@route('/<tool:re:record>/<name:path>/<what:path>')
+@route('/<tool:re:record>/<name:path>/<what:path>/<num:int>')
 @route('/recent_changes')
 @route('/recent_changes/<what:path>')
 def recent_changes(name = None, num = 1, what = 'all', tool = 'record'):
@@ -2977,14 +2939,14 @@ def recent_changes(name = None, num = 1, what = 'all', tool = 'record'):
                 div += '<td style="width: 33.3%;">판</td><td style="width: 33.3%;">편집자</td><td style="width: 33.3%;">시간</td></tr>'
 
                 curs.execute("select id, title, date, ip, send, leng from history where title = ? order by id + 0 desc limit ?, '50'", [name, str(sql_num)])
-            elif(tool == 'record'):
+            else:
                 div += '<td style="width: 33.3%;">문서명</td><td style="width: 33.3%;">편집자</td><td style="width: 33.3%;">시간</td></tr>'
 
                 if(what == 'all'):
                     div = '<a href="/topic_record/' + url_pas(name) + '">(토론 기록)</a><hr>' + div
-                    div = '<a href="/record/' + url_pas(name) + '/' + str(num) + '/revert">(되돌리기)</a> ' + div
-                    div = '<a href="/record/' + url_pas(name) + '/' + str(num) + '/move">(이동)</a> ' + div
-                    div = '<a href="/record/' + url_pas(name) + '/' + str(num) + '/delete">(삭제)</a> ' + div
+                    div = '<a href="/record/' + url_pas(name) + '/revert">(되돌리기)</a> ' + div
+                    div = '<a href="/record/' + url_pas(name) + '/move">(이동)</a> ' + div
+                    div = '<a href="/record/' + url_pas(name) + '/delete">(삭제)</a> ' + div
                 
                     curs.execute("select id, title, date, ip, send, leng from history where ip = ? order by date desc limit ?, '50'", [name, str(sql_num)])
                 else:
@@ -2998,8 +2960,6 @@ def recent_changes(name = None, num = 1, what = 'all', tool = 'record'):
                         return(redirect('/'))
 
                     curs.execute("select id, title, date, ip, send, leng from history where ip = ? and send like ? order by date desc limit ?, '50'", [name, sql, str(sql_num)])
-            else:
-                return(redirect('/'))
         else:
             div += '<td style="width: 33.3%;">문서명</td><td style="width: 33.3%;">편집자</td><td style="width: 33.3%;">시간</td></tr>'
 
@@ -3098,13 +3058,7 @@ def recent_changes(name = None, num = 1, what = 'all', tool = 'record'):
                 sub += ' (역사)'
                 menu = [['w/' + url_pas(name), '문서'], ['move_data/' + url_pas(name), '이동 기록']]
                 
-                if(num == 1):
-                    if(len(data_list) == 50):
-                        div += '<hr><a href="/history/' + url_pas(name) + '/num/' + str(num + 1) + '">(이후)</a>'
-                elif(len(data_list) != 50):
-                    div += '<hr><a href="/history/' + url_pas(name) + '/num/' + str(num - 1) + '">(이전)</a>'
-                else:
-                    div += '<hr><a href="/history/' + url_pas(name) + '/num/' + str(num - 1) + '">(이전)</a> <a href="/history/' + url_pas(name) + '/num/' + str(num + 1) + '">(이후)</a>'
+                div += next_fix('/history/' + url_pas(name) + '/num/', num, data_list)
             else:
                 curs.execute("select end, why from ban where block = ?", [name])
                 ban_it = curs.fetchall()
@@ -3113,22 +3067,7 @@ def recent_changes(name = None, num = 1, what = 'all', tool = 'record'):
 
                 title = '편집 기록'
                 menu = [['other', '기타'], ['user', '사용자'], ['count/' + url_pas(name), '횟수']]
-                if(what):
-                    if(num == 1):
-                        if(len(data_list) == 50):
-                            div += '<hr><a href="/record/' + url_pas(name) + '/' + str(num + 1) + '/' + url_pas(what) + '">(이후)</a>'
-                    elif(len(data_list) != 50):
-                        div += '<hr><a href="/record/' + url_pas(name) + '/' + str(num - 1) + '/' + url_pas(what) + '">(이전)</a>'
-                    else:
-                        div += '<hr><a href="/record/' + url_pas(name) + '/' + str(num - 1) + '/' + url_pas(what) + '">(이전)</a> <a href="/record/' + url_pas(name) + '/' + str(num + 1) + '/' + url_pas(what) + '">(이후)</a>'
-                else:
-                    if(num == 1):
-                        if(len(data_list) == 50):
-                            div += '<hr><a href="/record/' + url_pas(name) + '/' + str(num + 1) + '">(이후)</a>'
-                    elif(len(data_list) != 50):
-                        div += '<hr><a href="/record/' + url_pas(name) + '/' + str(num - 1) + '">(이전)</a>'
-                    else:
-                        div += '<hr><a href="/record/' + url_pas(name) + '/' + str(num - 1) + '">(이전)</a> <a href="/record/' + url_pas(name) + '/' + str(num + 1) + '">(이후)</a>'
+                div += next_fix('/record/' + url_pas(name) + '/' + url_pas(what) + '/', num, data_list)
 
                 if(what != 'all'):
                     menu += [['record/' + url_pas(name), '일반']]
@@ -3434,4 +3373,4 @@ def error_500(error):
     except:
         return('<!-- 아카이 타이요노 도레스데 오도루 와타시노 코토 미츠메테이루노 메오 소라시타이 데모 소라세나이 아아 죠네츠데 야카레타이 도키메키 이죠노 리즈무 코요이 시리타쿠테 이츠모요리 타이탄나 코토바오 츠부야이타 지분노 키모치나노니 젠젠 와카라나쿠 (낫챠이타이나) 리세이카라 시레이가 (토도카나이) 콘토로-루 후카노 손나 코이오 시타놋테 코에가 토도이테시맛타 하즈카시잇테 오모우케도 못토 시리타이노 못토 시리타이노 이케나이 유메다토 키즈키나가라 아카이 타이요노 도레스데 오도루 와타시노 코토 미츠메루 히토미 메오 소라시타이 데모 소라세나이 마나츠와 다레노 모노 아나타토 와타시노 모노니시타이 (닷테네) 코코로가 토마레나이 키세츠니 하지메테 무네노 토비라가 아이테 시마이소오요 You knock knock my heart!! -->' + redirect('/setup'))
 
-run(app = app, server = 'tornado', host = '0.0.0.0', port = int(set_data['port']), debug = True)
+run(app = app, server = 'tornado', host = '0.0.0.0', port = int(set_data['port']), debug = True)

+ 12 - 0
func.py

@@ -77,6 +77,18 @@ def skin_check(conn):
 
     return(skin)
 
+def next_fix(link, num, page, end = 50):
+    list_data = ''
+    if(num == 1):
+        if(len(page) == end):
+            list_data += '<hr><a href="' + link + str(num + 1) + '">(이후)</a>'
+    elif(len(page) != end):
+        list_data += '<hr><a href="' + link + str(num - 1) + '">(이전)</a>'
+    else:
+        list_data += '<hr><a href="' + link + str(num - 1) + '">(이전)</a> <a href="' + link + str(num + 1) + '">(이후)</a>'
+
+    return(list_data)
+
 def other2(origin):
     div = ''
     session = request.environ.get('beaker.session')

+ 1 - 1
version.md

@@ -139,7 +139,7 @@
 
 ----
 ## 기타
- * 현재 버전 - v2.5.1
+ * 현재 버전 - v2.5.2
 
 ----
 ## 개발 이념