annotate simpypi/wsgi.py @ 18:90777e79ea13

fix up factory (i hope)
author Jeff Hammel <jhammel@mozilla.com>
date Tue, 28 Feb 2012 15:47:05 -0800
parents 7f426a77e192
children ab52f46a3682
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
1 """
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
2 request dispatcher:
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
3 data persisting across requests should go here
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
4 """
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
5
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
6 import os
10
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
7 #from handlers import Index
2
b03602153de2 removing more cruft
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
8 from webob import Request, Response, exc
0
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
9
2
b03602153de2 removing more cruft
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
10 here = os.path.dirname(os.path.abspath(__file__))
0
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
11
18
90777e79ea13 fix up factory (i hope)
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
12 class SimPyPI(object):
0
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
13
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
14 ### class level variables
18
90777e79ea13 fix up factory (i hope)
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
15 # XXX unneeded for now
90777e79ea13 fix up factory (i hope)
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
16 # defaults = {'auto_reload': 'False',
90777e79ea13 fix up factory (i hope)
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
17 # 'template_dirs': '',
90777e79ea13 fix up factory (i hope)
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
18 # }
0
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
19
12
1cdb25cef7ee print helpful message when running test app
Jeff Hammel <jhammel@mozilla.com>
parents: 11
diff changeset
20 def __init__(self, directory, index=None):
2
b03602153de2 removing more cruft
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
21
b03602153de2 removing more cruft
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
22 self.directory = directory
b03602153de2 removing more cruft
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
23 assert os.path.exists(directory)
0
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
24
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
25 # set instance parameters from kw and defaults
2
b03602153de2 removing more cruft
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
26 # XXX unneeded for now
b03602153de2 removing more cruft
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
27 # for key in self.defaults:
b03602153de2 removing more cruft
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
28 # setattr(self, key, kw.get(key, self.defaults[key]))
b03602153de2 removing more cruft
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
29 # self.auto_reload = self.auto_reload.lower() == 'true'
0
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
30
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
31 # request handlers
10
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
32 self.handlers = dict([(method, getattr(self, method))
11
Jeff Hammel <jhammel@mozilla.com>
parents: 10
diff changeset
33 for method in ('GET', 'POST')])
10
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
34 # XXX unneeded for now
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
35 # self.handlers = [ Index ]
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
36
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
37 # cache index HTML
12
1cdb25cef7ee print helpful message when running test app
Jeff Hammel <jhammel@mozilla.com>
parents: 11
diff changeset
38 self.index = index or os.path.join(here, 'templates', 'index.html')
10
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
39 assert os.path.exists(self.index)
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
40 self.index = file(self.index).read()
0
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
41
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
42 # template directories
2
b03602153de2 removing more cruft
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
43 # self.template_dirs = self.template_dirs.split()
10
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
44 # self.template_dirs = [os.path.join(here, 'templates')]
0
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
45
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
46 def __call__(self, environ, start_response):
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
47
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
48 # get a request object
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
49 request = Request(environ)
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
50
2
b03602153de2 removing more cruft
Jeff Hammel <jhammel@mozilla.com>
parents: 0
diff changeset
51 # get the path
10
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
52 # path = request.path_info.strip('/').split('/')
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
53 # if path == ['']:
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
54 # path = []
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
55 # request.environ['path'] = path
0
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
56
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
57 # match the request to a handler
10
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
58 handler = self.handlers.get(request.method)
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
59 if handler:
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
60 res = handler(request)
0
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
61 else:
10
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
62 res = exc.HTTPNotFound()
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
63 # for h in self.handlers:
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
64 # handler = h.match(self, request)
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
65 # if handler is not None:
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
66 # break
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
67 # else:
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
68 # handler = exc.HTTPNotFound
0
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
69
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
70 # get response
10
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
71 # res = handler()
0
93e830409685 initial stub commit
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
72 return res(environ, start_response)
10
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
73
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
74 def GET(self, request):
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
75 return Response(body=self.index, content_type='text/html')
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
76
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
77 def POST(self, request):
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
78 """handle posting a package"""
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
79
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
80 # get the package
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
81 package = self.request.POST.get('package')
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
82
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
83 # redirect to the main page
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
84 # TODO
3e8597489ea3 start moving this to a single file
Jeff Hammel <jhammel@mozilla.com>
parents: 2
diff changeset
85 # self.redirect(self.link(self.handler_path))