edit_request.py 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. from .tool.func import *
  2. from .view_diff import view_diff_do
  3. async def edit_request(name = 'Test', do_type = ''):
  4. with get_db_connect() as conn:
  5. curs = conn.cursor()
  6. disabled = ""
  7. if await acl_check(name, 'document_edit') == 1:
  8. disabled = "disabled"
  9. curs.execute(db_change("select id from history where title = ? order by id + 0 desc"), [name])
  10. doc_ver = curs.fetchall()
  11. doc_ver = doc_ver[0][0] if doc_ver else '0'
  12. if doc_ver == '0':
  13. if await acl_check(name, 'document_make_acl') == 1:
  14. disabled = "disabled"
  15. curs.execute(db_change("select set_data from data_set where doc_name = ? and doc_rev = ? and set_name = 'edit_request_data'"), [name, doc_ver])
  16. db_data = curs.fetchall()
  17. if not db_data:
  18. return redirect(conn, '/edit/' + url_pas(name))
  19. edit_request_data = db_data[0][0]
  20. curs.execute(db_change("select set_data from data_set where doc_name = ? and doc_rev = ? and set_name = 'edit_request_user'"), [name, doc_ver])
  21. db_data = curs.fetchall()
  22. edit_request_user = db_data[0][0] if db_data else ''
  23. curs.execute(db_change("select set_data from data_set where doc_name = ? and doc_rev = ? and set_name = 'edit_request_date'"), [name, doc_ver])
  24. db_data = curs.fetchall()
  25. edit_request_date = db_data[0][0] if db_data else ''
  26. curs.execute(db_change("select set_data from data_set where doc_name = ? and doc_rev = ? and set_name = 'edit_request_send'"), [name, doc_ver])
  27. db_data = curs.fetchall()
  28. edit_request_send = db_data[0][0] if db_data else ''
  29. curs.execute(db_change("select set_data from data_set where doc_name = ? and doc_rev = ? and set_name = 'edit_request_leng'"), [name, doc_ver])
  30. db_data = curs.fetchall()
  31. edit_request_leng = db_data[0][0] if db_data else ''
  32. if flask.request.method == 'POST':
  33. if disabled != "":
  34. return redirect(conn, '/w/' + url_pas(name))
  35. curs.execute(db_change("select id from user_set where name = 'watchlist' and data = ?"), [name])
  36. for scan_user in curs.fetchall():
  37. await add_alarm(scan_user[0], edit_request_user, '<a href="/w/' + url_pas(name) + '">' + html.escape(name) + '</a>')
  38. if flask.request.form.get('check', '') == 'Y':
  39. curs.execute(db_change("delete from data where title = ?"), [name])
  40. curs.execute(db_change("insert into data (title, data) values (?, ?)"), [name, edit_request_data])
  41. history_plus(conn,
  42. name,
  43. edit_request_data,
  44. edit_request_date,
  45. edit_request_user,
  46. edit_request_send,
  47. edit_request_leng,
  48. mode = 'edit_request'
  49. )
  50. await render_set(conn,
  51. doc_name = name,
  52. doc_data = edit_request_data,
  53. data_type = 'backlink'
  54. )
  55. else:
  56. history_plus(conn,
  57. name,
  58. edit_request_data,
  59. edit_request_date,
  60. edit_request_user,
  61. edit_request_send,
  62. '0',
  63. mode = 'edit_request'
  64. )
  65. if do_type == 'from':
  66. return redirect(conn, '/edit/' + url_pas(name))
  67. else:
  68. return redirect(conn, '/w/' + url_pas(name))
  69. else:
  70. curs.execute(db_change("select data from data where title = ?"), [name])
  71. db_data = curs.fetchall()
  72. old_data = db_data[0][0] if db_data else ''
  73. result = view_diff_do(old_data, edit_request_data, 'r' + doc_ver, await get_lang('edit_request'))
  74. return await render_template(
  75. name,
  76. '''
  77. <div id="opennamu_get_user_info">''' + html.escape(edit_request_user) + '''</div>
  78. <hr class="main_hr">
  79. ''' + edit_request_date + '''
  80. <hr class="main_hr">
  81. <input class="__ON_INPUT__" readonly value="''' + html.escape(edit_request_send) + '''">
  82. <hr class="main_hr">
  83. ''' + result + '''
  84. <hr class="main_hr">
  85. <form method="post">
  86. <button class="__ON_BUTTON__" ''' + disabled + ''' id="opennamu_save_button" type="submit" name="check" value="Y">''' + await get_lang('approve') + '''</button>
  87. <button class="__ON_BUTTON__" ''' + disabled + ''' id="opennamu_preview_button" type="submit" name="check" value="">''' + await get_lang('decline') + '''</button>
  88. <hr class="main_hr">
  89. <textarea readonly class="opennamu_textarea_500 __ON_TEXTAREA__">''' + html.escape(edit_request_data) + '''</textarea>
  90. </form>
  91. ''',
  92. '(' + await get_lang('edit_request_check') + ')',
  93. 0
  94. )