diff --git a/src/rouse/web/controllers.py b/src/rouse/web/controllers.py new file mode 100644 index 0000000..90dc30e --- /dev/null +++ b/src/rouse/web/controllers.py @@ -0,0 +1,26 @@ +from __future__ import unicode_literals +from . import model +import milla.controllers +import sqlalchemy + + +# pylint: disable=too-few-public-methods + +class SQLAlchemyController(milla.controllers.Controller): + + def __before__(self, request): + super(SQLAlchemyController, self).__before__(request) + request.db = model.Session( + bind=sqlalchemy.engine_from_config(request.config, 'sqlalchemy.'), + ) + + def __after__(self, request): + super(SQLAlchemyController, self).__after__(request) + if hasattr(request, 'db') and request.db: + request.db.close() + del request.db + + +class BaseController(milla.controllers.HTTPVerbController, + SQLAlchemyController): + pass