main_search_deep.py 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. from .tool.func import *
  2. from .go_api_search import api_search
  3. def main_search_deep(db_set, name = 'Test', search_type = 'title', num = 1):
  4. with get_db_connect() as conn:
  5. curs = conn.cursor()
  6. if name == '':
  7. return redirect(conn)
  8. sql_num = (num * 50 - 50) if num * 50 > 0 else 0
  9. if flask.request.method == 'POST':
  10. if search_type == 'title':
  11. return redirect(conn, '/search_page/1/' + url_pas(flask.request.form.get('search', 'test')))
  12. else:
  13. return redirect(conn, '/search_data_page/1/' + url_pas(flask.request.form.get('search', 'test')))
  14. else:
  15. div = '''
  16. <form method="post">
  17. <input class="opennamu_width_200" name="search" value="''' + html.escape(name) + '''">
  18. <button type="submit">''' + get_lang(conn, 'search') + '''</button>
  19. </form>
  20. <hr class="main_hr">
  21. '''
  22. if search_type == 'title':
  23. div += '<a href="/search_data_page/1/' + url_pas(name) + '">(' + get_lang(conn, 'search_document_data') + ')</a>'
  24. else:
  25. div += '<a href="/search_page/1/' + url_pas(name) + '">(' + get_lang(conn, 'search_document_name') + ')</a>'
  26. name_new = ''
  27. if re.search(r'^분류:', name):
  28. name_new = re.sub(r"^분류:", 'category:', name)
  29. elif re.search(r"^사용자:", name):
  30. name_new = re.sub(r"^사용자:", 'user:', name)
  31. elif re.search(r"^파일:", name):
  32. name_new = re.sub(r"^파일:", 'file:', name)
  33. if name_new != '':
  34. div += ' <a href="/search_page/1/' + url_pas(name_new) + '">(' + name_new + ')</a>'
  35. curs.execute(db_change("select title from data where title = ? collate nocase"), [name])
  36. link_id = '' if curs.fetchall() else 'class="opennamu_not_exist_link"'
  37. div += '''
  38. <ul class="opennamu_ul">
  39. <li>
  40. <a ''' + link_id + ' href="/w/' + url_pas(name) + '">' + html.escape(name) + '''</a>
  41. </li>
  42. </ul>
  43. <ul class="opennamu_ul">
  44. '''
  45. all_list = json.loads(api_search(db_set, name, search_type, num).data)
  46. for data in all_list:
  47. div += '<li><a href="/w/' + url_pas(data) + '">' + data + '</a></li>'
  48. div += '</ul>'
  49. if search_type == 'title':
  50. div += get_next_page_bottom(conn, '/search_page/{}/' + url_pas(name), num, all_list)
  51. else:
  52. div += get_next_page_bottom(conn, '/search_data_page/{}/' + url_pas(name), num, all_list)
  53. return easy_minify(conn, flask.render_template(skin_check(conn),
  54. imp = [name, wiki_set(conn), wiki_custom(conn), wiki_css(['(' + get_lang(conn, 'search') + ')', 0])],
  55. data = div,
  56. menu = 0
  57. ))