list_history.py 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. from .tool.func import *
  2. from .go_api_list_history import api_list_history
  3. from .recent_change import recent_change_send_render
  4. async def option_lang(lang_in, lang):
  5. if lang_in == 'user':
  6. lang_in = lang.get('user_document')
  7. elif lang_in in lang:
  8. lang_in = lang[lang_in]
  9. return lang_in
  10. async def list_history(num = 1, set_type = 'normal', doc_name = 'Test'):
  11. with get_db_connect() as conn:
  12. if flask.request.method == 'POST':
  13. a = flask.request.form.get('a')
  14. b = flask.request.form.get('b')
  15. return redirect(conn, f'/diff/{b}/{a}/{doc_name}')
  16. else:
  17. data = await api_list_history(num, set_type, doc_name)
  18. lang = data["language"]
  19. auth = data["auth"]
  20. data = data["data"]
  21. data_html = ''
  22. option_list = ['normal', 'edit', 'move', 'delete', 'revert', 'r1', 'setting']
  23. for option in option_list:
  24. label = await option_lang(option, lang)
  25. data_html += f'<a href="/history_page/1/{option}/{doc_name}">({label})</a> '
  26. date_heading = ''
  27. select = ''
  28. for for_a in range(len(data)):
  29. if data[for_a][6] != "" and data[for_a][1] == "":
  30. if date_heading != '----':
  31. data_html += '<h2>----</h2>'
  32. date_heading = '----'
  33. data_html += await opennamu_make_list('----', '', '', '')
  34. continue
  35. left = ''
  36. rev = ''
  37. if data[for_a][6] != "":
  38. rev += f'<span style="color: red;">r{data[for_a][0]}</span>'
  39. else:
  40. rev += f'r{data[for_a][0]}'
  41. select += f'<option value="{data[for_a][0]}">{data[for_a][0]}</option>'
  42. if int(data[for_a][0]) > 1:
  43. before_rev = str(int(data[for_a][0]) - 1)
  44. rev = f'<a href="/diff/{before_rev}/{data[for_a][0]}/{doc_name}">{rev}</a>'
  45. left += rev
  46. right = f'<span id="opennamu_list_history_{for_a}_over">'
  47. right += f'<a id="opennamu_list_history_{for_a}" href="javascript:void(0);">'
  48. right += '<span class="opennamu_svg opennamu_svg_tool">&nbsp;</span></a>'
  49. right += f'<span class="opennamu_popup_footnote" id="opennamu_list_history_{for_a}_load" style="display: none;"></span>'
  50. right += '</span> | '
  51. diff_size = data[for_a][5]
  52. if diff_size == '0':
  53. right += f'<span style="color: gray;">{diff_size}</span>'
  54. elif '+' in diff_size:
  55. right += f'<span style="color: green;">{diff_size}</span>'
  56. else:
  57. right += f'<span style="color: red;">{diff_size}</span>'
  58. right += ' | '
  59. right += f'{data[for_a][7]} | '
  60. edit_type = data[for_a][8] if data[for_a][8] != '' else 'edit'
  61. right += f'{await option_lang(edit_type, lang)} | '
  62. time_split = data[for_a][2].split(' ')
  63. if date_heading != time_split[0]:
  64. data_html += f'<h2>{time_split[0]}</h2>'
  65. date_heading = time_split[0]
  66. if len(time_split) > 1:
  67. right += time_split[1]
  68. right += f'<span style="display: none;" id="opennamu_history_tool_{for_a}">'
  69. right += f'<a href="/raw_rev/{data[for_a][0]}/{doc_name}">{lang["raw"]}</a>'
  70. right += f' | <a href="/revert/{data[for_a][0]}/{doc_name}">{lang["revert"]} (r{data[for_a][0]})</a>'
  71. if int(data[for_a][0]) > 1:
  72. before_rev = str(int(data[for_a][0]) - 1)
  73. right += f' | <a href="/revert/{before_rev}/{doc_name}">{lang["revert"]} (r{before_rev})</a>'
  74. right += f' | <a href="/diff/{before_rev}/{data[for_a][0]}/{doc_name}">{lang["compare"]}</a>'
  75. right += f' | <a href="/history/{doc_name}">{lang["history"]}</a>'
  76. if auth.get("owner") or auth.get("hidel"):
  77. right += f' | <a href="/history_hidden/{data[for_a][0]}/{doc_name}">{lang["hide"]}</a>'
  78. if auth.get("owner"):
  79. right += f' | <a href="/history_delete/{data[for_a][0]}/{doc_name}">{lang["history_delete"]}</a>'
  80. right += f' | <a href="/history_send/{data[for_a][0]}/{doc_name}">{lang["send_edit"]}</a>'
  81. right += '</span>'
  82. bottom = ''
  83. if data[for_a][4] != "":
  84. bottom = recent_change_send_render(html.escape(data[for_a][4]))
  85. data_html += await opennamu_make_list(left, right, bottom)
  86. data_html += f'''
  87. <script>
  88. document.getElementById('opennamu_list_history_{for_a}').addEventListener("click", function() {{
  89. opennamu_do_footnote_popover('opennamu_list_history_{for_a}', '', 'opennamu_history_tool_{for_a}', 'open');
  90. }});
  91. document.addEventListener("click", function() {{
  92. opennamu_do_footnote_popover('opennamu_list_history_{for_a}', '', 'opennamu_history_tool_{for_a}', 'close');
  93. }});
  94. </script>
  95. '''
  96. data_html+= get_next_page_bottom(conn, f'/recent_change/{{}}/{set_type}', num, data)
  97. data_html = (
  98. '<form method="post">'
  99. f'<select name="a">{select}</select> '
  100. f'<select name="b">{select}</select> '
  101. f'<button type="submit">{lang["compare"]}</button>'
  102. '</form>'
  103. '<hr class="main_hr"></hr>' + data_html
  104. )
  105. return easy_minify(conn, flask.render_template(skin_check(conn),
  106. imp = [doc_name, wiki_set(conn), await wiki_custom(conn), wiki_css(['(' + get_lang(conn, 'history') + ')', 0])],
  107. data = data_html,
  108. menu = [['other', get_lang(conn, 'return')], ['history_add/' + url_pas(doc_name), get_lang(conn, 'history_add')], ['history_reset/' + url_pas(doc_name), get_lang(conn, 'history_reset')]]
  109. ))