bbs_w.py 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. from .tool.func import *
  2. async 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 = await acl_check(tool = 'owner_auth')
  10. admin_auth = 1 if admin_auth == 0 else 0
  11. if tool == 'record':
  12. curs.execute(db_change('select set_data, set_id from bbs_set where set_name = "bbs_name"'))
  13. db_data = curs.fetchall()
  14. bbs_name_dict = { for_a[1] : for_a[0] for for_a in db_data } if db_data else {}
  15. title_name = name
  16. sub = '(' + await get_lang('bbs_record') + ')'
  17. menu = [['user/' + url_pas(name), await get_lang('user_tool')]]
  18. elif tool == 'comment_record':
  19. curs.execute(db_change('select set_data, set_id from bbs_set where set_name = "bbs_name"'))
  20. db_data = curs.fetchall()
  21. bbs_name_dict = { for_a[1] : for_a[0] for for_a in db_data } if db_data else {}
  22. title_name = name
  23. sub = '(' + await get_lang('bbs_comment_record') + ')'
  24. menu = [['user/' + url_pas(name), await get_lang('user_tool')]]
  25. if tool == 'comment_record':
  26. data += '''
  27. <table id="main_table_set">
  28. <tr id="main_table_top_tr">
  29. <td id="main_table_width">''' + await get_lang('editor') + '''</td>
  30. <td id="main_table_width">''' + await get_lang('time') + '''</td>
  31. <td id="main_table_width">''' + await get_lang('comment') + '''</td>
  32. </tr>
  33. '''
  34. else:
  35. data += '''
  36. <table id="main_table_set">
  37. <tr id="main_table_top_tr">
  38. <td id="main_table_width">''' + await get_lang('editor') + '''</td>
  39. <td id="main_table_width">''' + await get_lang('time') + '''</td>
  40. <td id="main_table_width">''' + await get_lang('last_comment_time') + '''</td>
  41. </tr>
  42. '''
  43. if tool == 'record':
  44. try:
  45. 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])
  46. except:
  47. 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])
  48. db_data = curs.fetchall()
  49. elif tool == 'comment_record':
  50. try:
  51. 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])
  52. except:
  53. 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])
  54. db_data = curs.fetchall()
  55. for for_b in db_data:
  56. 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]])
  57. db_data = curs.fetchall()
  58. db_data = list(db_data) if db_data else []
  59. temp_dict = { for_a[0] : for_a[1] for for_a in db_data }
  60. bbs_name_select = ''
  61. bbs_split = for_b[1].split('-')
  62. if tool == 'comment_record':
  63. bbs_name_select = '(' + bbs_name_dict[bbs_split[0]] + ')'
  64. elif tool != 'bbs':
  65. bbs_name_select = '(' + bbs_name_dict[for_b[1]] + ')'
  66. if tool == 'bbs':
  67. notice = 1 if len(for_b) > 2 else 0
  68. else:
  69. notice = 0
  70. if tool == 'comment_record':
  71. 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]])
  72. db_data = curs.fetchall()
  73. db_data = list(db_data) if db_data else []
  74. for for_a in db_data:
  75. temp_dict[for_a[0]] = for_a[1]
  76. comment_link = ''
  77. if len(bbs_split) > 2:
  78. comment_link = '-'.join(bbs_split[2:])
  79. comment_link += ('-' + for_b[0] if comment_link != '' else for_b[0])
  80. data += '''
  81. <tr>
  82. <td>''' + await ip_pas(temp_dict['comment_user_id']) + '''</td>
  83. <td>''' + temp_dict['comment_date'] + '''</td>
  84. <td>''' + ('#' + comment_link) + '''</td>
  85. </tr>
  86. <tr>
  87. <td colspan="3">
  88. <a href="/bbs/w/''' + bbs_split[0] + '/' + bbs_split[1] + '#' + comment_link + '">' + html.escape(temp_dict['title']) + '''</a>
  89. ''' + bbs_name_select + '''
  90. </td>
  91. </tr>
  92. '''
  93. else:
  94. 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] + '-%'])
  95. db_data = curs.fetchall()
  96. comment_count = str(db_data[0][0]) if db_data else '0'
  97. 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] + '-%'])
  98. db_data = curs.fetchall()
  99. last_comment_date = db_data[0][0] if db_data else '0'
  100. data += '''
  101. <tr class="''' + ('opennamu_comment_color_red' if notice == 1 else '') + '''">
  102. <td>''' + await ip_pas(temp_dict['user_id']) + '''</td>
  103. <td>''' + temp_dict['date'] + '''</td>
  104. <td>''' + last_comment_date + '''</td>
  105. </tr>
  106. <tr>
  107. <td colspan="3">
  108. <a href="/bbs/w/''' + for_b[1] + '/' + for_b[0] + '">' + html.escape(temp_dict['title']) + '''</a>
  109. (''' + comment_count + ''')
  110. ''' + bbs_name_select + '''
  111. </td>
  112. </tr>
  113. '''
  114. data += '</table>'
  115. return await render_template(
  116. title_name,
  117. data,
  118. sub,
  119. menu
  120. )