Example #1
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
	config = load_environment(global_conf, app_conf)
	
	# The Pylons WSGI app
	app = PylonsApp(config=config)
	
	# Columns custom middleware
	app = AnalyticsMiddleware(app, config)
	app = AuthorizationMiddleware(app, 'columns.model.RESOURCE_MAP', 'columns.config.authorization.AUTHORIZE_MAP', asbool(config['no_auth']))
	
	# Routing/Session Middleware
	app = RoutesMiddleware(app, config['routes.map'], singleton=False)
	app = SessionMiddleware(app, config)
	
	# CUSTOM MIDDLEWARE HERE (filtered by error handling middlewares)
	app = RecursiveMiddleware(app)
	app = AuthenticationMiddleware(app)
	
	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)
		app = StatusCodeRedirect(app) if asbool(config['debug']) else StatusCodeRedirect(app, [400, 401, 403, 404, 500])
	
	# 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
Example #2
0
def setup_app(command, conf, vars):
	"""Place any commands to setup columns here"""
	# Don't reload the app if it was loaded under the testing environment
	if not pylons.test.pylonsapp:
		env = load_environment(conf.global_conf, conf.local_conf)
	else:
		# Create a fresh database
		meta.metadata.drop_all(bind=meta.engine, checkfirst=True)
	
	# Create the tables if they aren't there already
	meta.metadata.create_all(bind=meta.engine, checkfirst=True)
	
	# initialize settings with default values
	set_default_settings(conf)