0
|
1 """Pylons middleware initialization"""
|
|
2 from beaker.middleware import CacheMiddleware, SessionMiddleware
|
|
3 from paste.cascade import Cascade
|
|
4 from paste.registry import RegistryManager
|
|
5 from paste.urlparser import StaticURLParser
|
|
6 from paste.deploy.converters import asbool
|
|
7 from pylons import config
|
|
8 from pylons.middleware import ErrorHandler, StatusCodeRedirect
|
|
9 from pylons.wsgiapp import PylonsApp
|
|
10 from routes.middleware import RoutesMiddleware
|
|
11 from pylons_app.config.environment import load_environment
|
|
12
|
12
|
13
|
|
14
|
|
15 def make_app(global_conf, full_stack = True, **app_conf):
|
0
|
16 """Create a Pylons WSGI application and return it
|
|
17
|
|
18 ``global_conf``
|
|
19 The inherited configuration for this application. Normally from
|
|
20 the [DEFAULT] section of the Paste ini file.
|
|
21
|
|
22 ``full_stack``
|
12
|
23 Whether or not this application provides a full WSGI stack (by
|
|
24 default, meaning it handles its own exceptions and errors).
|
|
25 Disable full_stack when this application is "managed" by
|
|
26 another WSGI middleware.
|
0
|
27
|
|
28 ``app_conf``
|
|
29 The application's local configuration. Normally specified in
|
|
30 the [app:<name>] section of the Paste ini file (where <name>
|
|
31 defaults to main).
|
|
32
|
|
33 """
|
|
34 # Configure the Pylons environment
|
|
35 load_environment(global_conf, app_conf)
|
|
36
|
|
37 # The Pylons WSGI app
|
|
38 app = PylonsApp()
|
|
39
|
12
|
40 # CUSTOM MIDDLEWARE HERE (filtered by error handling middlewares)
|
|
41
|
0
|
42 # Routing/Session/Cache Middleware
|
|
43 app = RoutesMiddleware(app, config['routes.map'])
|
|
44
|
|
45 if asbool(full_stack):
|
|
46 # Handle Python exceptions
|
|
47 app = ErrorHandler(app, global_conf, **config['pylons.errorware'])
|
|
48
|
|
49 # Display error documents for 401, 403, 404 status codes (and
|
|
50 # 500 when debug is disabled)
|
|
51 if asbool(config['debug']):
|
14
|
52 #don't handle 404, since mercurial does it for us.
|
|
53 app = StatusCodeRedirect(app, [400, 401, 403, 500])
|
0
|
54 else:
|
14
|
55 app = StatusCodeRedirect(app, [400, 401, 403, 500])
|
0
|
56
|
|
57 # Establish the Registry for this application
|
|
58 app = RegistryManager(app)
|
|
59
|
12
|
60 # Static files (If running in production, and Apache or another web
|
|
61 # server is handling this static content, remove the following 3 lines)
|
|
62 static_app = StaticURLParser(config['pylons.paths']['static_files'])
|
|
63 app = Cascade([static_app, app])
|
|
64 return app
|
0
|
65
|