view_raw.py 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. from .tool.func import *
  2. from .go_api_bbs_w import api_bbs_w
  3. from .go_api_bbs_w_comment_one import api_bbs_w_comment_one
  4. async def view_raw(name = '', topic_num = '', num = '', doc_acl = 0, bbs_num = '', post_num = '', comment_num = ''):
  5. with get_db_connect() as conn:
  6. curs = conn.cursor()
  7. bbs_num_str = str(bbs_num)
  8. post_num_str = str(post_num)
  9. if bbs_num != '' and post_num != '':
  10. if await acl_check(bbs_num_str, 'bbs_view') == 1:
  11. return await re_error(conn, 0)
  12. name = ''
  13. elif topic_num != '':
  14. topic_num = str(topic_num)
  15. if await acl_check('', 'topic_view', topic_num) == 1:
  16. return await re_error(conn, 0)
  17. else:
  18. if await acl_check(name, 'render') == 1:
  19. return await re_error(conn, 0)
  20. if num:
  21. num = str(num)
  22. v_name = name
  23. p_data = ''
  24. sub = '(' + get_lang(conn, 'raw') + ')'
  25. if bbs_num != '' and post_num != '':
  26. sub += ' (' + get_lang(conn, 'bbs') + ')'
  27. menu = [['bbs/tool/' + url_pas(bbs_num_str) + '/' + url_pas(post_num_str), get_lang(conn, 'return')]]
  28. if comment_num != '':
  29. sub += ' (' + comment_num + ')'
  30. elif topic_num == '' and num != '':
  31. curs.execute(db_change("select title from history where title = ? and id = ? and hide = 'O'"), [name, num])
  32. if curs.fetchall() and await acl_check(tool = 'hidel_auth') == 1:
  33. return await re_error(conn, 3)
  34. curs.execute(db_change("select data from history where title = ? and id = ?"), [name, num])
  35. sub += ' (r' + num + ')'
  36. menu = [['history_tool/' + url_pas(num) + '/' + url_pas(name), get_lang(conn, 'return')]]
  37. elif topic_num != '':
  38. if await acl_check(tool = 'hidel_auth') == 1:
  39. curs.execute(db_change("select data from topic where id = ? and code = ? and block = ''"), [num, topic_num])
  40. else:
  41. curs.execute(db_change("select data from topic where id = ? and code = ?"), [num, topic_num])
  42. v_name = get_lang(conn, 'discussion_raw')
  43. sub = ' (#' + num + ')'
  44. menu = [
  45. ['thread/' + topic_num + '#' + num, get_lang(conn, 'discussion')],
  46. ['thread/' + topic_num + '/comment/' + num + '/tool', get_lang(conn, 'return')]
  47. ]
  48. else:
  49. curs.execute(db_change("select data from data where title = ?"), [name])
  50. menu = [['w/' + url_pas(name), get_lang(conn, 'return')]]
  51. if bbs_num != '' and post_num != '':
  52. if comment_num != '':
  53. data = await api_bbs_w_comment_one(bbs_num_str + '-' + post_num_str + '-' + comment_num)
  54. sub_data = await api_bbs_w(bbs_num_str + '-' + post_num_str)
  55. else:
  56. data = await api_bbs_w(bbs_num_str + '-' + post_num_str)
  57. if 'comment' in data:
  58. v_name = sub_data["title"]
  59. data = [[data["comment"]]]
  60. elif 'data' in data:
  61. v_name = data["title"]
  62. data = [[data["data"]]]
  63. else:
  64. data = None
  65. else:
  66. data = curs.fetchall()
  67. if data:
  68. doc_preview = ''
  69. if bbs_num == '' and post_num == '' and topic_num == '':
  70. doc_preview = '''
  71. <textarea id="opennamu_editor_doc_name" style="display: none;">''' + html.escape(name) + '''</textarea>
  72. <button id="opennamu_preview_button" type="button" onclick="opennamu_do_editor_preview('raw');">''' + get_lang(conn, 'preview') + '''</button>
  73. <hr class="main_hr">
  74. '''
  75. p_data += '''
  76. <div id="opennamu_preview_area">
  77. ''' + doc_preview + '''
  78. <textarea readonly id="opennamu_edit_textarea" class="opennamu_textarea_500">''' + html.escape(data[0][0]) + '''</textarea>
  79. </div>
  80. '''
  81. if doc_acl == 1:
  82. p_data = '' + \
  83. get_lang(conn, 'authority_error') + \
  84. '<hr class="main_hr">' + \
  85. p_data
  86. ''
  87. sub = ' (' + get_lang(conn, 'edit') + ')'
  88. return easy_minify(conn, flask.render_template(skin_check(conn),
  89. imp = [v_name, await wiki_set(), await wiki_custom(conn), wiki_css([sub, 0])],
  90. data = p_data,
  91. menu = menu
  92. ))
  93. else:
  94. return await re_error(conn, 3)