2DU 8 лет назад
Родитель
Сommit
9c1c87c861
3 измененных файлов с 172 добавлено и 153 удалено
  1. 2 121
      app.py
  2. 146 3
      func.py
  3. 24 29
      mark.py

+ 2 - 121
app.py

@@ -5,7 +5,6 @@ import sqlite3
 import bcrypt
 import os
 import difflib
-from css_html_js_minify import html_minify
 from multiprocessing import Process
 
 try:
@@ -30,7 +29,7 @@ conn = sqlite3.connect(set_data['db'] + '.db')
 curs = conn.cursor()
 
 session_opts = {
-    'session.type': 'file',
+    'session.type': 'dbm',
     'session.data_dir': './app_session/',
     'session.auto': 1
 }
@@ -41,125 +40,6 @@ from func import *
 
 BaseRequest.MEMFILE_MAX = 1000 ** 4
 
-def redirect(data):
-    return('<meta http-equiv="refresh" content="0;url=' + data + '" />')
-
-def re_error(data):
-    if(data == '/ban'):
-        ip = ip_check()
-        end = '권한이 맞지 않는 상태 입니다.'
-        if(ban_check() == 1):
-            curs.execute("select end, why from ban where block = ?", [ip])
-            d = curs.fetchall()
-            if(not d):
-                m = re.search("^([0-9]{1,3}\.[0-9]{1,3})", ip)
-                if(m):
-                    curs.execute("select end, why from ban where block = ? and band = 'O'", [m.groups()[0]])
-                    d = curs.fetchall()
-
-            if(d):
-                if(d[0][0]):
-                    end = d[0][0] + ' 까지 차단 상태 입니다. / 사유 : ' + d[0][1]                
-
-                    now = re.sub(':', '', get_time())
-                    now = re.sub('\-', '', now)
-                    now = int(re.sub(' ', '', now))
-                    
-                    day = re.sub('\-', '', d[0][0])    
-                    
-                    if(now >= int(day + '000000')):
-                        curs.execute("delete from ban where block = ?", [ip])
-                        conn.commit()
-                        
-                        end = '차단이 풀렸습니다. 다시 시도 해 보세요.'
-                else:
-                    end = '영구 차단 상태 입니다. / 사유 : ' + d[0][1]
-            
-
-        return(
-            html_minify(
-                template('index', 
-                    imp = ['권한 오류', wiki_set(1), custom(), other2([0, 0])],
-                    data = end,
-                    menu = 0
-                )
-            )
-        )
-
-    d = re.search('\/error\/([0-9]+)', data)
-    if(d):
-        num = int(d.groups()[0])
-        if(num == 1):
-            title = '권한 오류'
-            data = '비 로그인 상태 입니다.'
-        elif(num == 2):
-            title = '권한 오류'
-            data = '이 계정이 없습니다.'
-        elif(num == 3):
-            title = '권한 오류'
-            data = '권한이 모자랍니다.'
-        elif(num == 4):
-            title = '권한 오류'
-            data = '관리자는 차단, 검사 할 수 없습니다.'
-        elif(num == 5):
-            title = '사용자 오류'
-            data = '그런 계정이 없습니다.'
-        elif(num == 6):
-            title = '가입 오류'
-            data = '동일한 아이디의 사용자가 있습니다.'
-        elif(num == 7):
-            title = '가입 오류'
-            data = '아이디는 20글자보다 짧아야 합니다.'
-        elif(num == 8):
-            title = '가입 오류'
-            data = '아이디에는 한글과 알파벳과 공백만 허용 됩니다.'
-        elif(num == 9):
-            title = '파일 올리기 오류'
-            data = '파일이 없습니다.'
-        elif(num == 10):
-            title = '변경 오류'
-            data = '비밀번호가 다릅니다.'
-        elif(num == 11):
-            title = '로그인 오류'
-            data = '이미 로그인 되어 있습니다.'
-        elif(num == 14):
-            title = '파일 올리기 오류'
-            data = 'jpg, gif, jpeg, png, webp만 가능 합니다.'
-        elif(num == 15):
-            title = '편집 오류'
-            data = '편집 기록은 500자를 넘을 수 없습니다.'
-        elif(num == 16):
-            title = '파일 올리기 오류'
-            data = '동일한 이름의 파일이 있습니다.'
-        elif(num == 17):
-            title = '파일 올리기 오류'
-            data = '파일 용량은 ' + wiki_set(3) + 'MB를 넘길 수 없습니다.'
-        elif(num == 18):
-            title = '편집 오류'
-            data = '내용이 원래 문서와 동일 합니다.'
-        elif(num == 19):
-            title = '이동 오류'
-            data = '이동 하려는 곳에 문서가 이미 있습니다.'
-        elif(num == 20):
-            title = '비밀번호 오류'
-            data = '재 확인이랑 비밀번호가 다릅니다.'
-
-        if(title):
-            return(
-                html_minify(
-                    template(
-                        'index', 
-                        imp = [title, wiki_set(1), custom(), other2([0, 0])],
-                        data = data,
-                        menu = 0
-                    )
-                )
-            )
-        else:
-            return(redirect('/'))
-    else:
-        return(redirect('/'))
-
 r_ver = '2.3.5'
 p_ver = 's'
 
