forked from sayoun/pyvac
/
__init__.py
46 lines (34 loc) · 1.59 KB
/
__init__.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# -*- coding: utf-8 -*-
from pyramid.config import Configurator
from pyramid.authorization import ACLAuthorizationPolicy as ACLPolicy
from pyramid.session import UnencryptedCookieSessionFactoryConfig
from pyramid.interfaces import IBeforeRender
from pyramid.events import NewRequest
from .security import groupfinder, RootFactory
from .config import includeme # used by pyramid
from .models import create_engine
from .helpers.i18n import locale_negotiator
from .helpers.authentication import RouteSwithchAuthPolicy
__version__ = '1.7'
def main(global_config, **settings):
settings = dict(settings)
# Scoping sessions for Pyramid ensure session are commit/rollback
# after the template has been rendered
create_engine(settings, scoped=True)
session_factory = UnencryptedCookieSessionFactoryConfig(
settings['pyvac.cookie_key']
)
authn_policy = RouteSwithchAuthPolicy(secret=settings['pyvac.cookie_key'],
callback=groupfinder)
authz_policy = ACLPolicy()
config = Configurator(settings=settings,
root_factory=RootFactory,
locale_negotiator=locale_negotiator,
authentication_policy=authn_policy,
authorization_policy=authz_policy,
session_factory=session_factory)
config.add_subscriber('pyvac.helpers.i18n.add_renderer_globals',
IBeforeRender)
config.add_subscriber('pyvac.helpers.i18n.add_localizer', NewRequest)
config.end()
return config.make_wsgi_app()