api_topic_sub.py 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. from .tool.func import *
  2. def api_topic_sub_2(conn, topic_num):
  3. curs = conn.cursor()
  4. topic_num = str(topic_num)
  5. get_acl = acl_check('', 'render')
  6. if flask.request.args.get('num', None):
  7. curs.execute(db_change("select id, data, date, ip, block, top from topic where code = ? and id + 0 = ? + 0 order by id + 0 asc"), [
  8. topic_num,
  9. flask.request.args.get('num', '')
  10. ])
  11. elif flask.request.args.get('top', None):
  12. curs.execute(db_change("select id, data, date, ip, block, top from topic where code = ? and top = 'O' order by id + 0 asc"), [topic_num])
  13. else:
  14. curs.execute(db_change("select id, data, date, ip, block, top from topic where code = ? order by id + 0 asc"), [topic_num])
  15. data = curs.fetchall()
  16. if data:
  17. json_data = {}
  18. admin = admin_check(3)
  19. if flask.request.args.get('render', None):
  20. all_ip = ip_pas([i[3] for i in data])
  21. for i in data:
  22. ip = all_ip[i[3]]
  23. if i[4] != 'O':
  24. t_data_f = i[1]
  25. b_color = 'toron_color'
  26. else:
  27. t_data_f = ''
  28. b_color = 'toron_color_not'
  29. ip += ' <a href="/admin_log?search=blind%20(code%20' + topic_num + '#' + i[0] + '">(B)</a>'
  30. if admin == 1:
  31. ip += ' <a href="/thread/' + topic_num + '/raw/' + i[0] + '">(R)</a>'
  32. if i[0] == '1':
  33. s_user = i[3]
  34. else:
  35. if flask.request.args.get('num', None):
  36. curs.execute(db_change("select ip from topic where code = ? order by id + 0 asc limit 1"), [topic_num])
  37. g_data = curs.fetchall()
  38. if g_data:
  39. s_user = g_data[0][0]
  40. else:
  41. s_user = ''
  42. if flask.request.args.get('top', None):
  43. t_color = 'toron_color_red'
  44. elif i[3] == s_user and i[5] != '1':
  45. t_color = 'toron_color_green'
  46. elif i[5] == '1':
  47. t_color = 'toron_color_blue'
  48. else:
  49. t_color = 'toron_color'
  50. if admin == 1 or b_color != 'toron_color_not':
  51. ip += ' <a href="/thread/' + topic_num + '/admin/' + i[0] + '">(' + load_lang('discussion_tool') + ')</a>'
  52. if t_data_f == '':
  53. t_data_f = '[br]'
  54. t_data_f = render_set(data = t_data_f, num = 2, include = 'topic_' + i[0], acl = get_acl)
  55. t_plus_data = t_data_f[1]
  56. t_data_f = t_data_f[0]
  57. t_data_f = re.sub(
  58. r'&lt;topic_a&gt;((?:(?!&lt;\/topic_a&gt;).)+)&lt;\/topic_a&gt;',
  59. '<a href="\g<1>">\g<1></a>',
  60. t_data_f
  61. )
  62. t_data_f = re.sub(
  63. r'&lt;topic_call&gt;@((?:(?!&lt;\/topic_call&gt;).)+)&lt;\/topic_call&gt;',
  64. '<a href="/w/user:\g<1>">@\g<1></a>',
  65. t_data_f
  66. )
  67. all_data = '' + \
  68. '<table id="toron">' + \
  69. '<tbody>' + \
  70. '<tr>' + \
  71. '<td id="' + t_color + '">' + \
  72. '<a href="javascript:void(0);" id="' + i[0] + '">#' + i[0] + '</a> ' + ip + ' <span style="float: right;">' + i[2] + '</span>' + \
  73. '</td>' + \
  74. '</tr>' + \
  75. '<tr>' + \
  76. '<td id="' + b_color + '">' + \
  77. '<div id="topic_scroll">' + t_data_f + '</div>' + \
  78. '</td>' + \
  79. '</tr>' + \
  80. '</tbody>' + \
  81. '</table>' + \
  82. '<hr class="main_hr">' + \
  83. ''
  84. json_data[i[0]] = {
  85. "data" : all_data,
  86. "plus_data" : t_plus_data
  87. }
  88. else:
  89. for i in data:
  90. if i[4] != 'O' or (i[4] == 'O' and admin == 1):
  91. t_data_f = i[1]
  92. else:
  93. t_data_f = '(B)'
  94. json_data[i[0]] = {
  95. "data" : t_data_f,
  96. "date" : i[2],
  97. "ip" : ip_pas(i[3], 1),
  98. "block" : i[4],
  99. }
  100. return flask.jsonify(json_data)
  101. else:
  102. return flask.jsonify({})