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