|
|
@@ -936,13 +936,14 @@ def recent_discuss(tools = 'normal'):
|
|
|
div = ''
|
|
|
|
|
|
if tools == 'normal':
|
|
|
- div += '<a href="/recent_discuss/close">(닫힌 토론)</a>'
|
|
|
+ div += '<a href="/recent_discuss/close">(닫힘)</a>'
|
|
|
m_sub = 0
|
|
|
else:
|
|
|
- div += '<a href="/recent_discuss">(열린 토론)</a>'
|
|
|
+ div += '<a href="/recent_discuss">(열림)</a>'
|
|
|
m_sub = ' (닫힘)'
|
|
|
|
|
|
- div += '<hr><table style="width: 100%; text-align: center;"><tbody><tr><td style="width: 50%;">토론명</td><td style="width: 50%;">시간</td></tr>'
|
|
|
+ div += '<hr><table style="width: 100%; text-align: center;"><tbody><tr> \
|
|
|
+ <td style="width: 50%;">토론명</td><td style="width: 50%;">시간</td></tr>'
|
|
|
else:
|
|
|
return redirect('/')
|
|
|
|
|
|
@@ -962,7 +963,8 @@ def recent_discuss(tools = 'normal'):
|
|
|
close = 1
|
|
|
|
|
|
if close == 0:
|
|
|
- div += '<tr><td><a href="/topic/' + url_pas(data[0]) + '/sub/' + url_pas(data[1]) + '">' + title + '</a> (' + sub + ')</td><td>' + data[2] + '</td></tr>'
|
|
|
+ div += '<tr><td><a href="/topic/' + url_pas(data[0]) + '/sub/' + url_pas(data[1]) + '">' + \
|
|
|
+ title + '</a> (' + sub + ')</td><td>' + data[2] + '</td></tr>'
|
|
|
else:
|
|
|
div += '</tbody></table>'
|
|
|
|
|
|
@@ -1962,18 +1964,22 @@ def topic_stop(name = None, sub = None, tool = None):
|
|
|
if tool == 'agree':
|
|
|
curs.execute("select title from agreedis where title = ? and sub = ?", [name, sub])
|
|
|
if curs.fetchall():
|
|
|
- curs.execute("insert into topic (id, title, sub, data, date, ip, block, top) values (?, ?, ?, '합의 결렬', ?, ?, '', '1')", [str(int(topic_check[0][0]) + 1), name, sub, time, ip])
|
|
|
+ curs.execute("insert into topic (id, title, sub, data, date, ip, block, top) values (?, ?, ?, '합의 결렬', ?, ?, '', '1')", \
|
|
|
+ [str(int(topic_check[0][0]) + 1), name, sub, time, ip])
|
|
|
curs.execute("delete from agreedis where title = ? and sub = ?", [name, sub])
|
|
|
else:
|
|
|
- curs.execute("insert into topic (id, title, sub, data, date, ip, block, top) values (?, ?, ?, '합의 완료', ?, ?, '', '1')", [str(int(topic_check[0][0]) + 1), name, sub, time, ip])
|
|
|
+ curs.execute("insert into topic (id, title, sub, data, date, ip, block, top) values (?, ?, ?, '합의 완료', ?, ?, '', '1')", \
|
|
|
+ [str(int(topic_check[0][0]) + 1), name, sub, time, ip])
|
|
|
curs.execute("insert into agreedis (title, sub) values (?, ?)", [name, sub])
|
|
|
else:
|
|
|
curs.execute("select title from stop where title = ? and sub = ? and close = ?", [name, sub, set_list[0]])
|
|
|
if curs.fetchall():
|
|
|
- curs.execute("insert into topic (id, title, sub, data, date, ip, block, top) values (?, ?, ?, ?, ?, ?, '', '1')", [str(int(topic_check[0][0]) + 1), name, sub, set_list[3], time, ip])
|
|
|
+ curs.execute("insert into topic (id, title, sub, data, date, ip, block, top) values (?, ?, ?, ?, ?, ?, '', '1')", \
|
|
|
+ [str(int(topic_check[0][0]) + 1), name, sub, set_list[3], time, ip])
|
|
|
curs.execute("delete from stop where title = ? and sub = ? and close = ?", [name, sub, set_list[0]])
|
|
|
else:
|
|
|
- curs.execute("insert into topic (id, title, sub, data, date, ip, block, top) values (?, ?, ?, ?, ?, ?, '', '1')", [str(int(topic_check[0][0]) + 1), name, sub, set_list[2], time, ip])
|
|
|
+ curs.execute("insert into topic (id, title, sub, data, date, ip, block, top) values (?, ?, ?, ?, ?, ?, '', '1')", \
|
|
|
+ [str(int(topic_check[0][0]) + 1), name, sub, set_list[2], time, ip])
|
|
|
curs.execute("insert into stop (title, sub, close) values (?, ?, ?)", [name, sub, set_list[0]])
|
|
|
curs.execute("delete from stop where title = ? and sub = ? and close = ?", [name, sub, set_list[1]])
|
|
|
|
|
|
@@ -2178,8 +2184,9 @@ def topic(name = None, sub = None):
|
|
|
number += 1
|
|
|
|
|
|
if ban != 1 or admin == 1:
|
|
|
- data += '<a id="reload" href="javascript:void(0);" onclick="location.href.endsWith(\'#reload\') ? location.reload(true) : location.href = \'#reload\'"><i aria-hidden="true" class="fa fa-refresh"></i></a>'
|
|
|
- data += '<form style="' + display + '" method="post"><br><textarea style="height: 100px;" name="content"></textarea><hr>' + captcha_get(conn)
|
|
|
+ data += '<a id="reload" href="javascript:void(0);" onclick="location.href.endsWith(\'#reload\') ? ' + \
|
|
|
+ 'location.reload(true) : location.href = \'#reload\'"><i aria-hidden="true" class="fa fa-refresh"></i></a>' + \
|
|
|
+ '<form style="' + display + '" method="post"><br><textarea style="height: 100px;" name="content"></textarea><hr>' + captcha_get(conn)
|
|
|
|
|
|
if display == '':
|
|
|
data += ip_warring(conn)
|
|
|
@@ -2239,7 +2246,8 @@ def close_topic_list(name = None, tool = None):
|
|
|
it_p = 1
|
|
|
|
|
|
if it_p != 1:
|
|
|
- div += '<h2><a href="/topic/' + url_pas(name) + '/sub/' + url_pas(data[0]) + '">' + data[0] + '</a></h2><hr id="under_bar" style="margin-top: -5px;">'
|
|
|
+ div += '<h2><a href="/topic/' + url_pas(name) + '/sub/' + url_pas(data[0]) + '">' + data[0] + \
|
|
|
+ '</a></h2><hr id="under_bar" style="margin-top: -5px;">'
|
|
|
|
|
|
if div == '':
|
|
|
plus = re.sub('^<br>', '', plus)
|
|
|
@@ -2522,8 +2530,10 @@ def user_ban(name = None):
|
|
|
else:
|
|
|
login = ''
|
|
|
|
|
|
- curs.execute("insert into rb (block, end, today, blocker, why, band) values (?, ?, ?, ?, ?, ?)", [name, end, time, ip, request.form['why'], band_d])
|
|
|
- curs.execute("insert into ban (block, end, why, band, login) values (?, ?, ?, ?, ?)", [name, end, request.form['why'], band_d, login])
|
|
|
+ curs.execute("insert into rb (block, end, today, blocker, why, band) values (?, ?, ?, ?, ?, ?)", \
|
|
|
+ [name, end, time, ip, request.form['why'], band_d])
|
|
|
+ curs.execute("insert into ban (block, end, why, band, login) values (?, ?, ?, ?, ?)", \
|
|
|
+ [name, end, request.form['why'], band_d, login])
|
|
|
|
|
|
conn.commit()
|
|
|
return redirect('/ban/' + url_pas(name))
|
|
|
@@ -2946,14 +2956,17 @@ def read_view(name = None):
|
|
|
if data_none == 1:
|
|
|
menu = [['edit/' + url_pas(name), '생성'], ['topic/' + url_pas(name), topic], ['history/' + url_pas(name), '역사'], ['move/' + url_pas(name), '이동'], ['xref/' + url_pas(name), '역링크']]
|
|
|
else:
|
|
|
- menu = [['edit/' + url_pas(name), '수정'], ['topic/' + url_pas(name), topic], ['history/' + url_pas(name), '역사'], ['delete/' + url_pas(name), '삭제'], ['move/' + url_pas(name), '이동'], ['raw/' + url_pas(name), '원본'], ['xref/' + url_pas(name), '역링크']]
|
|
|
+ menu = [['edit/' + url_pas(name), '수정'], ['topic/' + url_pas(name), topic], \
|
|
|
+ ['history/' + url_pas(name), '역사'], ['delete/' + url_pas(name), '삭제'], \
|
|
|
+ ['move/' + url_pas(name), '이동'], ['raw/' + url_pas(name), '원본'], ['xref/' + url_pas(name), '역링크']]
|
|
|
|
|
|
if admin_memu == 1:
|
|
|
menu += [['acl/' + url_pas(name), 'ACL']]
|
|
|
|
|
|
if request.args.get('froms', None):
|
|
|
menu += [['w/' + url_pas(name), '넘기기']]
|
|
|
- enddata = '<ul id="redirect"><li><a href="/w/' + url_pas(request.args.get('froms', None)) + '?froms=' + url_pas(name) + '">' + request.args.get('froms', None) + '</a>에서 넘어 왔습니다.</li></ul><br>' + enddata
|
|
|
+ enddata = '<ul id="redirect"><li><a href="/w/' + url_pas(request.args.get('froms', None)) + \
|
|
|
+ '?froms=' + url_pas(name) + '">' + request.args.get('froms', None) + '</a>에서 넘어 왔습니다.</li></ul><br>' + enddata
|
|
|
|
|
|
if uppage != 0:
|
|
|
menu += [['w/' + url_pas(uppage), '상위']]
|
|
|
@@ -3014,7 +3027,8 @@ def user_topic_list(name = None):
|
|
|
|
|
|
ip = ip_pas(conn, data[3])
|
|
|
|
|
|
- div += '<tr><td><a href="/topic/' + url_pas(data[0]) + '/sub/' + url_pas(data[2]) + '#' + data[1] + '">' + title + '#' + data[1] + '</a> (' + sub + ')</td>'
|
|
|
+ div += '<tr><td><a href="/topic/' + url_pas(data[0]) + '/sub/' + url_pas(data[2]) + '#' + data[1] + '">' + \
|
|
|
+ title + '#' + data[1] + '</a> (' + sub + ')</td>'
|
|
|
div += '<td>' + ip + ban + '</td><td>' + data[4] + '</td></tr>'
|
|
|
|
|
|
div += '</tbody></table>'
|
|
|
@@ -3057,7 +3071,8 @@ def recent_changes(name = None, tool = 'record'):
|
|
|
if tool == 'history':
|
|
|
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)])
|
|
|
+ curs.execute("select id, title, date, ip, send, leng from history where title = ? order by id + 0 desc limit ?, '50'", \
|
|
|
+ [name, str(sql_num)])
|
|
|
else:
|
|
|
div += '<td style="width: 33.3%;">문서명</td><td style="width: 33.3%;">편집자</td><td style="width: 33.3%;">시간</td></tr>'
|
|
|
|
|
|
@@ -3066,7 +3081,8 @@ def recent_changes(name = None, tool = 'record'):
|
|
|
div = '<a href="/record/' + url_pas(name) + '?what=move">(이동)</a> ' + div
|
|
|
div = '<a href="/record/' + url_pas(name) + '?what=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)])
|
|
|
+ curs.execute("select id, title, date, ip, send, leng from history where ip = ? order by date desc limit ?, '50'", \
|
|
|
+ [name, str(sql_num)])
|
|
|
else:
|
|
|
if what == 'delete':
|
|
|
sql = '%(삭제)'
|
|
|
@@ -3127,7 +3143,8 @@ def recent_changes(name = None, tool = 'record'):
|
|
|
if (int(data[0]) - 1) == 0:
|
|
|
revert = ''
|
|
|
else:
|
|
|
- revert = '<a href="/diff/' + url_pas(data[1]) + '?first=' + str(int(data[0]) - 1) + '&second=' + data[0] + '">(비교)</a> <a href="/revert/' + url_pas(data[1]) + '?num=' + str(int(data[0]) - 1) + '">(되돌리기)</a>'
|
|
|
+ revert = '<a href="/diff/' + url_pas(data[1]) + '?first=' + str(int(data[0]) - 1) + '&second=' + data[0] + \
|
|
|
+ '">(비교)</a> <a href="/revert/' + url_pas(data[1]) + '?num=' + str(int(data[0]) - 1) + '">(되돌리기)</a>'
|
|
|
|
|
|
style = ['', '']
|
|
|
date = data[2]
|
|
|
@@ -3160,9 +3177,11 @@ def recent_changes(name = None, tool = 'record'):
|
|
|
style[1] = 'background: gainsboro;'
|
|
|
|
|
|
if tool == 'history':
|
|
|
- title = '<a href="/w/' + url_pas(name) + '?num=' + data[0] + '">' + data[0] + '판</a> <a href="/raw/' + url_pas(name) + '?num=' + data[0] + '">(원본)</a> '
|
|
|
+ title = '<a href="/w/' + url_pas(name) + '?num=' + data[0] + '">' + data[0] + '판</a> <a href="/raw/' + \
|
|
|
+ url_pas(name) + '?num=' + data[0] + '">(원본)</a> '
|
|
|
else:
|
|
|
- title = '<a href="/w/' + url_pas(data[1]) + '">' + html.escape(data[1]) + '</a> <a href="/history/' + url_pas(data[1]) + '">(' + data[0] + '판)</a> '
|
|
|
+ title = '<a href="/w/' + url_pas(data[1]) + '">' + html.escape(data[1]) + '</a> <a href="/history/' + \
|
|
|
+ url_pas(data[1]) + '">(' + data[0] + '판)</a> '
|
|
|
|
|
|
div += '<tr style="' + style[0] + '"><td>' + title + revert + ' ' + leng + '</td>'
|
|
|
div += '<td>' + ip + ban + hidden + '</td><td>' + date + '</td></tr><tr style="' + style[1] + '"><td colspan="3">' + send + '</td></tr>'
|
|
|
@@ -3172,7 +3191,8 @@ def recent_changes(name = None, tool = 'record'):
|
|
|
|
|
|
if name:
|
|
|
if tool == 'history':
|
|
|
- div = '<form method="post"><select name="a">' + select + '</select> <select name="b">' + select + '</select> <button type="submit">비교</button></form><hr>' + div
|
|
|
+ div = '<form method="post"><select name="a">' + select + '</select> <select name="b">' + select + \
|
|
|
+ '</select> <button type="submit">비교</button></form><hr>' + div
|
|
|
title = name
|
|
|
sub += ' (역사)'
|
|
|
menu = [['w/' + url_pas(name), '문서'], ['move_data/' + url_pas(name), '이동 기록']]
|
|
|
@@ -3272,7 +3292,8 @@ def upload():
|
|
|
if(exist):
|
|
|
curs.execute("delete from data where title = ?", ['파일:' + name])
|
|
|
|
|
|
- curs.execute("insert into data (title, data) values (?, ?)", ['파일:' + name, '[[파일:' + name + ']][br][br]{{{[[파일:' + name + ']]}}}[br][br]' + lice])
|
|
|
+ curs.execute("insert into data (title, data) values (?, ?)", ['파일:' + name, '[[파일:' + name + \
|
|
|
+ ']][br][br]{{{[[파일:' + name + ']]}}}[br][br]' + lice])
|
|
|
curs.execute("insert into acl (title, dec, dis, why) values (?, 'admin', '', '')", ['파일:' + name])
|
|
|
history_plus(conn, '파일:' + name, '[[파일:' + name + ']][br][br]{{{[[파일:' + name + ']]}}}[br][br]' + lice, get_time(), ip, '(파일 올림)', '0')
|
|
|
conn.commit()
|
|
|
@@ -3355,7 +3376,8 @@ def watch_list():
|
|
|
curs.execute("select title from scan where user = ?", [ip])
|
|
|
data = curs.fetchall()
|
|
|
for data_list in data:
|
|
|
- div += '<li><a href="/w/' + url_pas(data_list[0]) + '">' + data_list[0] + '</a> <a href="/watch_list/' + url_pas(data_list[0]) + '">(삭제)</a></li>'
|
|
|
+ div += '<li><a href="/w/' + url_pas(data_list[0]) + '">' + data_list[0] + '</a> <a href="/watch_list/' + \
|
|
|
+ url_pas(data_list[0]) + '">(삭제)</a></li>'
|
|
|
|
|
|
if data:
|
|
|
div = '<ul>' + div + '</ul><hr>'
|
|
|
@@ -3474,7 +3496,8 @@ def count_edit(name = None):
|
|
|
|
|
|
return html_minify(template('index',
|
|
|
imp = ['활동 횟수', wiki_set(conn, 1), custom(conn), other2([0, 0])],
|
|
|
- data = namumark(conn, "", "[목차(없음)]\r\n== " + that + " ==\r\n||<:> 편집 횟수 ||<:> " + str(data) + "||\r\n||<:> 토론 횟수 ||<:> " + str(t_data) + "||", 0, 0, 0),
|
|
|
+ data = namumark(conn, "", "[목차(없음)]\r\n== " + that + " ==\r\n||<:> 편집 횟수 ||<:> " + str(data) + \
|
|
|
+ "||\r\n||<:> 토론 횟수 ||<:> " + str(t_data) + "||", 0, 0, 0),
|
|
|
menu = [['user', '사용자'], ['record/' + url_pas(that), '편집 기록'], ['topic_record/' + url_pas(that), '토론 기록']]
|
|
|
))
|
|
|
|
|
|
@@ -3534,7 +3557,8 @@ def error_404(e):
|
|
|
나츠노 하지마리가 츠레테키타 오모이 나츠가 오와루토키 키에챠우모노닷타 난테 시라나쿠테 \
|
|
|
토키메이테타 아츠이 키세츠 \
|
|
|
우미베노 소라가 히캇테 토츠젠 쿠모가 나가레 오츠부노 아메 와타시노 나카노 나미다미타이 \
|
|
|
- 콘나니 타노시이 나츠가 즛토 츠즈이테쿳테 신지테타요 But now... September Rain But now... September Rain -->' + redirect('/w/' + url_pas(wiki_set(conn, 2)))
|
|
|
+ 콘나니 타노시이 나츠가 즛토 츠즈이테쿳테 신지테타요 But now... September Rain But now... September Rain -->' + \
|
|
|
+ redirect('/w/' + url_pas(wiki_set(conn, 2)))
|
|
|
|
|
|
if __name__=="__main__":
|
|
|
app.secret_key = rep_key
|