Source code for atramhasis.data.db

# -*- coding: utf-8 -*-
"""
Module that sets up the datamanagers and the database connections.
"""
from atramhasis.data.datamanagers import SkosManager, ConceptSchemeManager, LanguagesManager, AuditManager
from .models import Base
from skosprovider_sqlalchemy.models import Base as SkosBase

from sqlalchemy import engine_from_config
from sqlalchemy.orm import sessionmaker
from zope.sqlalchemy import register


[docs]def data_managers(request): """ Generate a datamanager with a database session and register a cleanup handler. :param pyramid.request.Request request: The request this db session will be tied to. :returns: A dictionary containing different :class:`datamanagers <atramhasis.data.datamanagers.DataManager>`. """ session = request.db skos_manager = SkosManager(session) conceptscheme_manager = ConceptSchemeManager(session) languages_manager = LanguagesManager(session) audit_manager = AuditManager(session) return {'skos_manager': skos_manager, 'conceptscheme_manager': conceptscheme_manager, 'languages_manager': languages_manager, 'audit_manager': audit_manager}
def db(request): session = request.registry.dbmaker() def cleanup(_): session.close() request.add_finished_callback(cleanup) return session
[docs]def includeme(config): """ Set up SQLAlchemy. :param pyramid.config.Configurator config: Pyramid configuration. """ # Setting up SQLAlchemy engine = engine_from_config(config.get_settings(), 'sqlalchemy.') Base.metadata.bind = engine SkosBase.metadata.bind = engine config.registry.dbmaker = sessionmaker(bind=engine) register(config.registry.dbmaker) config.add_request_method(data_managers, reify=True) config.add_request_method(db, reify=True)