コード例 #1
0
ファイル: __init__.py プロジェクト: tutor-web/tutor-web
def main(global_config, **settings):
    """
    Generate WSGI application
    """
    config = Configurator(settings=settings, route_prefix='/api/')

    initialize_dbsession(settings, prefix='sqlalchemy.')
    config.set_authorization_policy(ACLAuthorizationPolicy())

    machine_id = read_machine_id()
    config.set_authentication_policy(AuthTktAuthenticationPolicy(machine_id + '-auth'))
    config.set_session_factory(SignedCookieSessionFactory(machine_id + '-session'))
    config.include('pyramid_jinja2')
    config.include('pyramid_mailer')
    config.include('pyramid_mako')

    config.include('pluserable')
    for template in ['login', 'register', 'forgot_password', 'reset_password', 'edit_profile']:
        config.override_asset(
            to_override='pluserable:templates/%s.mako' % template,
            override_with='tutorweb_quizdb:templates/auth/%s.mako' % template
        )
    config.setup_pluserable(os.path.join(global_config['here'], 'kerno.ini'))

    smileycoin.configure(settings, prefix='smileycoin.')

    config.include('tutorweb_quizdb.coin')
    config.include('tutorweb_quizdb.exceptions')
    config.include('tutorweb_quizdb.logerror')
    config.include('tutorweb_quizdb.material')
    config.include('tutorweb_quizdb.subscriptions')
    config.include('tutorweb_quizdb.stage')
    config.include('tutorweb_quizdb.student')
    config.include('tutorweb_quizdb.rst')

    json_renderer = config.registry.getUtility(IRendererFactory, name="json")
    json_renderer.add_adapter(datetime.datetime, lambda obj, request: obj.isoformat())
    json_renderer.add_adapter(Ltree, lambda obj, request: str(obj))

    config.add_view(index, route_name='index', renderer='json')
    config.add_route('index', '')

    return config.make_wsgi_app()