示例#1
0
def includeme(config):
    config.include('dashboard')
    config.commit()

    config.get_jinja2_environment().filters['friendly_group_name'] =\
        friendly_group_name

    # hook up our submission handlers
    hook_submission_handlers()

    # request methods
    config.add_request_method(get_request_user, 'user', reify=True)
    config.add_request_method(is_current_path)

    # pyramid_jinja2 is already included by Dashboard
    config.add_jinja2_search_path("composting:templates")
    config.add_renderer('xlsx',
                        'composting.views.renderers.TablibXLSXRenderer')

    config.add_static_view('static', 'composting:static', cache_max_age=3600)
    config.add_static_view('docs', '../docs/_build/html', cache_max_age=3600)
    config.add_route('default', '/')
    config.add_route('auth', '/auth/{action}')
    config.add_route('oauth', '/oauth/{action}')
    config.add_route('municipalities',
                     '/municipalities/*traverse',
                     factory=MunicipalityFactory)
    config.add_route('submissions',
                     '/submissions/*traverse',
                     factory=SubmissionFactory)
    config.add_route('skips', '/skips/*traverse', factory=SkipFactory)
    config.add_route('users', '/users/*traverse', factory=UserFactory)
    config.scan()
示例#2
0
def test_init_with_debug(capsys, mock_timestamper):
    logger = structlog.get_logger()

    # Configure pyramid app
    settings = {'logging.level': 'DEBUG'}
    with pyramid_testing.testConfig(settings=settings) as config:
        config.include(includeme)
        # Create some log messages
        logger.info('info msg')
        logger.debug('debug msg')
        logger.error('error msg')

    # Check for results
    captured = capsys.readouterr()
    expected = (
        "event='logging configuration initialized' logger='press.logging'"
        " level='info' timestamp='round and round'"
        "\n"
        "event='debug logging enabled' logger='press.logging'"
        " level='debug' timestamp='round and round'"
        "\n"
        "event='info msg' logger='tests.unit.test_logging'"
        " level='info' timestamp='round and round'"
        "\n"
        "event='debug msg' logger='tests.unit.test_logging'"
        " level='debug' timestamp='round and round'"
        "\n"
        "event='error msg' logger='tests.unit.test_logging'"
        " level='error' timestamp='round and round'"
        "\n"
    )
    assert captured.out == expected
    assert captured.err == ''
示例#3
0
def main(*args, **settings):
    from pyramid.config import Configurator
    from pyramid.events import NewRequest, ContextFound
    from pyramid.authentication import BasicAuthAuthenticationPolicy
    from pyramid.authorization import ACLAuthorizationPolicy
    from pyramid.renderers import JSON, JSONP

    logger.info('Start registry api...')
    read_users(settings['auth.file'])
    config = Configurator(autocommit=True,
                          settings=settings,
                          authentication_policy=BasicAuthAuthenticationPolicy(
                              auth_check, __name__),
                          authorization_policy=ACLAuthorizationPolicy(),
                          root_factory=Root,
                          route_prefix=ROUTE_PREFIX)

    config.include('pyramid_exclog')
    config.add_forbidden_view(forbidden)
    config.add_request_method(request_params, 'params', reify=True)
    config.add_request_method(authenticated_role, reify=True)
    config.add_renderer('prettyjson', JSON(indent=4))
    config.add_renderer('jsonp', JSONP(param_name='opt_jsonp'))
    config.add_renderer('prettyjsonp', JSONP(indent=4, param_name='opt_jsonp'))
    config.add_subscriber(add_logging_context, NewRequest)
    config.add_subscriber(set_logging_context, ContextFound)
    config.add_subscriber(set_renderer, NewRequest)
    config.add_route('health', '/health')
    config.add_route('registry', '/registry/{param}.json')
    config.scan('openprocurement.medicines.registry.api.views')
    return config.make_wsgi_app()
