__init__.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. """
  2. App config and initialization.
  3. """
  4. import orjson
  5. from pyramid.config import Configurator
  6. from pyramid.renderers import JSON
  7. from .models import get_engine, get_session_factory
  8. def dbsession(request):
  9. sess = request.registry.dbsession_factory()
  10. def cleanup(request):
  11. sess.close()
  12. request.add_finished_callback(cleanup)
  13. return sess
  14. def main(global_config, **settings):
  15. """This function returns a Pyramid WSGI application."""
  16. json_renderer = JSON(serializer=orjson.dumps)
  17. with Configurator(settings=settings) as config:
  18. config.include("pyramid_chameleon")
  19. config.add_renderer("json", json_renderer)
  20. config.add_route("test_1", "/json")
  21. config.add_route("test_2", "/db")
  22. config.add_route("test_3", "/queries")
  23. config.add_route("test_4", "/fortunes")
  24. config.add_route("test_5", "/updates")
  25. config.add_route("test_6", "/plaintext")
  26. config.set_default_csrf_options(require_csrf=False)
  27. engine = get_engine(settings)
  28. config.registry.dbsession_factory = get_session_factory(engine)
  29. config.add_request_method(dbsession, reify=True)
  30. config.scan()
  31. return config.make_wsgi_app()