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()