2DU 8 lat temu
rodzic
commit
acff72becb
3 zmienionych plików z 232 dodań i 144 usunięć
  1. 216 144
      app.py
  2. 14 0
      func.py
  3. 2 0
      views/acme/index.tpl

+ 216 - 144
app.py

@@ -238,167 +238,242 @@ def alarm():
 @route('/edit_set', method=['POST', 'GET'])
 @route('/edit_set/<num:int>', method=['POST', 'GET'])
 def edit_set(num = 0):
+    if(num != 0 and admin_check(None, 'edit_set') != 1):
+        return(redirect('/ban'))
+
     if(num == 0):
+        li_list = ['기본 설정', '문구 관련', '전역 CSS', '전역 JS']
+        x = 0
+        li_data = ''
+        for li in li_list:
+            x += 1
+            li_data += '<li>' + str(x) + '. <a href="/edit_set/' + str(x) + '">' + li + '</a></li>'
+
         return(
             html_minify(
                 template('index', 
                     imp = ['설정 편집', wiki_set(1), custom(), other2([0, 0])],
-                    data = '<ul> \
-                                <li><a href="/edit_set/1">기본 설정</a></li> \
-                                <li><a href="/edit_set/2">문구 관련</a></li> \
-                            </ul>',
+                    data = '<ul>' + li_data + '</ul>',
                     menu = [['manager', '관리자']]
                 )
             )
         )
     elif(num == 1):
-        if(admin_check(None, 'edit_set') == 1):
-            if(request.method == 'POST'):
-                curs.execute("update other set data = ? where name = ?", [request.forms.name, 'name'])
-                curs.execute("update other set data = ? where name = 'frontpage'", [request.forms.frontpage])
-                curs.execute("update other set data = ? where name = 'license'", [request.forms.license])
-                curs.execute("update other set data = ? where name = 'upload'", [request.forms.upload])
-                curs.execute("update other set data = ? where name = 'skin'", [request.forms.skin])
-                curs.execute("update other set data = ? where name = 'edit'", [request.forms.edit])
-                curs.execute("update other set data = ? where name = 'reg'", [request.forms.reg])
-                conn.commit()
+        if(request.method == 'POST'):
+            curs.execute("update other set data = ? where name = ?", [request.forms.name, 'name'])
+            curs.execute("update other set data = ? where name = 'frontpage'", [request.forms.frontpage])
+            curs.execute("update other set data = ? where name = 'license'", [request.forms.license])
+            curs.execute("update other set data = ? where name = 'upload'", [request.forms.upload])
+            curs.execute("update other set data = ? where name = 'skin'", [request.forms.skin])
+            curs.execute("update other set data = ? where name = 'edit'", [request.forms.edit])
+            curs.execute("update other set data = ? where name = 'reg'", [request.forms.reg])
+            conn.commit()
+
+            return(redirect('/edit_set/1'))
+        else:
+            i_list = ['name', 'frontpage', 'license', 'upload', 'skin', 'edit', 'reg']
+            n_list = ['무명위키', '위키:대문', 'CC 0', '2', '', 'normal', '']
+            d_list = []
+            
+            x = 0
+            for i in i_list:
+                curs.execute('select data from other where name = ?', [i])
+                sql_d = curs.fetchall()
+                if(sql_d):
+                    d_list += [sql_d[0][0]]
+                else:
+                    curs.execute('insert into other (name, data) values (?, ?)', [i, n_list[x]])
+                    d_list += [n_list[x]]
+
+                x += 1
+            conn.commit()
 
-                return(redirect('/edit_set/1'))
+            div = ''
+            if(d_list[5] == 'login'):
+                div += '<option value="login">사용자</option>'
+                div += '<option value="normal">일반</option>'
+                div += '<option value="admin">관리자</option>'
+            elif(d_list[5] == 'admin'):
+                div += '<option value="admin">관리자</option>'
+                div += '<option value="login">사용자</option>'
+                div += '<option value="normal">일반</option>'
             else:
-                i_list = ['name', 'frontpage', 'license', 'upload', 'skin', 'edit', 'reg']
-                n_list = ['무명위키', '위키:대문', 'CC 0', '2', '', 'normal', '']
-                d_list = []
-                
-                x = 0
-                for i in i_list:
-                    curs.execute('select data from other where name = ?', [i])
-                    sql_d = curs.fetchall()
-                    if(sql_d):
-                        d_list += [sql_d[0][0]]
-                    else:
-                        curs.execute('insert into other (name, data) values (?, ?)', [i, n_list[x]])
-                        d_list += [n_list[x]]
+                div += '<option value="normal">일반</option>'
+                div += '<option value="admin">관리자</option>'
+                div += '<option value="login">사용자</option>'
 
