Example #1
0
def setup_app(command, conf, vars):
    """
    Load the environment then run each modules setup_app 
    if one was recovered.
    
    """
    set_up = load_environment(conf.global_conf, conf.local_conf, websetup=True)
    
    setup_app_list = set_up['setup_app_list']
    
    # Call each modules setup app:
    #
    for setupapp in setup_app_list:
        try:
            get_log().debug("setup_app: calling for '%s'." % setupapp)
            setupapp(command, conf, vars)

        except SystemExit, e:
            raise            

        except:
Example #2
0
def make_app(global_conf, full_stack=True, static_files=True, **app_conf):
    """Create a Pylons WSGI application and return it

    ``global_conf``
        The inherited configuration for this application. Normally from
        the [DEFAULT] section of the Paste ini file.

    ``full_stack``
        Whether this application provides a full WSGI stack (by default,
        meaning it handles its own exceptions and errors). Disable
        full_stack when this application is "managed" by another WSGI
        middleware.

    ``static_files``
        Whether this application serves its own static files; disable
        when another web server is responsible for serving them.

    ``app_conf``
        The application's local configuration. Normally specified in
        the [app:<name>] section of the Paste ini file (where <name>
        defaults to main).

    """
    # Configure the Pylons environment
    set_up = load_environment(global_conf, app_conf)
    middleware_list = set_up['middleware_list']

    # The Pylons WSGI app
    app = WebAdminApp()

    # Set up the middleware based on the list of provided middleware functions:
    #
    for middleware in middleware_list:
        try:
            get_log().debug("Calling middleware '%s' - " % middleware)
            app = middleware(app, global_conf, app_conf, middleware_list)
            
        except:
            get_log().exception("Error configuring middleware '%s' - " % middleware)

    enable_default_errorhandling = app_conf.get('enable_default_errorhandling', 'true')
    if enable_default_errorhandling.lower() == 'true':
        get_log().info("load_environment: enabling default error handling middleware (enable_default_errorhandling = true).")
        if asbool(full_stack):
            # Handle Python exceptions
            app = ErrorHandler(app, global_conf, **config['pylons.errorware'])

            # Display error documents for 401, 403, 404 status codes (and
            # 500 when debug is disabled)
            if asbool(config['debug']):
                app = StatusCodeRedirect(app)
            else:
                app = StatusCodeRedirect(app, [400, 401, 403, 404, 500])
    else:
        get_log().warn("load_environment: default error handling middleware disabled (enable_default_errorhandling = false).")
    

    # Establish the Registry for this application
    app = RegistryManager(app)

    if asbool(static_files):
        # Serve static files
        static_apps = []
        for p in  config['pylons.paths']['static_files']:
            # unwind the list of static paths:
            if type(p) in (type([]), type((0,))):
                for a in p:
                    static_apps.append(StaticURLParser(a))
            else:
                static_apps.append(StaticURLParser(p))
            
        app = Cascade(static_apps + [app,])


    return app