db = ModuleType('db') key = value = mod = None for mod in sqlalchemy, orm: for key, value in mod.__dict__.iteritems(): if key in mod.__all__: setattr(db, key, value) del key, mod, value db.__doc__ = __doc__ db.mapper = mapper db.get_engine = lambda: local.application.database_engine for name in 'delete', 'save', 'flush', 'execute', 'begin', \ 'commit', 'rollback', 'clear', 'refresh', 'expire': setattr(db, name, getattr(session, name)) db.session = session db.DatabaseManager = DatabaseManager #: support for SQLAlchemy's 0.4.2 Text type, in older versions it's #: just Text. This patch will go away once SQLAlchemy 0.5 is out #: or something like that. if not hasattr(db, 'Text'): db.Text = db.String #: called at the end of a request cleanup_session = session.remove #: metadata for the core tables and the core table definitions metadata = db.MetaData() from glashammer.utils.json import JsonRestService