2
0

topic_list.py 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. from .tool.func import *
  2. from .api_topic import api_topic
  3. def topic_list(name = 'Test'):
  4. with get_db_connect() as conn:
  5. curs = conn.cursor()
  6. div = ''
  7. tool = flask.request.args.get('tool', '')
  8. plus = ''
  9. menu = [['topic/' + url_pas(name), load_lang('return')]]
  10. if tool == 'close':
  11. curs.execute(db_change("select code, sub from rd where title = ? and stop = 'O' order by sub asc"), [name])
  12. sub = load_lang('closed_discussion')
  13. elif tool == 'agree':
  14. curs.execute(db_change("select code, sub from rd where title = ? and agree = 'O' order by sub asc"), [name])
  15. sub = load_lang('agreed_discussion')
  16. else:
  17. sub = load_lang('discussion_list')
  18. menu = [['w/' + url_pas(name), load_lang('document')]]
  19. plus = '''
  20. <a href="/topic/''' + url_pas(name) + '?tool=close">(' + load_lang('closed_discussion') + ''')</a>
  21. <a href="/topic/''' + url_pas(name) + '?tool=agree">(' + load_lang('agreed_discussion') + ''')</a>
  22. <hr class="main_hr">
  23. <a href="/thread/0/''' + url_pas(name) + '''">(''' + load_lang('make_new_topic') + ''')</a>
  24. '''
  25. curs.execute(db_change("select code, sub from rd where title = ? and stop != 'O' order by date desc"), [name])
  26. for data in curs.fetchall():
  27. curs.execute(db_change("select id from topic where code = ? order by id + 0 desc limit 1"), [data[0]])
  28. db_data = curs.fetchall()
  29. last_thread = db_data[0][0] if db_data else '1'
  30. div += '<h2><a href="/thread/' + data[0] + '">' + data[0] + '. ' + html.escape(data[1]) + '</a></h2>'
  31. first_data = json.loads(api_topic(data[0], 'normal', 1, 'render').data)
  32. div += first_data['data'] if 'data' in first_data else ''
  33. if last_thread != '1':
  34. last_data = json.loads(api_topic(data[0], 'normal', int(last_thread), 'render').data)
  35. div += last_data['data'] if 'data' in last_data else ''
  36. if div == '':
  37. plus = re.sub(r'^<br>', '', plus)
  38. return easy_minify(flask.render_template(skin_check(),
  39. imp = [name, wiki_set(), wiki_custom(), wiki_css(['(' + sub + ')', 0])],
  40. data = div + plus,
  41. menu = menu
  42. ))