annotate pylons_app/config/middleware.py @ 41:71ffa932799d

Added app basic auth. Changed few deprecations for new pylons. added sqlite logging for user actions.
author Marcin Kuzminski <marcin@python-blog.com>
date Wed, 07 Apr 2010 00:51:55 +0200
parents 2963f2894a7a
children 2e1247e62c5b
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"""
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2 from beaker.middleware import CacheMiddleware, SessionMiddleware
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3 from paste.cascade import Cascade
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4 from paste.registry import RegistryManager
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5 from paste.urlparser import StaticURLParser
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6 from paste.deploy.converters import asbool
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7 from pylons import config
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8 from pylons.middleware import ErrorHandler, StatusCodeRedirect
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9 from pylons.wsgiapp import PylonsApp
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
10 from routes.middleware import RoutesMiddleware
41
71ffa932799d Added app basic auth.
Marcin Kuzminski <marcin@python-blog.com>
parents: 31
diff changeset
11 from paste.auth.basic import AuthBasicHandler
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
12 from pylons_app.config.environment import load_environment
41
71ffa932799d Added app basic auth.
Marcin Kuzminski <marcin@python-blog.com>
parents: 31
diff changeset
13 from pylons_app.lib.auth import authfunc
12
5f30a6d558dc Added pylons manage script
Marcin Kuzminski
parents: 10
diff changeset
14
31
2963f2894a7a Tempalting change, bugfix for serving raw files, and diffs. Now raw files are not parsed thruough mako, and diffs are mako safe (not parsed also)
Marcin Kuzminski <marcin@python-blog.com>
parents: 21
diff changeset
15 def make_app(global_conf, full_stack=True, **app_conf):
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
16 """Create a Pylons WSGI application and return it
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
17
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
18 ``global_conf``
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
19 The inherited configuration for this application. Normally from
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
20 the [DEFAULT] section of the Paste ini file.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
21
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
22 ``full_stack``
12
5f30a6d558dc Added pylons manage script
Marcin Kuzminski
parents: 10
diff changeset
23 Whether or not this application provides a full WSGI stack (by
5f30a6d558dc Added pylons manage script
Marcin Kuzminski
parents: 10
diff changeset
24 default, meaning it handles its own exceptions and errors).
5f30a6d558dc Added pylons manage script
Marcin Kuzminski
parents: 10
diff changeset
25 Disable full_stack when this application is "managed" by
5f30a6d558dc Added pylons manage script
Marcin Kuzminski
parents: 10
diff changeset
26 another WSGI middleware.
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
27
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
28 ``app_conf``
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
29 The application's local configuration. Normally specified in
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
30 the [app:<name>] section of the Paste ini file (where <name>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
31 defaults to main).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
32
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
33 """
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
34 # Configure the Pylons environment
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
35 load_environment(global_conf, app_conf)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
36
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
37 # The Pylons WSGI app
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
38 app = PylonsApp()
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
39
12
5f30a6d558dc Added pylons manage script
Marcin Kuzminski
parents: 10
diff changeset
40 # CUSTOM MIDDLEWARE HERE (filtered by error handling middlewares)
5f30a6d558dc Added pylons manage script
Marcin Kuzminski
parents: 10
diff changeset
41
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
42 # Routing/Session/Cache Middleware
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
43 app = RoutesMiddleware(app, config['routes.map'])
21
fac1f62a1d71 Wrapped into mako templates,
Marcin Kuzminski
parents: 17
diff changeset
44 app = SessionMiddleware(app, config)
fac1f62a1d71 Wrapped into mako templates,
Marcin Kuzminski
parents: 17
diff changeset
45 app = CacheMiddleware(app, config)
41
71ffa932799d Added app basic auth.
Marcin Kuzminski <marcin@python-blog.com>
parents: 31
diff changeset
46 app = AuthBasicHandler(app, config['repos_name'] + ' mercurial repository', authfunc)
71ffa932799d Added app basic auth.
Marcin Kuzminski <marcin@python-blog.com>
parents: 31
diff changeset
47
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
48 if asbool(full_stack):
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
49 # Handle Python exceptions
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
50 app = ErrorHandler(app, global_conf, **config['pylons.errorware'])
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
51
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
52 # Display error documents for 401, 403, 404 status codes (and
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
53 # 500 when debug is disabled)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
54 if asbool(config['debug']):
14
923f0e6ab010 change error controller,
Marcin Kuzminski
parents: 12
diff changeset
55 #don't handle 404, since mercurial does it for us.
923f0e6ab010 change error controller,
Marcin Kuzminski
parents: 12
diff changeset
56 app = StatusCodeRedirect(app, [400, 401, 403, 500])
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
57 else:
14
923f0e6ab010 change error controller,
Marcin Kuzminski
parents: 12
diff changeset
58 app = StatusCodeRedirect(app, [400, 401, 403, 500])
41
71ffa932799d Added app basic auth.
Marcin Kuzminski <marcin@python-blog.com>
parents: 31
diff changeset
59
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
60 # Establish the Registry for this application
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
61 app = RegistryManager(app)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
62
12
5f30a6d558dc Added pylons manage script
Marcin Kuzminski
parents: 10
diff changeset
63 # Static files (If running in production, and Apache or another web
5f30a6d558dc Added pylons manage script
Marcin Kuzminski
parents: 10
diff changeset
64 # server is handling this static content, remove the following 3 lines)
5f30a6d558dc Added pylons manage script
Marcin Kuzminski
parents: 10
diff changeset
65 static_app = StaticURLParser(config['pylons.paths']['static_files'])
5f30a6d558dc Added pylons manage script
Marcin Kuzminski
parents: 10
diff changeset
66 app = Cascade([static_app, app])
5f30a6d558dc Added pylons manage script
Marcin Kuzminski
parents: 10
diff changeset
67 return app
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
68