示例#4
0
def includeme(config):
    config.include('pyramid_jinja2')
    config.commit()

    config.add_jinja2_search_path("whoahqa:templates")
    config.get_jinja2_environment().filters['format_date'] = \
        format_date_for_locale
    config.get_jinja2_environment().filters['format_location_name'] = \
        format_location_name

    config.get_jinja2_environment().filters['round_or_none'] = round_or_none
    config.add_static_view('static', 'static', cache_max_age=3600)
    config.add_route('default', '/')
    config.add_route('logout', '/logout/')
    config.add_route('push', '/push/{action}')
    config.add_route('locale', '/locale/')
    config.add_route('admin', '/admin/*traverse', factory=UserFactory)
    config.add_route('auth', '/auth/{action}')
    config.add_route('users', '/users/*traverse',
                     factory=UserFactory)
    config.add_route('clinics', '/clinics/*traverse',
                     factory=ClinicFactory)
    config.add_route('submissions', '/submissions/*traverse',
                     factory=SubmissionFactory)
    config.add_route('periods', '/reporting-periods/*traverse',
                     factory=ReportingPeriodFactory)
    config.add_route('municipalities', '/municipalities/*traverse',
                     factory=LocationFactory)
    config.add_route('states', '/states/*traverse',
                     factory=LocationFactory)
    config.add_route('locations', '/locations/*traverse',
                     factory=LocationFactory)
    config.scan()
示例#5
0
def include_routes(config):
    config.add_route('login', '/login')
    config.add_route('logout', '/logout')
    config.add_route('forbidden', '/forbidden')

    config.add_route('home', 'cot/chart')

    config.include(commodity_routes, route_prefix='commodities')
    config.include(financial_routes, route_prefix='financials')
示例#6
0
def main(global_config, **settings):

    # support logging in python3
    logging.config.fileConfig(settings["logging.config"],
                              disable_existing_loggers=False)
    config = Configurator(settings=settings)
    config.include(".routes")
    config.scan()
    app = config.make_wsgi_app()
    return ignore_websocket_closed(app)
示例#7
0
def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application.
    """

    # support logging in python3
    logging.config.fileConfig(
        settings['logging.config'],
        disable_existing_loggers=False
    )

    config = Configurator(settings=settings)

    config.include('pyramid_raven')

    return config.make_wsgi_app()
示例#8
0
def main(global_config, **settings):
    logging.config.fileConfig(settings['logging.config'], disable_existing_loggers=False)
    """ This function returns a Pyramid WSGI application.
    """
    config = Configurator(settings=settings, root_factory='jungo.model.RootFactory')
    config.include('pyramid_chameleon')
    config.add_static_view('static', 'static', cache_max_age=3600)
    config.add_route('home', '/old-home')
    config.add_route('search', '/')
    config.add_route('common_interests', '/common-interests')
    config.add_route('profile', '/me')
    config.add_route('user', '/user/{username}')

    config.add_route('login', '/login')
    config.add_route('logout', '/logout')

    config.add_route('interest_match', '/interest-match/{username}/{interest_id}')
    config.add_route('api_add_user', '/api/user', request_method='POST')
    config.add_route('api_user', '/api/user/{username}', request_method='GET')
    config.add_route('api_add_interests', '/api/user/{username}/interests', request_method='POST')
    config.add_route('api_common_interests', '/api/common-interests', request_method='GET')

    authn_policy = AuthTktAuthenticationPolicy('super secret magic', callback=groupfinder, hashalg='sha512')
    authz_policy = ACLAuthorizationPolicy()
    config.set_authentication_policy(authn_policy)
    config.set_authorization_policy(authz_policy)

    config.set_session_factory(session_factory)

    db_url = settings['mongo_uri']

    config.registry.client = pymongo.MongoClient(db_url)

    def add_db(request):
        uri = urlparse.urlparse(db_url)
        db = config.registry.client[uri.path[1:]]
        if uri.username and uri.password:
            db.authenticate(uri.username, uri.password)
        return DataStore(db)

    add_db(None).create_indices()

    config.add_request_method(add_db, 'db', reify=True)

    config.scan()

    return config.make_wsgi_app()
示例#9
0
def includeme(config):
    config.include('pyramid_jinja2')
    config.add_jinja2_search_path("dashboard:templates")
    config.commit()  # commit to allow access to jinja environment

    # request methods
    config.add_request_method(get_request_user, 'user', reify=True)

    config.get_jinja2_environment().filters['format_date'] = format_date
    config.get_jinja2_environment().filters['format_time'] = format_time
    config.get_jinja2_environment().filters['format_decimal'] = format_decimal
    config.get_jinja2_environment().filters['format_percent'] = format_percent
    config.get_jinja2_environment().filters['format_number'] = format_number
    config.get_jinja2_environment().filters['datetime'] = (
        date_string_to_datetime)
    config.add_static_view('static', 'dashboard:static', cache_max_age=3600)
    config.add_route('default', '/')
    config.add_route('submissions', '/submissions/*traverse')
    config.scan()
示例#10
0
def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application."""

    session_factory = SignedCookieSessionFactory('itsaseekreet',
                                                 max_age=31536000,
                                                 timeout=31536000)  # TODO:

    # support logging in python3
    logging.config.fileConfig(settings['logging.config'],
                              disable_existing_loggers=False)

    config = Configurator(settings=settings,
                          session_factory=session_factory,
                          root_factory=Root)

    # Addons
    config.include('pyramid_chameleon')

    # Security policies
    authn_policy = AuthTktAuthenticationPolicy(
        'qwerty',
        callback=groupfinder,  # TODO:
        hashalg='sha512')
    authz_policy = ACLAuthorizationPolicy()
    config.set_authentication_policy(authn_policy)
    config.set_authorization_policy(authz_policy)

    # Routing
    config.add_route('home', '/')
    config.add_route('second', '/second')
    config.add_route('login', '/login')
    config.add_route('auth', '/auth')
    config.add_route('logout', '/logout')
    config.add_static_view('deform_static', 'deform:static/')
    config.scan()

    return config.make_wsgi_app()
