2
0

bbs_w.py 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. from .tool.func import *
  2. def bbs_w(bbs_num = '', tool = 'bbs', page = 1, name = ''):
  3. with get_db_connect() as conn:
  4. curs = conn.cursor()
  5. data = ''
  6. title_name = ''
  7. sub = ''
  8. bbs_name_dict = {}
  9. admin_auth = admin_check()
  10. if tool == 'bbs':
  11. curs.execute(db_change('select set_data from bbs_set where set_id = ? and set_name = "bbs_name"'), [bbs_num])
  12. db_data = curs.fetchall()
  13. if not db_data:
  14. return redirect('/bbs/main')
  15. bbs_name = db_data[0][0]
  16. bbs_num_str = str(bbs_num)
  17. title_name = bbs_name
  18. sub = '(' + load_lang('bbs') + ')'
  19. menu = [['bbs/main', load_lang('return')], ['bbs/edit/' + bbs_num_str, load_lang('add')], ['bbs/set/' + bbs_num_str, load_lang('bbs_set')]]
  20. elif tool == 'record':
  21. curs.execute(db_change('select set_data, set_id from bbs_set where set_name = "bbs_name"'))
  22. db_data = curs.fetchall()
  23. bbs_name_dict = { for_a[1] : for_a[0] for for_a in db_data } if db_data else {}
  24. title_name = name
  25. sub = '(' + load_lang('bbs_record') + ')'
  26. menu = [['user/' + url_pas(name), load_lang('user_tool')]]
  27. elif tool == 'comment_record':
  28. curs.execute(db_change('select set_data, set_id from bbs_set where set_name = "bbs_name"'))
  29. db_data = curs.fetchall()
  30. bbs_name_dict = { for_a[1] : for_a[0] for for_a in db_data } if db_data else {}
  31. title_name = name
  32. sub = '(' + load_lang('bbs_comment_record') + ')'
  33. menu = [['user/' + url_pas(name), load_lang('user_tool')]]
  34. else:
  35. curs.execute(db_change('select set_data, set_id from bbs_set where set_name = "bbs_name"'))
  36. db_data = curs.fetchall()
  37. if db_data:
  38. data += '<ul class="opennamu_ul">'
  39. for for_a in db_data:
  40. bbs_name_dict[for_a[1]] = for_a[0]
  41. curs.execute(db_change('select set_data from bbs_set where set_name = "bbs_type" and set_id = ?'), [for_a[1]])
  42. db_data_2 = curs.fetchall()
  43. bbs_type = db_data_2[0][0] if db_data_2 else 'comment'
  44. if bbs_type == 'thread':
  45. bbs_type = load_lang('thread_base')
  46. else:
  47. bbs_type = load_lang('comment_base')
  48. curs.execute(db_change('select set_data from bbs_data where set_id = ? and set_name = "date" order by set_code + 0 desc limit 1'), [for_a[1]])
  49. db_data_2 = curs.fetchall()
  50. last_date = ('(' + db_data_2[0][0] + ')') if db_data_2 else ''
  51. data += '<li>'
  52. data += '<a href="/bbs/w/' + for_a[1] + '">' + html.escape(for_a[0]) + '</a> (' + bbs_type + ') ' + last_date
  53. data += '</li>'
  54. data += '</ul>'
  55. data += '<hr class="main_hr">'
  56. title_name = load_lang('bbs_main')
  57. menu = [['other', load_lang('other_tool')]] + ([['bbs/make', load_lang('add')]] if admin_auth == 1 else [])
  58. if tool == 'comment_record':
  59. data += '''
  60. <table id="main_table_set">
  61. <tr id="main_table_top_tr">
  62. <td id="main_table_width">''' + load_lang('editor') + '''</td>
  63. <td id="main_table_width">''' + load_lang('time') + '''</td>
  64. <td id="main_table_width">''' + load_lang('comment') + '''</td>
  65. </tr>
  66. '''
  67. else:
  68. data += '''
  69. <table id="main_table_set">
  70. <tr id="main_table_top_tr">
  71. <td id="main_table_width">''' + load_lang('editor') + '''</td>
  72. <td id="main_table_width">''' + load_lang('time') + '''</td>
  73. <td id="main_table_width">''' + load_lang('last_comment_time') + '''</td>
  74. </tr>
  75. '''
  76. if tool == 'bbs':
  77. curs.execute(db_change('select set_code, set_id, set_name from bbs_data where set_name = "pinned" and set_id like ? order by set_data desc'), [bbs_num])
  78. db_data = curs.fetchall()
  79. db_data = list(db_data) if db_data else []
  80. curs.execute(db_change('select set_code, set_id from bbs_data where set_name = "title" and set_id like ? order by set_code + 0 desc'), [bbs_num])
  81. db_data_2 = curs.fetchall()
  82. db_data += list(db_data_2) if db_data_2 else []
  83. elif tool == 'record':
  84. try:
  85. curs.execute(db_change('select set_code, set_id, set_data from bbs_data where set_name = "date" and (set_code, set_id) in (select set_code, set_id from bbs_data where set_name = "user_id" and set_data = ?) as sub_query order by set_data desc limit 50'), [name])
  86. except:
  87. curs.execute(db_change('select set_code, set_id from bbs_data where set_name = "user_id" and set_data = ? order by set_data desc limit 50'), [name])
  88. db_data = curs.fetchall()
  89. elif tool == 'comment_record':
  90. try:
  91. curs.execute(db_change('select set_code, set_id, set_data from bbs_data where set_name = "comment_date" and (set_code, set_id) in (select set_code, set_id from bbs_data where set_name = "comment_user_id" and set_data = ?) as sub_query order by set_data desc limit 50'), [name])
  92. except:
  93. curs.execute(db_change('select set_code, set_id from bbs_data where set_name = "comment_user_id" and set_data = ? order by set_data desc limit 50'), [name])
  94. db_data = curs.fetchall()
  95. else:
  96. curs.execute(db_change('select set_code, set_id, set_data from bbs_data where set_name = "date" order by set_data desc limit 50'))
  97. db_data = curs.fetchall()
  98. for for_b in db_data:
  99. curs.execute(db_change('select set_name, set_data, set_code, set_id from bbs_data where set_code = ? and set_id = ?'), [for_b[0], for_b[1]])
  100. db_data = curs.fetchall()
  101. db_data = list(db_data) if db_data else []
  102. temp_dict = { for_a[0] : for_a[1] for for_a in db_data }
  103. bbs_name_select = ''
  104. bbs_split = for_b[1].split('-')
  105. if tool == 'comment_record':
  106. bbs_name_select = '(' + bbs_name_dict[bbs_split[0]] + ')'
  107. elif tool != 'bbs':
  108. bbs_name_select = '(' + bbs_name_dict[for_b[1]] + ')'
  109. if tool == 'bbs':
  110. notice = 1 if len(for_b) > 2 else 0
  111. else:
  112. notice = 0
  113. if tool == 'comment_record':
  114. curs.execute(db_change('select set_name, set_data, set_code, set_id from bbs_data where set_name = "title" and set_code = ? and set_id = ?'), [bbs_split[1], bbs_split[0]])
  115. db_data = curs.fetchall()
  116. db_data = list(db_data) if db_data else []
  117. for for_a in db_data:
  118. temp_dict[for_a[0]] = for_a[1]
  119. comment_link = ''
  120. if len(bbs_split) > 2:
  121. comment_link = '-'.join(bbs_split[2:])
  122. comment_link += ('-' + for_b[0] if comment_link != '' else for_b[0])
  123. data += '''
  124. <tr>
  125. <td>''' + ip_pas(temp_dict['comment_user_id']) + '''</td>
  126. <td>''' + temp_dict['comment_date'] + '''</td>
  127. <td>''' + ('#' + comment_link) + '''</td>
  128. </tr>
  129. <tr>
  130. <td colspan="3">
  131. <a href="/bbs/w/''' + bbs_split[0] + '/' + bbs_split[1] + '#' + comment_link + '">' + html.escape(temp_dict['title']) + '''</a>
  132. ''' + bbs_name_select + '''
  133. </td>
  134. </tr>
  135. '''
  136. else:
  137. curs.execute(db_change('select count(*) from bbs_data where set_name = "comment_date" and (set_id = ? or set_id like ?) order by set_code + 0 desc'), [for_b[1] + '-' + for_b[0], for_b[1] + '-' + for_b[0] + '-%'])
  138. db_data = curs.fetchall()
  139. comment_count = str(db_data[0][0]) if db_data else '0'
  140. curs.execute(db_change('select set_data from bbs_data where set_name = "comment_date" and (set_id = ? or set_id like ?) order by set_data desc limit 1'), [for_b[1] + '-' + for_b[0], for_b[1] + '-' + for_b[0] + '-%'])
  141. db_data = curs.fetchall()
  142. last_comment_date = db_data[0][0] if db_data else '0'
  143. data += '''
  144. <tr class="''' + ('opennamu_comment_color_red' if notice == 1 else '') + '''">
  145. <td>''' + ip_pas(temp_dict['user_id']) + '''</td>
  146. <td>''' + temp_dict['date'] + '''</td>
  147. <td>''' + last_comment_date + '''</td>
  148. </tr>
  149. <tr>
  150. <td colspan="3">
  151. <a href="/bbs/w/''' + for_b[1] + '/' + for_b[0] + '">' + html.escape(temp_dict['title']) + '''</a>
  152. (''' + comment_count + ''')
  153. ''' + bbs_name_select + '''
  154. </td>
  155. </tr>
  156. '''
  157. data += '</table>'
  158. return easy_minify(flask.render_template(skin_check(),
  159. imp = [title_name, wiki_set(), wiki_custom(), wiki_css([sub, 0])],
  160. data = data,
  161. menu = menu
  162. ))