def main(global_config, **settings): """ This function returns a Pyramid WSGI application.""" # velruse requires session support session_factory = UnencryptedCookieSessionFactoryConfig( settings['session.secret'], ) # determine which providers we want to configure providers = settings.get('login_providers', '') providers = filter(None, [p.strip() for line in providers.splitlines() for p in line.split(', ')]) settings['login_providers'] = providers if not any(providers): log.warn('no login providers configured, double check your ini ' 'file and add a few') config = Configurator(settings=settings) config.set_session_factory(session_factory) config.add_static_view('static', 'static', cache_max_age=3600) if 'psa' in providers: config.include('velruse.providers.psa') config.register_psa_provider_class(facebook.FacebookOAuth2) config.add_psa_config_from_settings(key='psa.providers') if 'facebook' in providers: config.include('velruse.providers.facebook') config.add_facebook_login_from_settings(prefix='facebook.') if 'github' in providers: config.include('velruse.providers.github') config.add_github_login_from_settings(prefix='github.') if 'twitter' in providers: config.include('velruse.providers.twitter') config.add_twitter_login_from_settings(prefix='twitter.') if 'live' in providers: config.include('velruse.providers.live') config.add_live_login_from_settings(prefix='live.') if 'bitbucket' in providers: config.include('velruse.providers.bitbucket') config.add_bitbucket_login_from_settings(prefix='bitbucket.') if 'google' in providers: config.include('velruse.providers.google') config.add_google_login( realm=settings['google.realm'], consumer_key=settings['google.consumer_key'], consumer_secret=settings['google.consumer_secret'], ) if 'yahoo' in providers: config.include('velruse.providers.yahoo') config.add_yahoo_login( realm=settings['yahoo.realm'], consumer_key=settings['yahoo.consumer_key'], consumer_secret=settings['yahoo.consumer_secret'], ) config.scan() return config.make_wsgi_app()