edit_request.py 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. from .tool.func import *
  2. from .view_diff import view_diff_do
  3. def edit_request(name = 'Test', do_type = ''):
  4. with get_db_connect() as conn:
  5. curs = conn.cursor()
  6. disable = ""
  7. if acl_check(name, 'document_edit') == 1:
  8. disabled = "disable"
  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. 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])
  13. db_data = curs.fetchall()
  14. if not db_data:
  15. return redirect('/edit/' + url_pas(name))
  16. edit_request_data = db_data[0][0]
  17. 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])
  18. db_data = curs.fetchall()
  19. edit_request_user = db_data[0][0] if db_data else ''
  20. 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])
  21. db_data = curs.fetchall()
  22. edit_request_date = 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_send'"), [name, doc_ver])
  24. db_data = curs.fetchall()
  25. edit_request_send = 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_leng'"), [name, doc_ver])
  27. db_data = curs.fetchall()
  28. edit_request_leng = db_data[0][0] if db_data else ''
  29. if flask.request.method == 'POST':
  30. if acl_check(name, 'document_edit') == 1:
  31. return redirect('/w/' + url_pas(name))
  32. curs.execute(db_change("select user from scan where title = ? and type = ''"), [name])
  33. for scan_user in curs.fetchall():
  34. add_alarm(scan_user[0], edit_request_user, '<a href="/w/' + url_pas(name) + '">' + html.escape(name) + '</a>')
  35. curs.execute(db_change("delete from data where title = ?"), [name])
  36. curs.execute(db_change("insert into data (title, data) values (?, ?)"), [name, edit_request_data])
  37. history_plus(
  38. name,
  39. edit_request_data,
  40. edit_request_date,
  41. edit_request_user,
  42. edit_request_send,
  43. edit_request_leng
  44. )
  45. render_set(
  46. doc_name = name,
  47. doc_data = edit_request_data,
  48. data_type = 'backlink'
  49. )
  50. if do_type == 'from':
  51. return redirect('/edit/' + url_pas(name))
  52. else:
  53. return redirect('/w/' + url_pas(name))
  54. else:
  55. curs.execute(db_change("select data from data where title = ?"), [name])
  56. db_data = curs.fetchall()
  57. old_data = db_data[0][0] if db_data else ''
  58. result = view_diff_do(old_data, edit_request_data, 'r' + doc_ver, load_lang('edit_req'))
  59. return easy_minify(flask.render_template(skin_check(),
  60. imp = [name, wiki_set(), wiki_custom(), wiki_css(['(' + load_lang('edit_req_check') + ')', 0])],
  61. data = '''
  62. <div id="opennamu_get_user_info">''' + html.escape(edit_request_user) + '''</div>
  63. <hr class="main_hr">
  64. ''' + edit_request_date + '''
  65. <hr class="main_hr">
  66. <input readonly value="''' + html.escape(edit_request_send) + '''">
  67. <hr class="main_hr">
  68. ''' + result + '''
  69. <hr class="main_hr">
  70. <form method="post">
  71. <button id="opennamu_save_button" type="submit" name="check" value="Y">''' + load_lang('approve') + '''</button>
  72. <button id="opennamu_preview_button" type="button" name="check" value="">''' + load_lang('decline') + '''</button>
  73. <hr class="main_hr">
  74. <textarea readonly class="opennamu_textarea_500">''' + html.escape(edit_request_data) + '''</textarea>
  75. </form>
  76. ''',
  77. menu = 0
  78. ))