import logging.config

from pyramid.config import Configurator
from pyramid.renderers import JSON

from {{ cookiecutter.repo_name }} import settings


# Set up logging
logging.config.dictConfig(settings.LOGGING)

config = Configurator(settings=settings.PYRAMID_APP_SETTINGS)
json_render = JSON()

config.add_renderer(None, json_render)
config.include('.models')
config.include('.routes')
config.scan()

application = config.make_wsgi_app()
示例#12
0
文件: __init__.py 项目: abhijitr/giza
def configure_jinja(config):
    config.include('pyramid_jinja2')
    config.add_renderer('.html', renderer_factory)
    config.add_renderer('.tmpl', renderer_factory)

    json_renderer = JSON(serializer=json.dumps)
    def datetime_adapter(obj, request):
        return obj.isoformat()
    json_renderer.add_adapter(datetime.datetime, datetime_adapter)    
    config.add_renderer('json', json_renderer)

    the_settings = config.registry.settings

    def silent_none(value):
        if value is None:
            return ''
        return value

    jinja2_env = config.get_jinja2_environment()
    jinja2_env.finalize = silent_none

    # add custom template filters
    def to_json(value):
        return json.dumps(value)

    jinja2_env.filters['to_json'] = to_json
    
    def urlencode_filter(s):
        if type(s) == 'Markup':
            s = s.unescape()
        s = s.encode('utf8')
        s = urllib.quote_plus(s)
        return Markup(s)

    jinja2_env.filters['urlencode'] = urlencode_filter

    config.include('pyramid_webassets')
    config.add_jinja2_extension('webassets.ext.jinja2.AssetsExtension')
    assets_env = config.get_webassets_env()
    assets_env.config['less_run_in_debug'] = False # set env variables before any bundles are created
    jinja2_env.assets_environment = assets_env

    deps_app = ['**/*.js','**/*.hbs']
    jsmin_app = Bundle(
        'app/js/build.js',
        filters=the_settings['giza.js_filters'],
        output='js/app-%(version)s.min.js',
        depends=deps_app if assets_env.debug else []
    )
    config.add_webasset('jsmin_app', jsmin_app)

    less_app = Bundle(
        'app/less/app.less',
        filters='less',
        output='css/app-%(version)s.css',
        extra={'rel': 'stylesheet/less' if assets_env.debug else 'stylesheet'}
    )
    config.add_webasset('less_app', less_app)

    # Clean up some loose ends for the asset pipeline
    base = os.path.dirname(__file__)

    if the_settings['giza.clear_asset_cache']:
        for d in ['/static/.webassets-cache', '/static/img', '/static/js', '/static/css']:
            if os.path.isdir(base + d):
                dir_util.remove_tree(base + d)
    
    # copy images to their final destination
    if os.path.isdir(base + '/static/vendor/img'):
        dir_util.copy_tree(base + '/static/vendor/img', base + '/static/img', update=True)
    if os.path.isdir(base + '/static/app/img'):
        dir_util.copy_tree(base + '/static/app/img', base + '/static/img', update=True)
