base.py 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. from flask import Flask, url_for
  2. from flask_mail import Mail
  3. from flask_login import LoginManager
  4. from typing import Optional
  5. from configure import conf
  6. from core.user import AnonymousUser
  7. class App:
  8. def __init__(self, import_name: str):
  9. self._app = Flask(import_name)
  10. self._app.config["SECRET_KEY"] = conf['secret-key']
  11. self.login_manager = LoginManager()
  12. self.login_manager.init_app(self._app)
  13. self.login_manager.anonymous_user = AnonymousUser # 设置未登录的匿名对象
  14. self._app.config["MAIL_SERVER"] = conf['email_server']
  15. self._app.config["MAIL_PORT"] = conf['email_port']
  16. self._app.config["MAIL_USE_TLS"] = conf['email_tls']
  17. self._app.config["MAIL_USE_SSL"] = conf['email_ssl']
  18. self._app.config["MAIL_USERNAME"] = conf['email_name']
  19. self._app.config["MAIL_PASSWORD"] = conf['email_passwd']
  20. self.mail = Mail(self._app)
  21. def get_app(self) -> Flask:
  22. return self._app
  23. def run(self):
  24. self.run()
  25. @staticmethod
  26. def get_max_page(count: int, count_page: int):
  27. return (count // count_page) + (0 if count % count_page == 0 else 1)
  28. @staticmethod
  29. def get_page(url, page: int, count: int):
  30. if count <= 9:
  31. page_list = [[f"{i + 1}", url_for(url, page=i + 1)] for i in range(count)]
  32. elif page <= 5:
  33. """
  34. [1][2][3][4][5][6][...][count - 1][count]
  35. """
  36. page_list = [[f"{i + 1}", url_for(url, page=i + 1)] for i in range(6)]
  37. page_list += [None,
  38. [f"{count - 1}", url_for(url, page=count - 1)],
  39. [f"{count}", url_for(url, page=count)]]
  40. elif page >= count - 5:
  41. """
  42. [1][2][...][count - 5][count - 4][count - 3][count - 2][count - 1][count]
  43. """
  44. page_list: Optional[list] = [["1", url_for(url, page=1)],
  45. ["2", url_for(url, page=2)],
  46. None]
  47. page_list += [[f"{count - 5 + i}", url_for(url, page=count - 5 + i), False] for i in range(6)]
  48. else:
  49. """
  50. [1][2][...][page - 2][page - 1][page][page + 1][page + 2][...][count - 1][count]
  51. """
  52. page_list: Optional[list] = [["1", url_for(url, page=1)],
  53. ["2", url_for(url, page=2)],
  54. None]
  55. page_list += [[f"{page - 2 + i}", url_for(url, page=page - 2 + i)] for i in range(5)]
  56. page_list += [None,
  57. [f"{count - 1}", url_for(url, page=count - 1)],
  58. [f"{count}", url_for(url, page=count)]]
  59. return page_list