1 | from pyramid.config import Configurator |
---|
2 | from pyramid_zodbconn import get_connection |
---|
3 | from pyramid.authentication import AuthTktAuthenticationPolicy |
---|
4 | from pyramid.authorization import ACLAuthorizationPolicy |
---|
5 | from pyramid.session import SignedCookieSessionFactory |
---|
6 | |
---|
7 | from .models import appmaker |
---|
8 | from .security import groupfinder |
---|
9 | |
---|
10 | |
---|
11 | def root_factory(request): # pragma: no cover |
---|
12 | conn = get_connection(request) |
---|
13 | return appmaker(conn.root()) |
---|
14 | |
---|
15 | |
---|
16 | def main(global_config, **settings): # pragma: no cover |
---|
17 | """ |
---|
18 | This function returns a Pyramid WSGI application. |
---|
19 | """ |
---|
20 | session_factory = SignedCookieSessionFactory( |
---|
21 | secret=settings['session.secret'], |
---|
22 | cookie_name='ow-session') |
---|
23 | |
---|
24 | authn_policy = AuthTktAuthenticationPolicy( |
---|
25 | secret=settings['auth.secret'], |
---|
26 | callback=groupfinder, |
---|
27 | hashalg='sha512') |
---|
28 | |
---|
29 | authz_policy = ACLAuthorizationPolicy() |
---|
30 | |
---|
31 | config = Configurator(root_factory=root_factory, settings=settings) |
---|
32 | config.set_authentication_policy(authn_policy) |
---|
33 | config.set_authorization_policy(authz_policy) |
---|
34 | config.set_session_factory(session_factory) |
---|
35 | config.include('pyramid_chameleon') |
---|
36 | config.include('pyramid_tm') |
---|
37 | config.include('pyramid_retry') |
---|
38 | config.include('pyramid_zodbconn') |
---|
39 | config.include('pyramid_mailer') |
---|
40 | config.add_static_view('static', 'static', cache_max_age=3600) |
---|
41 | config.add_translation_dirs( |
---|
42 | 'ow:locale', |
---|
43 | 'formencode:i18n') |
---|
44 | config.scan() |
---|
45 | return config.make_wsgi_app() |
---|