|
1
|
|
|
""" |
|
2
|
|
|
Module that sets up the datamanagers and the database connections. |
|
3
|
|
|
""" |
|
4
|
|
|
from skosprovider_sqlalchemy.models import Base as SkosBase |
|
5
|
|
|
from sqlalchemy import engine_from_config |
|
6
|
|
|
from sqlalchemy.orm import sessionmaker |
|
7
|
|
|
from zope.sqlalchemy import register |
|
8
|
|
|
|
|
9
|
|
|
from atramhasis.data.datamanagers import AuditManager |
|
10
|
|
|
from atramhasis.data.datamanagers import ConceptSchemeManager |
|
11
|
|
|
from atramhasis.data.datamanagers import LanguagesManager |
|
12
|
|
|
from atramhasis.data.datamanagers import SkosManager |
|
13
|
|
|
from .models import Base |
|
14
|
|
|
|
|
15
|
|
|
|
|
16
|
|
|
def data_managers(request): |
|
17
|
|
|
""" |
|
18
|
|
|
Generate a datamanager with a database session and register a cleanup handler. |
|
19
|
|
|
|
|
20
|
|
|
:param pyramid.request.Request request: The request this db session will |
|
21
|
|
|
be tied to. |
|
22
|
|
|
:returns: A dictionary containing different |
|
23
|
|
|
:class:`datamanagers <atramhasis.data.datamanagers.DataManager>`. |
|
24
|
|
|
""" |
|
25
|
|
|
session = request.db |
|
26
|
|
|
skos_manager = SkosManager(session) |
|
27
|
|
|
conceptscheme_manager = ConceptSchemeManager(session) |
|
28
|
|
|
languages_manager = LanguagesManager(session) |
|
29
|
|
|
audit_manager = AuditManager(session) |
|
30
|
|
|
|
|
31
|
|
|
return {'skos_manager': skos_manager, 'conceptscheme_manager': conceptscheme_manager, |
|
32
|
|
|
'languages_manager': languages_manager, 'audit_manager': audit_manager} |
|
33
|
|
|
|
|
34
|
|
|
|
|
35
|
|
|
def db(request): |
|
36
|
|
|
session = request.registry.dbmaker() |
|
37
|
|
|
|
|
38
|
|
|
def cleanup(_): |
|
39
|
|
|
session.close() |
|
40
|
|
|
request.add_finished_callback(cleanup) |
|
41
|
|
|
return session |
|
42
|
|
|
|
|
43
|
|
|
|
|
44
|
|
|
def includeme(config): |
|
45
|
|
|
""" |
|
46
|
|
|
Set up SQLAlchemy. |
|
47
|
|
|
|
|
48
|
|
|
:param pyramid.config.Configurator config: Pyramid configuration. |
|
49
|
|
|
""" |
|
50
|
|
|
|
|
51
|
|
|
# Setting up SQLAlchemy |
|
52
|
|
|
engine = engine_from_config(config.get_settings(), 'sqlalchemy.') |
|
53
|
|
|
Base.metadata.bind = engine |
|
54
|
|
|
SkosBase.metadata.bind = engine |
|
55
|
|
|
config.registry.dbmaker = sessionmaker(bind=engine) |
|
56
|
|
|
register(config.registry.dbmaker) |
|
57
|
|
|
config.add_request_method(data_managers, reify=True) |
|
58
|
|
|
config.add_request_method(db, reify=True) |
|
59
|
|
|
|