edit_request.py 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  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 data from data where title = ?"), [name])
  33. db_data = curs.fetchall()
  34. o_data = db_data[0][0] if db_data else ''
  35. curs.execute(db_change("select user from scan where title = ? and type = ''"), [name])
  36. for scan_user in curs.fetchall():
  37. 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(
  42. name,
  43. edit_request_data,
  44. edit_request_date,
  45. edit_request_user,
  46. edit_request_send,
  47. edit_request_leng,
  48. t_check = 'approve',
  49. mode = 'edit_request'
  50. )
  51. render_set(
  52. doc_name = name,
  53. doc_data = edit_request_data,
  54. data_type = 'backlink'
  55. )
  56. else:
  57. history_plus(
  58. name,
  59. o_data,
  60. edit_request_date,
  61. edit_request_user,
  62. edit_request_send,
  63. '0',
  64. t_check = 'decline',
  65. mode = 'edit_request'
  66. )
  67. if do_type == 'from':
  68. return redirect('/edit/' + url_pas(name))
  69. else:
  70. return redirect('/w/' + url_pas(name))
  71. else:
  72. curs.execute(db_change("select data from data where title = ?"), [name])
  73. db_data = curs.fetchall()
  74. old_data = db_data[0][0] if db_data else ''
  75. result = view_diff_do(old_data, edit_request_data, 'r' + doc_ver, load_lang('edit_req'))
  76. return easy_minify(flask.render_template(skin_check(),
  77. imp = [name, wiki_set(), wiki_custom(), wiki_css(['(' + load_lang('edit_req_check') + ')', 0])],
  78. data = '''
  79. <div id="opennamu_get_user_info">''' + html.escape(edit_request_user) + '''</div>
  80. <hr class="main_hr">
  81. ''' + edit_request_date + '''
  82. <hr class="main_hr">
  83. <input readonly value="''' + html.escape(edit_request_send) + '''">
  84. <hr class="main_hr">
  85. ''' + result + '''
  86. <hr class="main_hr">
  87. <form method="post">
  88. <button id="opennamu_save_button" type="submit" name="check" value="Y">''' + load_lang('approve') + '''</button>
  89. <button id="opennamu_preview_button" type="submit" name="check" value="">''' + load_lang('decline') + '''</button>
  90. <hr class="main_hr">
  91. <textarea readonly class="opennamu_textarea_500">''' + html.escape(edit_request_data) + '''</textarea>
  92. </form>
  93. ''',
  94. menu = 0
  95. ))