示例#13
0
文件: __init__.py 项目: abhijitr/giza
def configure_redirects(config):
    config.include('pyramid_rewrite')
    
    config.add_rewrite_rule(r'/favicon.ico', r'/static/favicon.ico')
    config.add_rewrite_rule(r'/robots.txt', r'/static/robots.txt')
    config.add_rewrite_rule(r'/privacy-policy.pdf', r'/static/privacy-policy.pdf')
示例#14
0
def includeme(config):
    config.include('.config')
    config.include('.renderers')
    config.include('.routes')
示例#15
0
def main(global_config, **settings):
    """ This function returns a Pyramid WSGI application.
    """
    config = Configurator(settings=settings)
    config.include('pyramid_chameleon')
    config.add_subscriber(add_cors_headers_response_callback, NewRequest)
    social_providers = config.registry.settings['allow_auth'].split(',')
    if 'google' in social_providers:
        config.include('velruse.providers.google_oauth2')
        config.add_google_oauth2_login_from_settings()
    if 'github' in social_providers:
        config.include('velruse.providers.github')
        config.add_github_login_from_settings()
    config.add_subscriber(before_render, BeforeRender)

    my_session_factory = session_factory_from_settings(settings)
    config.set_session_factory(my_session_factory)

    yaml_config = None
    try:
        with open(config.registry.settings['config'], 'r') as ymlfile:
            yaml_config = yaml.load(ymlfile)
            if yaml_config['log_config'] is not None:
                for handler in list(
                        yaml_config['log_config']['handlers'].keys()):
                    yaml_config['log_config']['handlers'][handler] = dict(
                        yaml_config['log_config']['handlers'][handler])
                logging.config.dictConfig(yaml_config['log_config'])
    except Exception as e:
        logging.error('No config file found or declared: ' + str(e))

    logging.warn('Start bioshadock web server')

    config.registry.config = yaml_config

    mongo = MongoClient(yaml_config['services']['mongo']['url'])
    dbmongo = mongo[yaml_config['services']['mongo']['db']]
    config.registry.db_mongo = dbmongo

    r = redis.StrictRedis(host=yaml_config['services']['redis']['host'],
                          port=yaml_config['services']['redis']['port'],
                          db=yaml_config['services']['redis']['db'])
    config.registry.db_redis = r

    config.registry.admin = yaml_config['general']['admin'].split(',')

    config.registry.es = Elasticsearch(
        yaml_config['services']['elastic']['host'].split(','))

    config.registry.ldap_server = None
    config.registry.con = None
    if yaml_config['ldap']['use'] == 1:
        # Check if in ldap
        #import ldap
        from ldap3 import Server, Connection, AUTH_SIMPLE, STRATEGY_SYNC, STRATEGY_ASYNC_THREADED, SEARCH_SCOPE_WHOLE_SUBTREE, GET_ALL_INFO
        try:
            ldap_host = yaml_config['ldap']['host']
            ldap_port = yaml_config['ldap']['port']
            config.registry.ldap_server = Server(ldap_host,
                                                 port=ldap_port,
                                                 get_info=GET_ALL_INFO)
        except Exception as err:
            logging.error(str(err))
            sys.exit(1)

    config.add_static_view('static', 'static', cache_max_age=3600)

    runenv = "dist"
    if "BIOSHADOCK_ENV" in os.environ and os.environ["BIOSHADOCK_ENV"] == "dev":
        runenv = "app"
    config.registry.runenv = runenv

    config.add_static_view('app', 'shadock:webapp/' + runenv + '/')
    config.add_route('home', '/')
    config.add_route('config', '/config')
    config.add_route('search', '/search')
    config.add_route('user_is_logged', '/user/logged')
    config.add_route('users', '/user')
    config.add_route('user_logout', '/user/logout')
    config.add_route('user_bind', '/user/bind')
    config.add_route('user', '/user/{id}')
    config.add_route('containers', '/container')
    config.add_route('containers_all', '/container/all')
    config.add_route('containers_latest', '/container/latest')
    config.add_route('containers_search', '/container/search')
    config.add_route('containers_new', '/container/new')
    config.add_route('container_manifest', '/container/manifest/*id')
    config.add_route('container_tags', '/container/tags/*id')
    config.add_route('container_dockerfile', '/container/dockerfile/*id')
    config.add_route('container_git', '/container/git/*id')
    config.add_route('container_tag', '/container/tag/*id')
    config.add_route('container_elixir', '/container/elixir/*id')
    config.add_route('container_metaelixir', '/container/metaelixir/*id')
    config.add_route('container_vulnerabilities',
                     '/container/vulnerabilities/*id')
    config.add_route('container', '/container/*id')
    config.add_route('clair_notification', '/clair/notify')
    config.add_route('builds', '/builds/*id')
    config.add_route('build', '/build/{id}')
    config.add_route('api_users', '/v1/users/')
    config.add_route('api_library', '/v1/repositories/{image}/')
    config.add_route('api_library_auth', '/v1/repositories/{image}/auth')
    config.add_route('api_library_images', '/v1/repositories/{image}/images')
    config.add_route('api_repositories_images_get',
                     '/v1/repositories/{namespace}/{image}/images')
    config.add_route('api_repositories_images_put',
                     '/v1/repositories/{namespace}/{image}/images')
    config.add_route('api_repositories_images_layer_access',
                     '/v1/repositories/{namespace}/{image}/layer/{id}/access')
    config.add_route('api_repositories',
                     '/v1/repositories/{namespace}/{image}/')
    config.add_route('api_repositories_auth',
                     '/v1/repositories/{namespace}/{image}/auth')
    config.add_route('api_ping', '/v1/_ping')
    config.add_route('api2_ping', '/v2/_ping')
    config.add_route('api2_token', '/v2/token/')
    config.add_route('api2_other', '/v2/*api')
    config.add_route('api_other', '/v1/*api')
    # GA4GH API
    config.add_route('ga4gh_tools', '/api/ga4gh/v1/tools')
    config.add_route('ga4gh_tools_id', '/api/ga4gh/v1/tools/{id}')
    config.add_route('ga4gh_tools_id_versions',
                     '/api/ga4gh/v1/tools/{id}/versions')
    config.add_route('ga4gh_tools_id_version',
                     '/api/ga4gh/v1/tools/{id}/versions/{versionid}')
    config.add_route(
        'ga4gh_tools_id_version_descriptor',
        '/api/ga4gh/v1/tools/{id}/versions/{versionid}/{type}/descriptor')
    config.add_route(
        'ga4gh_tools_id_version_descriptor_file_relative_path',
        '/api/ga4gh/v1/tools/{id}/versions/{versionid}/{type}/descriptor/{relativepath}'
    )
    config.add_route(
        'ga4gh_tools_id_version_dockerfile',
        '/api/ga4gh/v1/tools/{id}/versions/{versionid}/dockerfile')
    config.add_route('ga4gh_metadata', '/api/ga4gh/v1/metadata')
    config.add_route('ga4gh_tool_classes', '/api/ga4gh/v1/tool-classes')

    # Deprecated
    config.add_route('ga4gh_tools_query', '/api/ga4gh/v1/tools/query')
    config.add_route('ga4gh_tool_descriptor',
                     '/api/ga4gh/v1/tools/{id}/descriptor')
    config.add_route('ga4gh_tool_dockerfile',
                     '/api/ga4gh/v1/tools/{id}/dockerfile')
    config.scan()

    json_renderer = JSON()

    def pymongo_adapter(obj, request):
        return json_util.default(obj)

    json_renderer.add_adapter(ObjectId, pymongo_adapter)
    json_renderer.add_adapter(datetime.datetime, pymongo_adapter)

    config.add_renderer('json', json_renderer)
    return config.make_wsgi_app()