Mercurial > public > src > rhodecode
annotate pylons_app/config/middleware.py @ 10:525ed90e4577
major app speedup moved the wsgi creation to app globals, in order to make it run only once.
little config changes.
author | Marcin Kuzminski |
---|---|
date | Sat, 20 Feb 2010 14:30:13 +0100 |
parents | 7322f231ad09 |
children | 5f30a6d558dc |
rev | line source |
---|---|
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 | |
12 from pylons_app.config.environment import load_environment | |
13 | |
14 def make_app(global_conf, full_stack = True, static_files = True, **app_conf): | |
15 """Create a Pylons WSGI application and return it | |
16 | |
17 ``global_conf`` | |
18 The inherited configuration for this application. Normally from | |
19 the [DEFAULT] section of the Paste ini file. | |
20 | |
21 ``full_stack`` | |
22 Whether this application provides a full WSGI stack (by default, | |
23 meaning it handles its own exceptions and errors). Disable | |
24 full_stack when this application is "managed" by another WSGI | |
25 middleware. | |
26 | |
27 ``static_files`` | |
28 Whether this application serves its own static files; disable | |
29 when another web server is responsible for serving them. | |
30 | |
31 ``app_conf`` | |
32 The application's local configuration. Normally specified in | |
33 the [app:<name>] section of the Paste ini file (where <name> | |
34 defaults to main). | |
35 | |
36 """ | |
37 # Configure the Pylons environment | |
38 load_environment(global_conf, app_conf) | |
39 | |
40 # The Pylons WSGI app | |
41 app = PylonsApp() | |
42 | |
43 # Routing/Session/Cache Middleware | |
44 app = RoutesMiddleware(app, config['routes.map']) | |
45 app = SessionMiddleware(app, config) | |
46 app = CacheMiddleware(app, config) | |
47 | |
48 # CUSTOM MIDDLEWARE HERE (filtered by error handling middlewares) | |
49 | |
50 if asbool(full_stack): | |
51 # Handle Python exceptions | |
52 app = ErrorHandler(app, global_conf, **config['pylons.errorware']) | |
53 | |
54 # Display error documents for 401, 403, 404 status codes (and | |
55 # 500 when debug is disabled) | |
56 if asbool(config['debug']): | |
57 app = StatusCodeRedirect(app) | |
58 else: | |
59 app = StatusCodeRedirect(app, [400, 401, 403, 404, 500]) | |
60 | |
61 # Establish the Registry for this application | |
62 app = RegistryManager(app) | |
63 | |
64 if asbool(static_files): | |
65 # Serve static files | |
66 static_app = StaticURLParser(config['pylons.paths']['static_files']) | |
67 app = Cascade([static_app, app]) | |
68 | |
69 #dozer debug | |
10
525ed90e4577
major app speedup moved the wsgi creation to app globals, in order to make it run only once.
Marcin Kuzminski
parents:
1
diff
changeset
|
70 if asbool(config['debug']): |
525ed90e4577
major app speedup moved the wsgi creation to app globals, in order to make it run only once.
Marcin Kuzminski
parents:
1
diff
changeset
|
71 from dozer import Logview |
525ed90e4577
major app speedup moved the wsgi creation to app globals, in order to make it run only once.
Marcin Kuzminski
parents:
1
diff
changeset
|
72 app = Logview(app, config) |
0 | 73 |
74 return app |