2
0

edit_revert.py 3.8 KB

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