main_search_deep.py 2.9 KB

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