text: from beaker.middleware import SessionMiddleware
  from paste.cascade import Cascade
  from paste.registry import RegistryManager
  from paste.urlparser import StaticURLParser
  from paste.deploy.converters import asbool
  from pylons.middleware import ErrorHandler, StatusCodeRedirect
  from pylons.wsgiapp import PylonsApp
  from routes.middleware import RoutesMiddleware
  
  from harstorage.config.environment import load_environment
  
  def make_app(global_conf, full_stack=True, static_files=True, **app_conf):
      """Create a Pylons WSGI application and return it"""
      
      # Configure the Pylons environment
      config = load_environment(global_conf, app_conf)
  
      # The Pylons WSGI app
      app = PylonsApp(config=config)
  
      # Routing/Session Middleware
      app = RoutesMiddleware(app, config["routes.map"])
      app = SessionMiddleware(app, config)
  
      # CUSTOM MIDDLEWARE HERE (filtered by error handling middlewares)
  
      if asbool(full_stack):
          # Handle Python exceptions
          app = ErrorHandler(app, global_conf, **config["pylons.errorware"])
  
          # Display error documents for 400, 403, 404, 405 status codes (and
          # 500, 503 when debug is disabled)
          if asbool(config["debug"]):
              app = StatusCodeRedirect(app)
          else:
              app = StatusCodeRedirect(app, [400, 403, 404, 405, 500, 503])
  
      # Establish the Registry for this application
      app = RegistryManager(app)
  
      if asbool(static_files):
          # Serve static files
          static_app = StaticURLParser(config["pylons.paths"]["static_files"])
          app = Cascade([static_app, app])
  
      app.config = config
  
      return app