annotate uploader/dispatcher.py @ 1:a02c4fcd7001

* optionally require auth * give a real version
author k0s <k0scist@gmail.com>
date Sun, 27 Dec 2009 13:29:27 -0500
parents 827f7577f940
children 0b5fce452087
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
827f7577f940 initial commit of file upload widget
k0s <k0scist@gmail.com>
parents:
diff changeset
1 """
827f7577f940 initial commit of file upload widget
k0s <k0scist@gmail.com>
parents:
diff changeset
2 request dispatcher
827f7577f940 initial commit of file upload widget
k0s <k0scist@gmail.com>
parents:
diff changeset
3 """
827f7577f940 initial commit of file upload widget
k0s <k0scist@gmail.com>
parents:
diff changeset
4
827f7577f940 initial commit of file upload widget
k0s <k0scist@gmail.com>
parents:
diff changeset
5 import os
827f7577f940 initial commit of file upload widget
k0s <k0scist@gmail.com>
parents:
diff changeset
6 from handlers import Get, Post
827f7577f940 initial commit of file upload widget
k0s <k0scist@gmail.com>
parents:
diff changeset
7 from webob import Request, exc
827f7577f940 initial commit of file upload widget
k0s <k0scist@gmail.com>
parents:
diff changeset
8
827f7577f940 initial commit of file upload widget
k0s <k0scist@gmail.com>
parents:
diff changeset
9 class Dispatcher(object):
827f7577f940 initial commit of file upload widget
k0s <k0scist@gmail.com>
parents:
diff changeset
10
827f7577f940 initial commit of file upload widget
k0s <k0scist@gmail.com>
parents:
diff changeset
11 ### class level variables
1
a02c4fcd7001 * optionally require auth
k0s <k0scist@gmail.com>
parents: 0
diff changeset
12 defaults = { 'directory': None,
a02c4fcd7001 * optionally require auth
k0s <k0scist@gmail.com>
parents: 0
diff changeset
13 'auth': 'False' }
0
827f7577f940 initial commit of file upload widget
k0s <k0scist@gmail.com>
parents:
diff changeset
14
827f7577f940 initial commit of file upload widget
k0s <k0scist@gmail.com>
parents:
diff changeset
15 def __init__(self, **kw):
827f7577f940 initial commit of file upload widget
k0s <k0scist@gmail.com>
parents:
diff changeset
16 for key in self.defaults:
827f7577f940 initial commit of file upload widget
k0s <k0scist@gmail.com>
parents:
diff changeset
17 setattr(self, key, kw.get(key, self.defaults[key]))
827f7577f940 initial commit of file upload widget
k0s <k0scist@gmail.com>
parents:
diff changeset
18 self.handlers = [ Get, Post ]
827f7577f940 initial commit of file upload widget
k0s <k0scist@gmail.com>
parents:
diff changeset
19 assert os.path.exists(self.directory)
1
a02c4fcd7001 * optionally require auth
k0s <k0scist@gmail.com>
parents: 0
diff changeset
20 self.auth = self.auth.lower() == 'true'
0
827f7577f940 initial commit of file upload widget
k0s <k0scist@gmail.com>
parents:
diff changeset
21
827f7577f940 initial commit of file upload widget
k0s <k0scist@gmail.com>
parents:
diff changeset
22 ### methods dealing with HTTP
827f7577f940 initial commit of file upload widget
k0s <k0scist@gmail.com>
parents:
diff changeset
23 def __call__(self, environ, start_response):
827f7577f940 initial commit of file upload widget
k0s <k0scist@gmail.com>
parents:
diff changeset
24 request = Request(environ)
1
a02c4fcd7001 * optionally require auth
k0s <k0scist@gmail.com>
parents: 0
diff changeset
25 if self.auth and not request.remote_user:
a02c4fcd7001 * optionally require auth
k0s <k0scist@gmail.com>
parents: 0
diff changeset
26 return exc.HTTPUnauthorized()(environ, start_response)
0
827f7577f940 initial commit of file upload widget
k0s <k0scist@gmail.com>
parents:
diff changeset
27 for h in self.handlers:
827f7577f940 initial commit of file upload widget
k0s <k0scist@gmail.com>
parents:
diff changeset
28 if h.match(request):
827f7577f940 initial commit of file upload widget
k0s <k0scist@gmail.com>
parents:
diff changeset
29 handler = h(self, request)
827f7577f940 initial commit of file upload widget
k0s <k0scist@gmail.com>
parents:
diff changeset
30 break
827f7577f940 initial commit of file upload widget
k0s <k0scist@gmail.com>
parents:
diff changeset
31 else:
827f7577f940 initial commit of file upload widget
k0s <k0scist@gmail.com>
parents:
diff changeset
32 handler = exc.HTTPNotFound
827f7577f940 initial commit of file upload widget
k0s <k0scist@gmail.com>
parents:
diff changeset
33 res = handler()
827f7577f940 initial commit of file upload widget
k0s <k0scist@gmail.com>
parents:
diff changeset
34 return res(environ, start_response)