| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- from .tool.func import *
- def topic_2(conn, topic_num):
- curs = conn.cursor()
- admin = admin_check(3)
- topic_num = str(topic_num)
- if flask.request.method == 'POST':
- name = flask.request.form.get('topic', 'test')
- sub = flask.request.form.get('title', 'test')
- else:
- curs.execute(db_change("select title, sub from rd where code = ?"), [topic_num])
- name = curs.fetchall()
- if name:
- sub = name[0][1]
- name = name[0][0]
- else:
- return redirect('/')
- ban = acl_check(name, 'topic', topic_num)
- if flask.request.method == 'POST':
- if flask.request.form.get('content', 'Test') == '':
- return redirect('/thread/' + topic_num)
- if captcha_post(flask.request.form.get('g-recaptcha-response', flask.request.form.get('g-recaptcha', ''))) == 1:
- return re_error('/error/13')
- else:
- captcha_post('', 0)
- ip = ip_check()
- today = get_time()
- if ban == 1:
- return re_error('/ban')
- curs.execute(db_change("select id from topic where code = ? order by id + 0 desc limit 1"), [topic_num])
- old_num = curs.fetchall()
- if old_num:
- num = int(old_num[0][0]) + 1
- else:
- num = 1
- num = str(num)
- match = re.search(r'^user:([^/]+)', name)
- if match:
- y_check = 0
- if ip_or_user(match.group(1)) == 1:
- curs.execute(db_change("select ip from history where ip = ? limit 1"), [match.group(1)])
- u_data = curs.fetchall()
- if u_data:
- y_check = 1
- else:
- curs.execute(db_change("select ip from topic where ip = ? limit 1"), [match.group(1)])
- u_data = curs.fetchall()
- if u_data:
- y_check = 1
- else:
- curs.execute(db_change("select id from user where id = ?"), [match.group(1)])
- u_data = curs.fetchall()
- if u_data:
- y_check = 1
- if y_check == 1:
- curs.execute(db_change('insert into alarm (name, data, date) values (?, ?, ?)'), [
- match.group(1),
- ip + ' | <a href="/thread/' + topic_num + '#' + num + '">' + name + ' | ' + sub + ' | #' + num + '</a>',
- today
- ])
- cate_re = re.compile(r'\[\[((?:분류|category):(?:(?:(?!\]\]).)*))\]\]', re.I)
- data = cate_re.sub('[br]', flask.request.form.get('content', 'Test').replace('\r', ''))
- for rd_data in re.findall(r"(?: |\n|^)(#(?:[0-9]+))(?: |\n|$)", data):
- curs.execute(db_change("select ip from topic where code = ? and id = ?"), [topic_num, rd_data])
- ip_data = curs.fetchall()
- if ip_data and ip_or_user(ip_data[0][0]) == 0:
- curs.execute(db_change('insert into alarm (name, data, date) values (?, ?, ?)'), [
- ip_data[0][0],
- ip + ' | <a href="/thread/' + topic_num + '#' + num + '">' + name + ' | ' + sub + ' | #' + num + '</a>',
- today
- ])
- for rd_data in re.findall(r"(?: |\n|^)@((?:[^ ]+))(?: |\n|$)", data):
- curs.execute(db_change("select ip from history where ip = ? limit 1"), [rd_data])
- ip_data = curs.fetchall()
- if not ip_data:
- curs.execute(db_change("select ip from topic where ip = ? limit 1"), [rd_data])
- ip_data = curs.fetchall()
- if ip_data and ip_or_user(ip_data[0][0]) == 0:
- curs.execute(db_change('insert into alarm (name, data, date) values (?, ?, ?)'), [
- ip_data[0][0],
- ip + ' | <a href="/thread/' + topic_num + '#' + num + '">' + name + ' | ' + sub + ' | #' + num + '</a>',
- today
- ])
- data = re.sub(r"( |\n|^)(#(?:[0-9]+))( |\n|$)", '\g<1><topic_a>\g<2></topic_a>\g<3>', data)
- data = re.sub(r"( |\n|^)(@(?:[^ ]+))( |\n|$)", '\g<1><topic_call>\g<2></topic_call>\g<3>', data)
- rd_plus(topic_num, today, name, sub)
- curs.execute(db_change("insert into topic (id, data, date, ip, code) values (?, ?, ?, ?, ?)"), [
- num,
- data,
- today,
- ip,
- topic_num
- ])
- conn.commit()
- return redirect('/thread/' + topic_num + '#' + num)
- else:
- data = ''
- if ban == 1:
- display = 'display: none;'
- else:
- display = ''
- data += '''
- <div id="top_topic"></div>
- <div id="main_topic"></div>
- <div id="plus_topic"></div>
- <script>topic_top_load("''' + topic_num + '''");</script>
- <a href="/thread/''' + topic_num + '/tool">(' + load_lang('topic_tool') + ''')</a>
- <hr class=\"main_hr\">
- <form style="''' + display + '''" method="post">
- <textarea id="content" class="topic_content" placeholder="''' + load_lang('content') + '''" name="content"></textarea>
- <hr class=\"main_hr\">
- ''' + captcha_get() + (ip_warring() if display == '' else '') + '''
- <input style="display: none;" name="topic" value="''' + name + '''">
- <input style="display: none;" name="title" value="''' + sub + '''">
- <button id="save" type="submit">''' + load_lang('send') + '''</button>
- <button id="preview" type="button" onclick="load_preview(\'\')">''' + load_lang('preview') + '''</button>
- </form>
- <hr class=\"main_hr\">
- <div id="see_preview"></div>
- '''
- return easy_minify(flask.render_template(skin_check(),
- imp = [name, wiki_set(), custom(), other2(['(' + load_lang('discussion') + ')', 0])],
- data = '''
- <h2 id="topic_top_title">''' + sub + '''</h2>
- ''' + data,
- menu = [['topic/' + url_pas(name), load_lang('list')]]
- ))
|