@@ -1622,6 +1502,7 @@ def edit(name = None, num = None):
         )
                 
         namumark(name, content, 1, 0, 0)
+        include(name, request.forms.otent, content)
         conn.commit()
         
         return(redirect('/w/' + url_pas(name)))

+ 146 - 3
func.py

@@ -1,7 +1,8 @@
-from bottle import request, app
+from bottle import request, app, template
 from bottle.ext import beaker
 import json
 import sqlite3
+from css_html_js_minify import html_minify
 
 json_data = open('set.json').read()
 set_data = json.loads(json_data)
@@ -10,7 +11,7 @@ conn = sqlite3.connect(set_data['db'] + '.db')
 curs = conn.cursor()
     
 session_opts = {
-    'session.type': 'file',
+    'session.type': 'dbm',
     'session.data_dir': './app_session/',
     'session.auto': 1
 }
@@ -20,7 +21,6 @@ app = beaker.middleware.SessionMiddleware(app(), session_opts)
 from mark import *
 
 def other2(d):
-    g = 0
     session = request.environ.get('beaker.session')
     if(session.get('View_List')):
         m = re.findall('(?:(?:([^\n]+)\n))', session.get('View_List'))
@@ -33,6 +33,30 @@ def other2(d):
     r = d + [g]
     return(r)
 
+def include(title, old, new):
+    if(re.search('^틀:', title)):
+        old_d = mid_pas(old, 0, 1, 1)[0]
+        new_d = mid_pas(new, 0, 1, 1)[0]
+
+        m1 = re.findall("\[\[(분류:(?:(?:(?!\]\]).)*))\]\]", old_d)
+        m2 = re.findall("\[\[(분류:(?:(?:(?!\]\]).)*))\]\]", new_d)
+
+        curs.execute("select link from back where title = ? and type = 'include'", [title])
+        d1 = curs.fetchall()
+        print(d1)
+        for x in d1:
+            print('x : ' + str(x[0]))
+            for y in m1:
+                print('y : ' + str(y))
+                curs.execute("delete from back where link = ? and type = 'cat'", [y])
+
+            for z in m2:
+                print('z : ' + str(z))
+                backlink_plus(x[0], z, 'cat', 1)
+
+        conn.commit()
+    
+
 def wiki_set(num):
     if(num == 1):
         r = []
@@ -312,3 +336,122 @@ def leng_check(a, b):
         c = '0'
         
     return(c)
+
+def redirect(data):
+    return('<meta http-equiv="refresh" content="0;url=' + data + '" />')
+
+def re_error(data):
+    if(data == '/ban'):
+        ip = ip_check()
+        end = '권한이 맞지 않는 상태 입니다.'
+        if(ban_check() == 1):
+            curs.execute("select end, why from ban where block = ?", [ip])
+            d = curs.fetchall()
+            if(not d):
+                m = re.search("^([0-9]{1,3}\.[0-9]{1,3})", ip)
+                if(m):
+                    curs.execute("select end, why from ban where block = ? and band = 'O'", [m.groups()[0]])
+                    d = curs.fetchall()
+
+            if(d):
+                if(d[0][0]):
+                    end = d[0][0] + ' 까지 차단 상태 입니다. / 사유 : ' + d[0][1]                
+
+                    now = re.sub(':', '', get_time())
+                    now = re.sub('\-', '', now)
+                    now = int(re.sub(' ', '', now))
+                    
+                    day = re.sub('\-', '', d[0][0])    
+                    
+                    if(now >= int(day + '000000')):
+                        curs.execute("delete from ban where block = ?", [ip])
+                        conn.commit()
+                        
+                        end = '차단이 풀렸습니다. 다시 시도 해 보세요.'
+                else:
+                    end = '영구 차단 상태 입니다. / 사유 : ' + d[0][1]
+            
+
+        return(
+            html_minify(
+                template('index', 
+                    imp = ['권한 오류', wiki_set(1), custom(), other2([0, 0])],
+                    data = end,
+                    menu = 0
+                )
+            )
+        )
+
+    d = re.search('\/error\/([0-9]+)', data)
+    if(d):
+        num = int(d.groups()[0])
+        if(num == 1):
+            title = '권한 오류'
+            data = '비 로그인 상태 입니다.'
+        elif(num == 2):
+            title = '권한 오류'
+            data = '이 계정이 없습니다.'
+        elif(num == 3):
+            title = '권한 오류'
+            data = '권한이 모자랍니다.'
+        elif(num == 4):
+            title = '권한 오류'
+            data = '관리자는 차단, 검사 할 수 없습니다.'
+        elif(num == 5):
+            title = '사용자 오류'
+            data = '그런 계정이 없습니다.'
+        elif(num == 6):
+            title = '가입 오류'
+            data = '동일한 아이디의 사용자가 있습니다.'
+        elif(num == 7):
+            title = '가입 오류'
+            data = '아이디는 20글자보다 짧아야 합니다.'
+        elif(num == 8):
+            title = '가입 오류'
+            data = '아이디에는 한글과 알파벳과 공백만 허용 됩니다.'
+        elif(num == 9):
+            title = '파일 올리기 오류'
+            data = '파일이 없습니다.'
+        elif(num == 10):
+            title = '변경 오류'
+            data = '비밀번호가 다릅니다.'
+        elif(num == 11):
+            title = '로그인 오류'
+            data = '이미 로그인 되어 있습니다.'
+        elif(num == 14):
+            title = '파일 올리기 오류'
+            data = 'jpg, gif, jpeg, png, webp만 가능 합니다.'
+        elif(num == 15):
+            title = '편집 오류'
+            data = '편집 기록은 500자를 넘을 수 없습니다.'
+        elif(num == 16):
+            title = '파일 올리기 오류'
+            data = '동일한 이름의 파일이 있습니다.'
+        elif(num == 17):
+            title = '파일 올리기 오류'
+            data = '파일 용량은 ' + wiki_set(3) + 'MB를 넘길 수 없습니다.'
+        elif(num == 18):
+            title = '편집 오류'
+            data = '내용이 원래 문서와 동일 합니다.'
+        elif(num == 19):
+            title = '이동 오류'
+            data = '이동 하려는 곳에 문서가 이미 있습니다.'
+        elif(num == 20):
+            title = '비밀번호 오류'
+            data = '재 확인이랑 비밀번호가 다릅니다.'
+
+        if(title):
+            return(
+                html_minify(
+                    template(
+                        'index', 
+                        imp = [title, wiki_set(1), custom(), other2([0, 0])],
+                        data = data,
+                        menu = 0
+                    )
+                )
+            )
+        else:
+            return(redirect('/'))
+    else:
+        return(redirect('/'))