-                    x += 1
-                conn.commit()
+            if(d_list[6]):
+                ch_1 = 'checked="checked"'
+            else:
+                ch_1 = ''
 
-                div = ''
-                if(d_list[5] == 'login'):
-                    div += '<option value="login">사용자</option>'
-                    div += '<option value="normal">일반</option>'
-                    div += '<option value="admin">관리자</option>'
-                elif(d_list[5] == 'admin'):
-                    div += '<option value="admin">관리자</option>'
-                    div += '<option value="login">사용자</option>'
-                    div += '<option value="normal">일반</option>'
-                else:
-                    div += '<option value="normal">일반</option>'
-                    div += '<option value="admin">관리자</option>'
-                    div += '<option value="login">사용자</option>'
+            return(
+                html_minify(
+                    template('index', 
+                        imp = ['기본 설정', wiki_set(1), custom(), other2([0, 0])],
+                        data = '<form method="post"> \
+                                    <span>위키 이름 (기본 : 무명위키)</span> \
+                                    <br> \
+                                    <br> \
+                                    <input placeholder="위키 이름" style="width: 100%;" type="text" name="name" value="' + d_list[0] + '"> \
+                                    <br> \
+                                    <br> \
+                                    <span>시작 페이지 (기본 : 위키:대문)</span> \
+                                    <br> \
+                                    <br> \
+                                    <input placeholder="시작 페이지" style="width: 100%;" type="text" name="frontpage" value="' + d_list[1] + '"> \
+                                    <br> \
+                                    <br> \
+                                    <span>라이선스 (기본 : CC 0)</span> \
+                                    <br> \
+                                    <br> \
+                                    <input placeholder="라이선스" style="width: 100%;" type="text" name="license" value="' + d_list[2] + '"> \
+                                    <br> \
+                                    <br> \
+                                    <span>파일 용량 한도 (기본 : 2)</span> \
+                                    <br> \
+                                    <br> \
+                                    <input placeholder="파일 용량 한도" style="width: 100%;" type="text" name="upload" value="' + d_list[3] + '"> \
+                                    <br> \
+                                    <br> \
+                                    <span>스킨 (기본 : acme) (재시작 필요)</span> \
+                                    <br> \
+                                    <br> \
+                                    <input placeholder="스킨" style="width: 100%;" type="text" name="skin" value="' + d_list[4] + '"> \
+                                    <br> \
+                                    <br> \
+                                    <span>기본 ACL 설정 (기본 : 일반)</span> \
+                                    <br> \
+                                    <br> \
+                                    <select name="edit"> \
+                                        ' + div + ' \
+                                    </select> \
+                                    <br> \
+                                    <br> \
+                                    <input type="checkbox" name="reg" ' + ch_1 + '> 가입불가 \
+                                    <br> \
+                                    <br> \
+                                    <button class="btn btn-primary" type="submit">저장</button> \
+                                </form>',
+                        menu = [['edit_set', '설정 편집']]
+                    )
+                )
+            )
+    elif(num == 2):
+        if(request.method == 'POST'):
+            curs.execute("update other set data = ? where name = ?", [request.forms.contract, 'contract'])
+            conn.commit()
 
-                if(d_list[6]):
-                    ch_1 = 'checked="checked"'
+            return(redirect('/edit_set/2'))
+        else:
+            i_list = ['contract']
+            n_list = ['']
+            d_list = []
+            
+            x = 0
+            for i in i_list:
+                curs.execute('select data from other where name = ?', [i])
+                sql_d = curs.fetchall()
+                if(sql_d):
+                    d_list += [sql_d[0][0]]
                 else:
-                    ch_1 = ''
+                    curs.execute('insert into other (name, data) values (?, ?)', [i, n_list[x]])
+                    d_list += [n_list[x]]
 
