コード例 #1
0
def main(_, **settings):
    from .request import CustomRequest

    env = Env()

    config = Configurator(settings=resolve_env_vars(settings))
    config.set_request_factory(CustomRequest)

    # routes
    # static files at /*
    filenames = [
        f for f in ('robots.txt', 'humans.txt')
        if path.isfile((STATIC_DIR + '/{}').format(f))
    ]
    if filenames:
        cache_max_age = 3600 if env.is_production else 0
        config.add_asset_views(STATIC_DIR,
                               filenames=filenames,
                               http_cache=cache_max_age)

    config.scan()

    config.include('.services')
    config.include('.route')

    app = config.make_wsgi_app()
    # from paste.translogger import TransLogger
    # app = TransLogger(app, setup_console_handler=False)
    return app
コード例 #2
0
def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application.
    """
    settings['twconsumer_key'] = os.environ.get('TWCONSUMER_KEY')
    settings['twconsumer_secret'] = os.environ.get('TWCONSUMER_SECRET')

    database_url = os.environ.get('DATABASE_URL')
    engine = create_engine(database_url)
    DBSession.configure(bind=engine)

    session_secret = os.environ.get('SESSION_SECRET')
    session_factory = UnencryptedCookieSessionFactoryConfig(session_secret)

    auth_secret = os.environ.get('AUTH_SECRET')
    authn_policy = AuthTktAuthenticationPolicy(auth_secret)
    authz_policy = ACLAuthorizationPolicy()

    config = Configurator(
        settings=settings,
        session_factory=session_factory,
        root_factory='.models.RootFactory',
    )

    mongo_uri = os.environ.get('MONGO_URI')
    mongo_name = os.environ.get('MONGO_NAME')
    mongo_conn = pymongo.Connection(mongo_uri)
    config.registry.settings['mongo_conn'] = mongo_conn
    config.registry.settings['mongo_name'] = mongo_name
    config.add_subscriber(add_mongo_db, NewRequest)

    config.set_authentication_policy(authn_policy)
    config.set_authorization_policy(authz_policy)
    config.add_static_view('static', 'static', cache_max_age=3600)
    config.include('pyramid_assetviews')
    config.add_asset_views('feed2rss:static', 'robots.txt', http_cache=3600)
    config.add_asset_views('feed2rss:static', 'favicon.ico', http_cache=3600)
    config.add_route('home', '/')
    config.add_route('twitter_login', '/twitter_login')
    config.add_route('twitter_authenticated', '/twitter_authenticated')
    config.add_route('logout', '/logout')
    config.add_route('user_home', '/users/{user}')
    config.add_route('create_feed',
                     '/users/{user}/feeds',
                     request_method='POST')
    config.add_route('get_feeds', '/users/{user}/feeds', request_method='GET')
    config.add_route('view_feed', '/users/{user}/feeds/{feedname}.rss')
    config.add_route('delete_feed', '/users/{user}/feeds/{feedname}.rss')
    config.scan()
    return config.make_wsgi_app()
コード例 #3
0
ファイル: __init__.py プロジェクト: alaski/Feed2RSS
def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application.
    """
    settings['twconsumer_key'] = os.environ.get('TWCONSUMER_KEY')
    settings['twconsumer_secret'] = os.environ.get('TWCONSUMER_SECRET')

    database_url = os.environ.get('DATABASE_URL')
    engine = create_engine(database_url)
    DBSession.configure(bind=engine)

    session_secret = os.environ.get('SESSION_SECRET')
    session_factory = UnencryptedCookieSessionFactoryConfig(session_secret)

    auth_secret = os.environ.get('AUTH_SECRET')
    authn_policy = AuthTktAuthenticationPolicy(auth_secret)
    authz_policy = ACLAuthorizationPolicy()

    config = Configurator(
            settings=settings,
            session_factory=session_factory,
            root_factory='.models.RootFactory',
            )

    mongo_uri = os.environ.get('MONGO_URI')
    mongo_name = os.environ.get('MONGO_NAME')
    mongo_conn = pymongo.Connection(mongo_uri)
    config.registry.settings['mongo_conn'] = mongo_conn
    config.registry.settings['mongo_name'] = mongo_name
    config.add_subscriber(add_mongo_db, NewRequest)

    config.set_authentication_policy(authn_policy)
    config.set_authorization_policy(authz_policy)
    config.add_static_view('static', 'static', cache_max_age=3600)
    config.include('pyramid_assetviews')
    config.add_asset_views('feed2rss:static', 'robots.txt', http_cache=3600)
    config.add_asset_views('feed2rss:static', 'favicon.ico', http_cache=3600)
    config.add_route('home', '/')
    config.add_route('twitter_login', '/twitter_login')
    config.add_route('twitter_authenticated', '/twitter_authenticated')
    config.add_route('logout', '/logout')
    config.add_route('user_home', '/users/{user}')
    config.add_route('create_feed', '/users/{user}/feeds', request_method='POST')
    config.add_route('get_feeds', '/users/{user}/feeds', request_method='GET')
    config.add_route('view_feed', '/users/{user}/feeds/{feedname}.rss')
    config.add_route('delete_feed', '/users/{user}/feeds/{feedname}.rss')
    config.scan()
    return config.make_wsgi_app()
