__init__.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. # -*- coding: utf-8 -*-
  2. from flask import Flask, g
  3. from flask.ext.babel import Babel
  4. from flask.ext.sqlalchemy import SQLAlchemy, event
  5. from flask.ext.mail import Mail
  6. from werkzeug.contrib.cache import NullCache
  7. from .sessions import MySessionInterface
  8. babel = Babel()
  9. db = SQLAlchemy()
  10. sess = MySessionInterface(db)
  11. cache = NullCache()
  12. mail = Mail()
  13. def create_app(config={}):
  14. global babel, db, mail, sess
  15. app = Flask(__name__)
  16. app.config.from_object('ffdnispdb.default_settings')
  17. app.config.from_envvar('FFDNISPDB_SETTINGS', True)
  18. if isinstance(config, dict):
  19. app.config.update(config)
  20. else:
  21. app.config.from_object(config)
  22. babel.init_app(app)
  23. db.init_app(app)
  24. with app.app_context():
  25. @event.listens_for(db.engine, "connect")
  26. def connect(sqlite, connection_rec):
  27. sqlite.enable_load_extension(True)
  28. sqlite.execute('select load_extension("libspatialite.so")')
  29. sqlite.enable_load_extension(False)
  30. app.session_interface = sess
  31. mail.init_app(app)
  32. from .views import ispdb
  33. app.register_blueprint(ispdb)
  34. return app
  35. from . import models