-                return(
-                    html_minify(
-                        template('index', 
-                            imp = ['기본 설정', wiki_set(1), custom(), other2([0, 0])],
-                            data = '<form method="post"> \
-                                        <span>위키 이름 (기본 : 무명위키)</span> \
-                                        <br> \
-                                        <br> \
-                                        <input placeholder="위키 이름" style="width: 100%;" type="text" name="name" value="' + d_list[0] + '"> \
-                                        <br> \
-                                        <br> \
-                                        <span>시작 페이지 (기본 : 위키:대문)</span> \
-                                        <br> \
-                                        <br> \
-                                        <input placeholder="시작 페이지" style="width: 100%;" type="text" name="frontpage" value="' + d_list[1] + '"> \
-                                        <br> \
-                                        <br> \
-                                        <span>라이선스 (기본 : CC 0)</span> \
-                                        <br> \
-                                        <br> \
-                                        <input placeholder="라이선스" style="width: 100%;" type="text" name="license" value="' + d_list[2] + '"> \
-                                        <br> \
-                                        <br> \
-                                        <span>파일 용량 한도 (기본 : 2)</span> \
-                                        <br> \
-                                        <br> \
-                                        <input placeholder="파일 용량 한도" style="width: 100%;" type="text" name="upload" value="' + d_list[3] + '"> \
-                                        <br> \
-                                        <br> \
-                                        <span>스킨 (기본 : acme) (재시작 필요)</span> \
-                                        <br> \
-                                        <br> \
-                                        <input placeholder="스킨" style="width: 100%;" type="text" name="skin" value="' + d_list[4] + '"> \
-                                        <br> \
-                                        <br> \
-                                        <span>기본 ACL 설정 (기본 : 일반)</span> \
-                                        <br> \
-                                        <br> \
-                                        <select name="edit"> \
-                                            ' + div + ' \
-                                        </select> \
-                                        <br> \
-                                        <br> \
-                                        <input type="checkbox" name="reg" ' + ch_1 + '> 가입불가 \
-                                        <br> \
-                                        <br> \
-                                        <button class="btn btn-primary" type="submit">저장</button> \
-                                    </form>',
-                            menu = [['edit_set', '설정 편집']]
-                        )
+                x += 1
+            conn.commit()
+
+            return(
+                html_minify(
+                    template('index', 
+                        imp = ['문구 관련', wiki_set(1), custom(), other2([0, 0])],
+                        data = '<form method="post"> \
+                                    <span>가입 약관</span> \
+                                    <br> \
+                                    <br> \
+                                    <input placeholder="가입 약관" style="width: 100%;" type="text" name="contract" value="' + d_list[0] + '"> \
+                                    <br> \
+                                    <br> \
+                                    <button class="btn btn-primary" type="submit">저장</button> \
+                                </form>',
+                        menu = [['edit_set', '설정 편집']]
                     )
                 )
+            )
+    elif(num == 3):
+        session = request.environ.get('beaker.session')
+        if(request.method == 'POST'):
+            curs.execute("select name from other where name = 'css'")
+            if(curs.fetchall()):
+                curs.execute("update other set data = ? where name = 'css'", [request.forms.content])
+            else:
+                curs.execute("insert into other (name, data) values ('css', ?)", [request.forms.content])
+            conn.commit()
+
+            return(redirect('/edit_set/3'))
         else:
-            return(re_error('/ban'))
-    elif(num == 2):
-        if(admin_check(None, 'edit_set') == 1):
-            if(request.method == 'POST'):
-                curs.execute("update other set data = ? where name = ?", [request.forms.contract, 'contract'])
-                conn.commit()
+            curs.execute("select data from other where name = 'css'")
+            css = curs.fetchall()
+            if(css):
+                data = css[0][0]
+            else:
+                data = ''
 
-                return(redirect('/edit_set/2'))
+            return(
+                html_minify(
+                    template('index', 
+                        imp = ['전역 CSS', wiki_set(1), custom(), other2([0, 0])],
+                        data =  '<form method="post"> \
+                                    <textarea rows="30" cols="100" name="content">'\
+                                        + data + \
+                                    '</textarea> \
+                                    <br> \
+                                    <br> \
+                                    <div class="form-actions"> \
+                                        <button class="btn btn-primary" type="submit">저장</button> \
+                                    </div> \
+                                </form>',
+                        menu = [['edit_set', '설정 편집']]
+                    )
+                )
+            )
+    elif(num == 4):
+        session = request.environ.get('beaker.session')
+        if(request.method == 'POST'):
+            curs.execute("select name from other where name = 'js'")
+            if(curs.fetchall()):
+                curs.execute("update other set data = ? where name = 'js'", [request.forms.content])
             else:
-                i_list = ['contract']
-                n_list = ['']
-                d_list = []
-                
-                x = 0
-                for i in i_list:
-                    curs.execute('select data from other where name = ?', [i])
-                    sql_d = curs.fetchall()
-                    if(sql_d):
-                        d_list += [sql_d[0][0]]
-                    else:
-                        curs.execute('insert into other (name, data) values (?, ?)', [i, n_list[x]])
-                        d_list += [n_list[x]]
+                curs.execute("insert into other (name, data) values ('js', ?)", [request.forms.content])
+            conn.commit()
 
-                    x += 1
-                conn.commit()
+            return(redirect('/edit_set/4'))
+        else:
+            curs.execute("select data from other where name = 'js'")
+            js = curs.fetchall()
+            if(js):
+                data = js[0][0]
+            else:
+                data = ''
 
-                return(
-                    html_minify(
-                        template('index', 
-                            imp = ['문구 관련', wiki_set(1), custom(), other2([0, 0])],
-                            data = '<form method="post"> \
-                                        <span>가입 약관</span> \
-                                        <br> \
-                                        <br> \
-                                        <input placeholder="가입 약관" style="width: 100%;" type="text" name="contract" value="' + d_list[0] + '"> \
-                                        <br> \
-                                        <br> \
+            return(
+                html_minify(
+                    template('index', 
+                        imp = ['전역 JS', wiki_set(1), custom(), other2([0, 0])],
+                        data =  '<form method="post"> \
+                                    <textarea rows="30" cols="100" name="content">'\
+                                        + data + \
+                                    '</textarea> \
+                                    <br> \
+                                    <br> \
+                                    <div class="form-actions"> \
                                         <button class="btn btn-primary" type="submit">저장</button> \
-                                    </form>',
-                            menu = [['edit_set', '설정 편집']]
-                        )
+                                    </div> \
+                                </form>',
+                        menu = [['edit_set', '설정 편집']]
                     )
                 )
-        else:
-            return(re_error('/ban'))
+            )
     else:
         return(redirect('/'))
 
@@ -3156,18 +3231,15 @@ def read_view(name = None, num = None, redirect = None):
 
 
     curs.execute("select sub from rd where title = ? order by date desc", [name])
-    rows = curs.fetchall()
-    for data in rows:
+    rd = curs.fetchall()
+    for data in rd:
         curs.execute("select title from stop where title = ? and sub = ? and close = 'O'", [name, data[0]])
-        row = curs.fetchall()
-        if(not row):
+        if(not curs.fetchall()):
             topic = 1
-            
             break
                 
     curs.execute("select title from data where title like ?", ['%' + name + '/%'])
-    under = curs.fetchall()
-    if(under):
+    if(curs.fetchall()):
         down = 1
     else:
         down = 0
@@ -3185,13 +3257,13 @@ def read_view(name = None, num = None, redirect = None):
         
     if(re.search("^분류:", name)):        
         curs.execute("select link from back where title = ? and type='cat' order by link asc", [name])
-        rows = curs.fetchall()
-        if(rows):
+        back = curs.fetchall()
+        if(back):
             div = '[목차(없음)]\r\n== 분류 ==\r\n'
             u_div = ''
             i = 0
             
-            for data in rows:       
+            for data in back:       
                 if(re.search('^분류:', data[0])):
                     if(u_div == ''):
                         u_div = '=== 하위 분류 ===\r\n'

+ 14 - 0
func.py

@@ -72,6 +72,20 @@ def wiki_set(num):
         else:
             r += ['CC 0']
 
+        curs.execute("select data from other where name = 'css'")
+        d = curs.fetchall()
+        if(d):
+            r += [d[0][0]]
+        else:
+            r += ['']
+
+        curs.execute("select data from other where name = 'js'")
+        d = curs.fetchall()
+        if(d):
+            r += [d[0][0]]
+        else:
+            r += ['']
+
         return(r)
 
     if(num == 2):

+ 2 - 0
views/acme/index.tpl

@@ -17,6 +17,8 @@
         <script type="text/x-mathjax-config">MathJax.Hub.Config({tex2jax: {inlineMath: [['[math]', '[/math]']]}});</script>
         <script type="text/javascript" async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS_CHTML"></script>
         <script src='https://www.google.com/recaptcha/api.js'></script>
+        <style>{{!imp[1][2]}}</style>
+        <script>{{!imp[1][3]}}</script>
         <style>{{!imp[2][0]}}</style>
         <script>{{!imp[2][1]}}</script>
         <meta name="twitter:creator" content="@{{imp[1][0]}}">