__init__.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #!/usr/bin/env python
  2. # -*- coding=UTF-8 -*-
  3. # **************************************************************************
  4. # Copyright © 2016 jianglin
  5. # File Name: __init__.py
  6. # Author: jianglin
  7. # Email: xiyang0807@gmail.com
  8. # Created: 2016-05-20 12:35:52 (CST)
  9. # Last Update:星期五 2016-7-29 12:33:47 (CST)
  10. # By:jianglin
  11. # Description:
  12. # **************************************************************************
  13. from flask import Flask, g, send_from_directory, request
  14. from maple.extensions import (register_login, register_redis, register_mail,
  15. register_cache)
  16. from maple.extensions import (register_form, register_babel,
  17. register_principal, register_jinja2,
  18. register_avatar, register_maple)
  19. from maple.extensions import register_rbac
  20. from flask_login import current_user
  21. from flask_sqlalchemy import SQLAlchemy
  22. from .logs import register_logging
  23. import os
  24. def create_app():
  25. templates = os.path.abspath(os.path.join(
  26. os.path.dirname(__file__), os.pardir, 'templates'))
  27. static = os.path.abspath(os.path.join(
  28. os.path.dirname(__file__), os.pardir, 'static'))
  29. app = Flask(__name__, template_folder=templates, static_folder=static)
  30. app.config.from_object('config.config')
  31. app.url_map._rules.clear()
  32. app.url_map._rules_by_endpoint.clear()
  33. app.url_map.default_subdomain = 'forums'
  34. app.add_url_rule(app.static_url_path + '/<path:filename>',
  35. endpoint='static',
  36. view_func=app.send_static_file,
  37. subdomain='forums')
  38. return app
  39. def register(app):
  40. register_avatar(app)
  41. register_babel(app)
  42. register_form(app)
  43. register_principal(app)
  44. register_jinja2(app)
  45. register_maple(app)
  46. register_routes(app)
  47. register_logging(app)
  48. def register_routes(app):
  49. from .urls import register_urls
  50. register_urls(app)
  51. app = create_app()
  52. db = SQLAlchemy(app)
  53. mail = register_mail(app)
  54. login_manager = register_login(app)
  55. redis_data = register_redis(app)
  56. cache = register_cache(app)
  57. rbac = register_rbac(app)
  58. register(app)
  59. @app.before_request
  60. def before_request():
  61. from maple.forums.forms import SortForm, SearchForm
  62. g.user = current_user
  63. g.sort_form = SortForm()
  64. g.search_form = SearchForm()
  65. from maple.main.records import mark_online
  66. mark_online(request.remote_addr)
  67. @app.route('/robots.txt')
  68. @app.route('/favicon.ico')
  69. def static_from_root():
  70. return send_from_directory(app.static_folder, request.path[1:])