2
0

edit_revert.py 3.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. from .tool.func import *
  2. def edit_revert(name, num):
  3. with get_db_connect() as conn:
  4. curs = conn.cursor()
  5. curs.execute(db_change("select title from history where title = ? and id = ? and hide = 'O'"), [name, str(num)])
  6. if curs.fetchall() and admin_check(6) != 1:
  7. return re_error('/error/3')
  8. if acl_check(name, 'document_edit') == 1:
  9. return re_error('/ban')
  10. curs.execute(db_change("select data from history where title = ? and id = ?"), [name, str(num)])
  11. data = curs.fetchall()
  12. if not data:
  13. return redirect('/w/' + url_pas(name))
  14. if flask.request.method == 'POST':
  15. if captcha_post(flask.request.form.get('g-recaptcha-response', flask.request.form.get('g-recaptcha', ''))) == 1:
  16. return re_error('/error/13')
  17. else:
  18. captcha_post('', 0)
  19. if do_edit_slow_check() == 1:
  20. return re_error('/error/24')
  21. send = flask.request.form.get('send', '')
  22. agree = flask.request.form.get('copyright_agreement', '')
  23. if do_edit_send_check(send) == 1:
  24. return re_error('/error/37')
  25. if do_edit_text_bottom_check_box_check(agree) == 1:
  26. return re_error('/error/29')
  27. if do_edit_filter(data[0][0]) == 1:
  28. return re_error('/error/21')
  29. curs.execute(db_change("select data from other where name = 'document_content_max_length'"))
  30. db_data = curs.fetchall()
  31. if db_data and db_data[0][0] != '':
  32. if int(number_check(db_data[0][0])) < len(data[0][0]):
  33. return re_error('/error/44')
  34. curs.execute(db_change("select data from data where title = ?"), [name])
  35. data_old = curs.fetchall()
  36. if data_old:
  37. leng = leng_check(len(data_old[0][0]), len(data[0][0]))
  38. curs.execute(db_change("update data set data = ? where title = ?"), [data[0][0], name])
  39. else:
  40. leng = '+' + str(len(data[0][0]))
  41. curs.execute(db_change("insert into data (title, data) values (?, ?)"), [name, data[0][0]])
  42. history_plus(
  43. name,
  44. data[0][0],
  45. get_time(),
  46. ip_check(),
  47. flask.request.form.get('send', ''),
  48. leng,
  49. t_check = 'r' + str(num),
  50. mode = 'revert'
  51. )
  52. render_set(
  53. doc_name = name,
  54. doc_data = data[0][0],
  55. data_type = 'backlink'
  56. )
  57. conn.commit()
  58. return redirect('/w/' + url_pas(name))
  59. else:
  60. if data:
  61. preview = '<hr class="main_hr"><pre>' + html.escape(data[0][0]) + '</pre>'
  62. else:
  63. preview = ''
  64. return easy_minify(flask.render_template(skin_check(),
  65. imp = [name, wiki_set(), wiki_custom(), wiki_css(['(r' + str(num) + ') (' + load_lang('revert') + ')', 0])],
  66. data = '''
  67. <form method="post">
  68. <input placeholder="''' + load_lang('why') + '''" name="send" type="text">
  69. <hr class="main_hr">
  70. ''' + captcha_get() + ip_warning() + get_edit_text_bottom_check_box() + get_edit_text_bottom() + '''
  71. <button type="submit">''' + load_lang('revert') + '''</button>
  72. </form>
  73. ''' + preview,
  74. menu = [['history/' + url_pas(name), load_lang('history')], ['recent_changes', load_lang('recent_change')]]
  75. ))