コード例 #4
0
def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application.
    """
    config = Configurator(settings=settings)
    config.include("pyramid_assetviews")
    add_mako_renderer(config, '.html')

    # set up redis cache
    configure_caches(settings)

    # set up document text attributes parsers
    configure_parsers(settings)

    # configure connection pool for http requests
    max_connections = int(settings.get('http_request_connection_pool_size'))
    http_requests.session = requests.Session()
    # see: http://docs.python-requests.org/en/master/api/#requests.adapters.HTTPAdapter  # noqa
    # and: http://urllib3.readthedocs.io/en/1.2.1/managers.html
    adapter = requests.adapters.HTTPAdapter(
        pool_connections=1,  # number of pools (one pool per host)
        pool_maxsize=max_connections  # connections per pool
    )
    http_requests.session.mount('http://', adapter)

    # Register a tween to get back the cache buster path.
    config.add_tween("c2corg_ui.caching.cacheversion.CachebusterTween")

    # view for assets with cache buster
    _add_static_view(config, 'static', 'c2corg_ui:static')

    # favicon stuff
    filenames = [
        "android-chrome-192x192.png", "android-chrome-384x384.png",
        "apple-touch-icon.png", "browserconfig.xml", "favicon-16x16.png",
        "favicon-32x32.png", "favicon.ico", "manifest.json",
        "mstile-150x150.png", "safari-pinned-tab.svg"
    ]
    config.add_asset_views('c2corg_ui:static/favicons',
                           filenames=filenames,
                           http_cache=60 * 60 * 24 * 7)

    # robots.txt
    config.add_asset_views('c2corg_ui:static', 'robots.txt')

    # static views only used in debug mode
    config.add_static_view('node_modules',
                           settings.get('node_modules_path'),
                           cache_max_age=3600)
    config.add_static_view('closure',
                           settings.get('closure_library_path'),
                           cache_max_age=3600)

    # page views
    config.add_route('index', '/')

    config.add_route('waypoints_index', '/waypoints')
    config.add_route('waypoints_add', '/waypoints/add')
    config.add_route('waypoints_edit', '/waypoints/edit/{id:\d+}/{lang}')
    config.add_route('waypoints_history', '/waypoints/history/{id:\d+}/{lang}')
    config.add_route('waypoints_archive',
                     '/waypoints/version/{id:\d+}/{lang}/{version:\d+}')
    config.add_route('waypoints_view', '/waypoints/{id:\d+}/{lang}/{slug}')
    config.add_route('waypoints_view_id_lang', '/waypoints/{id:\d+}/{lang}')
    config.add_route('waypoints_view_id', '/waypoints/{id:\d+}')
    config.add_route('waypoints_diff',
                     '/waypoints/diff/{id:\d+}/{lang}/{v1}/{v2}')
    config.add_route('waypoints_preview', '/waypoints/preview')

    config.add_route('routes_index', '/routes')
    config.add_route('routes_add', '/routes/add')
    config.add_route('routes_edit', '/routes/edit/{id:\d+}/{lang}')
    config.add_route('routes_history', '/routes/history/{id:\d+}/{lang}')
    config.add_route('routes_archive',
                     '/routes/version/{id:\d+}/{lang}/{version:\d+}')
    config.add_route('routes_view', '/routes/{id:\d+}/{lang}/{slug}')
    config.add_route('routes_view_id_lang', '/routes/{id:\d+}/{lang}')
    config.add_route('routes_view_id', '/routes/{id:\d+}')
    config.add_route('routes_diff', '/routes/diff/{id:\d+}/{lang}/{v1}/{v2}')
    config.add_route('routes_preview', '/routes/preview')

    config.add_route('outings_index', '/outings')
    config.add_route('outings_add', '/outings/add')
    config.add_route('outings_edit', '/outings/edit/{id:\d+}/{lang}')
    config.add_route('outings_history', '/outings/history/{id:\d+}/{lang}')
    config.add_route('outings_archive',
                     '/outings/version/{id:\d+}/{lang}/{version:\d+}')
    config.add_route('outings_view', '/outings/{id:\d+}/{lang}/{slug}')
    config.add_route('outings_view_id_lang', '/outings/{id:\d+}/{lang}')
    config.add_route('outings_view_id', '/outings/{id:\d+}')
    config.add_route('outings_diff', '/outings/diff/{id:\d+}/{lang}/{v1}/{v2}')
    config.add_route('outings_preview', '/outings/preview')

    config.add_route('articles_index', '/articles')
    config.add_route('articles_add', '/articles/add')
    config.add_route('articles_edit', '/articles/edit/{id:\d+}/{lang}')
    config.add_route('articles_history', '/articles/history/{id:\d+}/{lang}')
    config.add_route('articles_archive',
                     '/articles/version/{id:\d+}/{lang}/{version:\d+}')
    config.add_route('articles_view', '/articles/{id:\d+}/{lang}/{slug}')
    config.add_route('articles_view_id_lang', '/articles/{id:\d+}/{lang}')
    config.add_route('articles_view_id', '/articles/{id:\d+}')
    config.add_route('articles_diff',
                     '/articles/diff/{id:\d+}/{lang}/{v1}/{v2}')
    config.add_route('articles_preview', '/articles/preview')

    config.add_route('books_index', '/books')
    config.add_route('books_add', '/books/add')
    config.add_route('books_edit', '/books/edit/{id:\d+}/{lang}')
    config.add_route('books_history', '/books/history/{id:\d+}/{lang}')
    config.add_route('books_archive',
                     '/books/version/{id:\d+}/{lang}/{version:\d+}')
    config.add_route('books_view', '/books/{id:\d+}/{lang}/{slug}')
    config.add_route('books_view_id_lang', '/books/{id:\d+}/{lang}')
    config.add_route('books_view_id', '/books/{id:\d+}')
    config.add_route('books_diff', '/books/diff/{id:\d+}/{lang}/{v1}/{v2}')
    config.add_route('books_preview', '/books/preview')

    config.add_route('xreports_index', '/xreports')
    config.add_route('xreports_add', '/xreports/add')
    config.add_route('xreports_edit', '/xreports/edit/{id:\d+}/{lang}')
    config.add_route('xreports_history', '/xreports/history/{id:\d+}/{lang}')
    config.add_route('xreports_archive',
                     '/xreports/version/{id:\d+}/{lang}/{version:\d+}')
    config.add_route('xreports_view', '/xreports/{id:\d+}/{lang}/{slug}')
    config.add_route('xreports_view_id_lang', '/xreports/{id:\d+}/{lang}')
    config.add_route('xreports_view_id', '/xreports/{id:\d+}')
    config.add_route('xreports_diff',
                     '/xreports/diff/{id:\d+}/{lang}/{v1}/{v2}')
    config.add_route('xreports_preview', '/xreports/preview')
    config.add_route('xreports_data', '/xreports/data/{id:\d+}/{lang}')

    config.add_route('images_index', '/images')
    config.add_route('images_edit', '/images/edit/{id:\d+}/{lang}')
    config.add_route('images_history', '/images/history/{id:\d+}/{lang}')
    config.add_route('images_archive',
                     '/images/version/{id:\d+}/{lang}/{version:\d+}')
    config.add_route('images_view', '/images/{id:\d+}/{lang}/{slug}')
    config.add_route('images_view_id_lang', '/images/{id:\d+}/{lang}')
    config.add_route('images_view_id', '/images/{id:\d+}')
    config.add_route('images_diff', '/images/diff/{id:\d+}/{lang}/{v1}/{v2}')
    config.add_route('images_preview', '/images/preview')

    config.add_route('areas_index', '/areas')
    config.add_route('areas_edit', '/areas/edit/{id:\d+}/{lang}')
    config.add_route('areas_history', '/areas/history/{id:\d+}/{lang}')
    config.add_route('areas_archive',
                     '/areas/version/{id:\d+}/{lang}/{version:\d+}')
    config.add_route('areas_view', '/areas/{id:\d+}/{lang}/{slug}')
    config.add_route('areas_view_id_lang', '/areas/{id:\d+}/{lang}')
    config.add_route('areas_view_id', '/areas/{id:\d+}')
    config.add_route('areas_diff', '/areas/diff/{id:\d+}/{lang}/{v1}/{v2}')
    config.add_route('areas_preview', '/areas/preview')

    config.add_route('profiles_edit', '/profiles/edit/{id:\d+}/{lang}')
    config.add_route('profiles_view', '/profiles/{id:\d+}/{lang}')
    config.add_route('profiles_view_id', '/profiles/{id:\d+}')
    config.add_route('profiles_data', '/profiles/data/{id:\d+}/{lang}')
    config.add_route('profiles_preview', '/profiles/preview')

    config.add_route('auth', '/auth')
    config.add_route('auth-sso', '/auth-sso')
    config.add_route('sso-login', '/sso-login')

    config.add_route('topoguide', '/topoguide')
    config.add_route('yeti', '/yeti')
    config.add_route('serac', '/serac')

    config.add_route('account', '/account')
    config.add_route('preferences', '/preferences')
    config.add_route('mailinglists', '/mailinglists')
    config.add_route('following', '/following')

    config.add_route('sitemap_index', '/sitemap.xml')
    config.add_route('sitemap', '/sitemaps/{doc_type:[a-z]{1}}/{i:\d+}.xml')

    config.add_route('whatsnew', '/whatsnew')

    # health services
    config.add_route('health', '/health')

    config.scan(ignore='c2corg_ui.tests')
    return config.make_wsgi_app()