Example #1
0
def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application.
    """
    settings['available_locales'] = settings.get(
        'available_locales', '').split()
    static_prefix = settings.get('static_prefix', 'static')

    config = Configurator(settings=settings)

    config.include('pyramid_jinja2')
    config.add_jinja2_search_path('oscad:templates')

    config.include('oscad_i18n')
    config.set_default_i18n_domain('oscad')

    config.add_directive('set_toplevel_links', set_toplevel_links)
    config.add_directive('add_toplevel_link', add_toplevel_link)
    config.add_request_method(scss_path)
    config.add_request_method(oscad_settings, property=True)
    config.add_request_method(oslic_chapter_url)

    config.add_renderer('scss', renderer_factory)

    config.set_locale_negotiator(locale_negotiator)
    config.set_session_factory(UnencryptedCookieSessionFactoryConfig(''))
    config.add_subscriber('oscad.subscribers.add_renderer_globals',
                          'pyramid.events.BeforeRender')
    config.add_subscriber('oscad.subscribers.jsonify',
                          'pyramid.events.NewRequest')
    config.add_translation_dirs('oscad:locale')

    config.add_route('scss', static_prefix + '/css/{css_path:.*}.css')
    config.add_static_view(static_prefix, 'static', cache_max_age=3600)

    config.add_static_view(
        settings.get('bootstrap_location', static_prefix + '/bootstrap'),
        'bootstrap')
    config.add_static_view(
        settings.get('jquery_location', static_prefix + '/jquery'),
        'jquery')

    config.registry.settings.oscad_settings = oscad_default_settings

    config.add_route('index', '')
    config.add_route('request', 'request')
    config.add_route('matrix_request', 'matrix')
    config.add_route('result', 'result')
    config.add_route('imprint', 'imprint')
    config.add_route('about', 'about')
    config.add_route('help', 'help')
    config.add_route('components', 'components')
    config.add_route('change_language', 'language/{lang}')
    config.add_route('translation_template', 'translations/oscad.pot')
    config.add_route('translation_file', 'translations/{lang}')

    if asbool(settings.get('allow_export')):
        config.add_view('export', 'views:export')
        config.add_route('export', 'export')

    load_themes(config, settings)

    config.scan()
    config.commit()

    jenv = config.get_jinja2_environment()
    jenv.filters['htmlize'] = htmlize
    jenv.undefined = jinja2.StrictUndefined

    return config.make_wsgi_app()