bbs_w.py 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. from .tool.func import *
  2. def bbs_w(bbs_num = '', tool = 'bbs'):
  3. with get_db_connect() as conn:
  4. curs = conn.cursor()
  5. data = ''
  6. title_name = ''
  7. bbs_name_dict = {}
  8. admin_auth = admin_check()
  9. if tool == 'bbs':
  10. curs.execute(db_change('select set_data from bbs_set where set_id = ? and set_name = "bbs_name"'), [bbs_num])
  11. db_data = curs.fetchall()
  12. if not db_data:
  13. return redirect('/bbs/main')
  14. bbs_name = db_data[0][0]
  15. bbs_num_str = str(bbs_num)
  16. title_name = bbs_name
  17. menu = [['bbs/main', load_lang('return')], ['bbs/edit/' + bbs_num_str, load_lang('add')], ['bbs/set/' + bbs_num_str, load_lang('bbs_set')]]
  18. else:
  19. curs.execute(db_change('select set_data, set_id from bbs_set where set_name = "bbs_name"'))
  20. db_data = curs.fetchall()
  21. if db_data:
  22. data += '<ul class="opennamu_ul">'
  23. for for_a in db_data:
  24. bbs_name_dict[for_a[1]] = for_a[0]
  25. curs.execute(db_change('select set_data from bbs_set where set_name = "bbs_type" and set_id = ?'), [for_a[1]])
  26. db_data_2 = curs.fetchall()
  27. bbs_type = db_data_2[0][0] if db_data_2 else 'comment'
  28. if bbs_type == 'thread':
  29. bbs_type = load_lang('thread_base')
  30. else:
  31. bbs_type = load_lang('comment_base')
  32. 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]])
  33. db_data_2 = curs.fetchall()
  34. last_date = ('(' + db_data_2[0][0] + ')') if db_data_2 else ''
  35. data += '<li>'
  36. data += '<a href="/bbs/w/' + for_a[1] + '">' + html.escape(for_a[0]) + '</a> (' + bbs_type + ') ' + last_date
  37. data += '</li>'
  38. data += '</ul>'
  39. data += '<hr class="main_hr">'
  40. title_name = load_lang('bbs_main')
  41. menu = [['other', load_lang('return')]] + ([['bbs/make', load_lang('add')]] if admin_auth == 1 else [])
  42. data += '''
  43. <table id="main_table_set">
  44. <tr id="main_table_top_tr">
  45. <td id="main_table_width">''' + load_lang('editor') + '''</td>
  46. <td id="main_table_width">''' + load_lang('time') + '''</td>
  47. <td id="main_table_width">''' + load_lang('last_comment_time') + '''</td>
  48. </tr>
  49. '''
  50. if tool == 'bbs':
  51. 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])
  52. db_data = curs.fetchall()
  53. db_data = list(db_data) if db_data else []
  54. 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])
  55. db_data_2 = curs.fetchall()
  56. db_data += list(db_data_2) if db_data_2 else []
  57. else:
  58. 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'))
  59. db_data = curs.fetchall()
  60. for for_b in db_data:
  61. 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]])
  62. db_data = curs.fetchall()
  63. db_data = list(db_data) if db_data else []
  64. temp_dict = { for_a[0] : for_a[1] for for_a in db_data }
  65. 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] + '-%'])
  66. db_data = curs.fetchall()
  67. comment_count = str(db_data[0][0]) if db_data else '0'
  68. 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] + '-%'])
  69. db_data = curs.fetchall()
  70. last_comment_date = db_data[0][0] if db_data else '0'
  71. bbs_name_select = ''
  72. if tool != 'bbs':
  73. bbs_name_select = '(' + bbs_name_dict[for_b[1]] + ')'
  74. notice = 1 if len(for_b) > 2 else 0
  75. data += '''
  76. <tr class="''' + ('opennamu_comment_color_red' if notice == 1 else '') + '''">
  77. <td>''' + ip_pas(temp_dict['user_id']) + '''</td>
  78. <td>''' + temp_dict['date'] + '''</td>
  79. <td>''' + last_comment_date + '''</td>
  80. </tr>
  81. <tr>
  82. <td colspan="3">
  83. <a href="/bbs/w/''' + for_b[1] + '/' + for_b[0] + '">' + html.escape(temp_dict['title']) + '''</a>
  84. (''' + comment_count + ''')
  85. ''' + bbs_name_select + '''
  86. </td>
  87. </tr>
  88. '''
  89. data += '</table>'
  90. return easy_minify(flask.render_template(skin_check(),
  91. imp = [title_name, wiki_set(), wiki_custom(), wiki_css(['(' + load_lang('bbs') + ')', 0])],
  92. data = data,
  93. menu = menu
  94. ))