annotate rhodecode/config/middleware.py @ 3511:e1568c0bac1f beta

only use errormator if it's actually turned on in .ini file
author Marcin Kuzminski <marcin@python-works.com>
date Sat, 09 Mar 2013 15:10:05 +0100
parents d997a314d18a
children 3563bb7b4b82
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1 """Pylons middleware initialization"""
1018
da5075ce681c rhodecode config module refactoring
Marcin Kuzminski <marcin@python-works.com>
parents: 914
diff changeset
2
43
2e1247e62c5b changed for pylons 0.1 / 1.0
marcink
parents: 41
diff changeset
3 from beaker.middleware import SessionMiddleware
1018
da5075ce681c rhodecode config module refactoring
Marcin Kuzminski <marcin@python-works.com>
parents: 914
diff changeset
4 from routes.middleware import RoutesMiddleware
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5 from paste.cascade import Cascade
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6 from paste.registry import RegistryManager
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7 from paste.urlparser import StaticURLParser
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8 from paste.deploy.converters import asbool
1018
da5075ce681c rhodecode config module refactoring
Marcin Kuzminski <marcin@python-works.com>
parents: 914
diff changeset
9 from paste.gzipper import make_gzip_middleware
da5075ce681c rhodecode config module refactoring
Marcin Kuzminski <marcin@python-works.com>
parents: 914
diff changeset
10
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
11 from pylons.middleware import ErrorHandler, StatusCodeRedirect
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
12 from pylons.wsgiapp import PylonsApp
1018
da5075ce681c rhodecode config module refactoring
Marcin Kuzminski <marcin@python-works.com>
parents: 914
diff changeset
13
547
1e757ac98988 renamed project to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents: 341
diff changeset
14 from rhodecode.lib.middleware.simplehg import SimpleHg
635
fd63782c4426 Fixed age, for new vcs implementation. Removed all obsolete date formatters
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
15 from rhodecode.lib.middleware.simplegit import SimpleGit
547
1e757ac98988 renamed project to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents: 341
diff changeset
16 from rhodecode.lib.middleware.https_fixup import HttpsFixup
1e757ac98988 renamed project to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents: 341
diff changeset
17 from rhodecode.config.environment import load_environment
3489
d997a314d18a moved time measure of request to separate middleware for better results (the last one in stack)
Marcin Kuzminski <marcin@python-works.com>
parents: 2939
diff changeset
18 from rhodecode.lib.middleware.wrapper import RequestWrapper
12
5f30a6d558dc Added pylons manage script
Marcin Kuzminski
parents: 10
diff changeset
19
1205
f4807acf643d added __license__ into main of rhodecode, PEP8ify
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
20
43
2e1247e62c5b changed for pylons 0.1 / 1.0
marcink
parents: 41
diff changeset
21 def make_app(global_conf, full_stack=True, static_files=True, **app_conf):
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
22 """Create a Pylons WSGI application and return it
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
23
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
24 ``global_conf``
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
25 The inherited configuration for this application. Normally from
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
26 the [DEFAULT] section of the Paste ini file.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
27
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
28 ``full_stack``
12
5f30a6d558dc Added pylons manage script
Marcin Kuzminski
parents: 10
diff changeset
29 Whether or not this application provides a full WSGI stack (by
5f30a6d558dc Added pylons manage script
Marcin Kuzminski
parents: 10
diff changeset
30 default, meaning it handles its own exceptions and errors).
5f30a6d558dc Added pylons manage script
Marcin Kuzminski
parents: 10
diff changeset
31 Disable full_stack when this application is "managed" by
5f30a6d558dc Added pylons manage script
Marcin Kuzminski
parents: 10
diff changeset
32 another WSGI middleware.
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
33
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
34 ``app_conf``
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
35 The application's local configuration. Normally specified in
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
36 the [app:<name>] section of the Paste ini file (where <name>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
37 defaults to main).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
38
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
39 """
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
40 # Configure the Pylons environment
43
2e1247e62c5b changed for pylons 0.1 / 1.0
marcink
parents: 41
diff changeset
41 config = load_environment(global_conf, app_conf)
2e1247e62c5b changed for pylons 0.1 / 1.0
marcink
parents: 41
diff changeset
42
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
43 # The Pylons WSGI app
43
2e1247e62c5b changed for pylons 0.1 / 1.0
marcink
parents: 41
diff changeset
44 app = PylonsApp(config=config)
635
fd63782c4426 Fixed age, for new vcs implementation. Removed all obsolete date formatters
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
45
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
46 # Routing/Session/Cache Middleware
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
47 app = RoutesMiddleware(app, config['routes.map'])
21
fac1f62a1d71 Wrapped into mako templates,
Marcin Kuzminski
parents: 17
diff changeset
48 app = SessionMiddleware(app, config)
635
fd63782c4426 Fixed age, for new vcs implementation. Removed all obsolete date formatters
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
49
204
a8ea3ce3cdc4 Created middleware package. Crated special middleware to handle https requests redirections.
Marcin Kuzminski <marcin@python-works.com>
parents: 203
diff changeset
50 # CUSTOM MIDDLEWARE HERE (filtered by error handling middlewares)
1355
bfc529377cdc added simple profiling middleware controlled by .ini file flag
Marcin Kuzminski <marcin@python-works.com>
parents: 1205
diff changeset
51 if asbool(config['pdebug']):
bfc529377cdc added simple profiling middleware controlled by .ini file flag
Marcin Kuzminski <marcin@python-works.com>
parents: 1205
diff changeset
52 from rhodecode.lib.profiler import ProfilingMiddleware
bfc529377cdc added simple profiling middleware controlled by .ini file flag
Marcin Kuzminski <marcin@python-works.com>
parents: 1205
diff changeset
53 app = ProfilingMiddleware(app)
635
fd63782c4426 Fixed age, for new vcs implementation. Removed all obsolete date formatters
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
54
1982
87f0800abc7b #227 Initial version of repository groups permissions system
Marcin Kuzminski <marcin@python-works.com>
parents: 1696
diff changeset
55 if asbool(full_stack):
1534
72c3cea0175a fixes problem with basic auth and pushes
Marcin Kuzminski <marcin@python-works.com>
parents: 1496
diff changeset
56
2939
dbe3cfb81446 Added Errormator and Sentry support part of pull request #71
Marcin Kuzminski <marcin@python-works.com>
parents: 1982
diff changeset
57 from rhodecode.lib.middleware.sentry import Sentry
dbe3cfb81446 Added Errormator and Sentry support part of pull request #71
Marcin Kuzminski <marcin@python-works.com>
parents: 1982
diff changeset
58 from rhodecode.lib.middleware.errormator import Errormator
3511
e1568c0bac1f only use errormator if it's actually turned on in .ini file
Marcin Kuzminski <marcin@python-works.com>
parents: 3489
diff changeset
59 if Errormator and asbool(config['app_conf'].get('errormator')):
2939
dbe3cfb81446 Added Errormator and Sentry support part of pull request #71
Marcin Kuzminski <marcin@python-works.com>
parents: 1982
diff changeset
60 app = Errormator(app, config)
dbe3cfb81446 Added Errormator and Sentry support part of pull request #71
Marcin Kuzminski <marcin@python-works.com>
parents: 1982
diff changeset
61 elif Sentry:
dbe3cfb81446 Added Errormator and Sentry support part of pull request #71
Marcin Kuzminski <marcin@python-works.com>
parents: 1982
diff changeset
62 app = Sentry(app, config)
dbe3cfb81446 Added Errormator and Sentry support part of pull request #71
Marcin Kuzminski <marcin@python-works.com>
parents: 1982
diff changeset
63
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
64 # Handle Python exceptions
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
65 app = ErrorHandler(app, global_conf, **config['pylons.errorware'])
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
66
1696
2d85e969d78a overcomes git push issues with errormiddleware and debug off
Marcin Kuzminski <marcin@python-works.com>
parents: 1534
diff changeset
67 # we want our low level middleware to get to the request ASAP. We don't
2d85e969d78a overcomes git push issues with errormiddleware and debug off
Marcin Kuzminski <marcin@python-works.com>
parents: 1534
diff changeset
68 # need any pylons stack middleware in them
2d85e969d78a overcomes git push issues with errormiddleware and debug off
Marcin Kuzminski <marcin@python-works.com>
parents: 1534
diff changeset
69 app = SimpleHg(app, config)
2d85e969d78a overcomes git push issues with errormiddleware and debug off
Marcin Kuzminski <marcin@python-works.com>
parents: 1534
diff changeset
70 app = SimpleGit(app, config)
3489
d997a314d18a moved time measure of request to separate middleware for better results (the last one in stack)
Marcin Kuzminski <marcin@python-works.com>
parents: 2939
diff changeset
71 app = RequestWrapper(app, config)
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
72 # Display error documents for 401, 403, 404 status codes (and
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
73 # 500 when debug is disabled)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
74 if asbool(config['debug']):
86
e47d1db5ef20 Added few options to configs,
Marcin Kuzminski <marcin@python-blog.com>
parents: 49
diff changeset
75 app = StatusCodeRedirect(app)
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
76 else:
86
e47d1db5ef20 Added few options to configs,
Marcin Kuzminski <marcin@python-blog.com>
parents: 49
diff changeset
77 app = StatusCodeRedirect(app, [400, 401, 403, 404, 500])
635
fd63782c4426 Fixed age, for new vcs implementation. Removed all obsolete date formatters
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
78
216
c8162373f214 Cleaned the way based was used to generate submenu for admin, now it's much more clear to use submenu. Cleaned admin and added comment to middleware
Marcin Kuzminski <marcin@python-works.com>
parents: 207
diff changeset
79 #enable https redirets based on HTTP_X_URL_SCHEME set by proxy
914
110a00c181de Added force https option into config files
Marcin Kuzminski <marcin@python-works.com>
parents: 702
diff changeset
80 app = HttpsFixup(app, config)
635
fd63782c4426 Fixed age, for new vcs implementation. Removed all obsolete date formatters
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
81
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
82 # Establish the Registry for this application
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
83 app = RegistryManager(app)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
84
43
2e1247e62c5b changed for pylons 0.1 / 1.0
marcink
parents: 41
diff changeset
85 if asbool(static_files):
2e1247e62c5b changed for pylons 0.1 / 1.0
marcink
parents: 41
diff changeset
86 # Serve static files
2e1247e62c5b changed for pylons 0.1 / 1.0
marcink
parents: 41
diff changeset
87 static_app = StaticURLParser(config['pylons.paths']['static_files'])
2e1247e62c5b changed for pylons 0.1 / 1.0
marcink
parents: 41
diff changeset
88 app = Cascade([static_app, app])
702
a9158dfa05cc added gzip middleware
Marcin Kuzminski <marcin@python-works.com>
parents: 635
diff changeset
89 app = make_gzip_middleware(app, global_conf, compress_level=1)
635
fd63782c4426 Fixed age, for new vcs implementation. Removed all obsolete date formatters
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
90
269
183c06406127 fixed bug in middleware config
Marcin Kuzminski <marcin@python-works.com>
parents: 216
diff changeset
91 app.config = config
43
2e1247e62c5b changed for pylons 0.1 / 1.0
marcink
parents: 41
diff changeset
92
12
5f30a6d558dc Added pylons manage script
Marcin Kuzminski
parents: 10
diff changeset
93 return app