+ 24 - 29
mark.py

@@ -17,7 +17,7 @@ conn = sqlite3.connect(set_data['db'] + '.db')
 curs = conn.cursor()
 
 session_opts = {
-    'session.type': 'file',
+    'session.type': 'dbm',
     'session.data_dir': './app_session/',
     'session.auto': 1
 }
@@ -416,36 +416,31 @@ def toc_pas(data, title, num, toc_y):
     return(data)
 
 def link(title, data, num, num2, category):
-    while(1):
-        m = re.search("\[\[(분류:(?:(?:(?!\]\]).)*))\]\]", data)
-        if(m):
-            g = m.groups()
-            
-            if(title != g[0]):
-                backlink_plus(title, g[0], 'cat', num)
+    m = re.findall("\[\[(분류:(?:(?:(?!\]\]).)*))\]\]", data)
+    for g in m:
+        if(title != g):
+            backlink_plus(title, g, 'cat', num)
+                
+            if(category == ''):
+                curs.execute("select title from data where title = ?", [g])
+                exists = curs.fetchall()
+                if(exists):
+                    red = ""
+                else:
+                    red = 'class="not_thing"'
                     
-                if(category == ''):
-                    curs.execute("select title from data where title = ?", [g[0]])
-                    exists = curs.fetchall()
-                    if(exists):
-                        red = ""
-                    else:
-                        red = 'class="not_thing"'
-                        
-                    category += '<a ' + red + ' href="/w/' + url_pas(g[0]) + '">' + re.sub("분류:", "", g[0]) + '</a>'
+                category += '<a ' + red + ' href="/w/' + url_pas(g) + '">' + re.sub("분류:", "", g) + '</a>'
+            else:
+                curs.execute("select title from data where title = ?", [g])
+                exists = curs.fetchall()
+                if(exists):
+                    red = ""
                 else:
-                    curs.execute("select title from data where title = ?", [g[0]])
-                    exists = curs.fetchall()
-                    if(exists):
-                        red = ""
-                    else:
-                        red = 'class="not_thing"'
-                        
-                    category += ' / ' + '<a ' + red + ' href="/w/' + url_pas(g[0]) + '">' + re.sub("분류:", "", g[0]) + '</a>'
-            
-            data = re.sub("\[\[(분류:(?:(?:(?!\]\]).)*))\]\]", '', data, 1)
-        else:
-            break
+                    red = 'class="not_thing"'
+                    
+                category += ' / ' + '<a ' + red + ' href="/w/' + url_pas(g) + '">' + re.sub("분류:", "", g) + '</a>'
+        
+        data = re.sub("\[\[(분류:(?:(?:(?!\]\]).)*))\]\]", '', data, 1)
     
     test = re.findall('\[\[wiki:([^|\]]+)(?:\|([^\]]+))?\]\]', data)
     if(test):