author | Daniel Hans <Daniel.M.Hans@gmail.com> |
Tue, 10 Nov 2009 18:18:06 +0100 | |
changeset 3085 | ded7a67e7e0a |
parent 3031 | 7678f72140e6 |
permissions | -rwxr-xr-x |
109
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
1 |
#!/usr/bin/env python |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
2 |
# |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
3 |
# Copyright 2007 Google Inc. |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
4 |
# |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
5 |
# Licensed under the Apache License, Version 2.0 (the "License"); |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
6 |
# you may not use this file except in compliance with the License. |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
7 |
# You may obtain a copy of the License at |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
8 |
# |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
9 |
# http://www.apache.org/licenses/LICENSE-2.0 |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
10 |
# |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
11 |
# Unless required by applicable law or agreed to in writing, software |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
12 |
# distributed under the License is distributed on an "AS IS" BASIS, |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
13 |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
14 |
# See the License for the specific language governing permissions and |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
15 |
# limitations under the License. |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
16 |
# |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
17 |
|
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
18 |
"""Convience functions for the Webapp framework.""" |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
19 |
|
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
20 |
|
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
21 |
|
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
22 |
|
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
23 |
|
3031
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
24 |
__all__ = ['login_required', |
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
25 |
'run_wsgi_app', |
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
26 |
'add_wsgi_middleware', |
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
27 |
'run_bare_wsgi_app', |
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
28 |
] |
109
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
29 |
|
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
30 |
import os |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
31 |
import sys |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
32 |
import wsgiref.util |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
33 |
|
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
34 |
from google.appengine.api import users |
3031
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
35 |
from google.appengine.api import lib_config |
109
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
36 |
from google.appengine.ext import webapp |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
37 |
|
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
38 |
|
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
39 |
def login_required(handler_method): |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
40 |
"""A decorator to require that a user be logged in to access a handler. |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
41 |
|
686
df109be0567c
Load ../../google_appengine_1.1.7/ into
Sverre Rabbelier <srabbelier@gmail.com>
parents:
109
diff
changeset
|
42 |
To use it, decorate your get() method like this: |
109
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
43 |
|
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
44 |
@login_required |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
45 |
def get(self): |
1278
a7766286a7be
Load /Users/solydzajs/Downloads/google_appengine into
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
686
diff
changeset
|
46 |
user = users.get_current_user(self) |
109
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
47 |
self.response.out.write('Hello, ' + user.nickname()) |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
48 |
|
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
49 |
We will redirect to a login page if the user is not logged in. We always |
686
df109be0567c
Load ../../google_appengine_1.1.7/ into
Sverre Rabbelier <srabbelier@gmail.com>
parents:
109
diff
changeset
|
50 |
redirect to the request URI, and Google Accounts only redirects back as a GET |
df109be0567c
Load ../../google_appengine_1.1.7/ into
Sverre Rabbelier <srabbelier@gmail.com>
parents:
109
diff
changeset
|
51 |
request, so this should not be used for POSTs. |
109
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
52 |
""" |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
53 |
def check_login(self, *args): |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
54 |
if self.request.method != 'GET': |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
55 |
raise webapp.Error('The check_login decorator can only be used for GET ' |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
56 |
'requests') |
1278
a7766286a7be
Load /Users/solydzajs/Downloads/google_appengine into
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
686
diff
changeset
|
57 |
user = users.get_current_user() |
109
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
58 |
if not user: |
1278
a7766286a7be
Load /Users/solydzajs/Downloads/google_appengine into
Pawel Solyga <Pawel.Solyga@gmail.com>
parents:
686
diff
changeset
|
59 |
self.redirect(users.create_login_url(self.request.uri)) |
109
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
60 |
return |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
61 |
else: |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
62 |
handler_method(self, *args) |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
63 |
return check_login |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
64 |
|
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
65 |
|
3031
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
66 |
_config_handle = lib_config.register( |
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
67 |
'webapp', |
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
68 |
{'add_wsgi_middleware': lambda app: app}) |
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
69 |
|
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
70 |
|
109
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
71 |
def run_wsgi_app(application): |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
72 |
"""Runs your WSGI-compliant application object in a CGI environment. |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
73 |
|
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
74 |
Compared to wsgiref.handlers.CGIHandler().run(application), this |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
75 |
function takes some shortcuts. Those are possible because the |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
76 |
app server makes stronger promises than the CGI standard. |
3031
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
77 |
|
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
78 |
Also, this function may wrap custom WSGI middleware around the |
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
79 |
application. (You can use run_bare_wsgi_app() to run an application |
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
80 |
without adding WSGI middleware, and add_wsgi_middleware() to wrap |
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
81 |
the configured WSGI middleware around an application without running |
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
82 |
it. This function is merely a convenient combination of the latter |
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
83 |
two.) |
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
84 |
|
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
85 |
To configure custom WSGI middleware, define a function |
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
86 |
webapp_add_wsgi_middleware(app) to your appengine_config.py file in |
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
87 |
your application root directory: |
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
88 |
|
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
89 |
def webapp_add_wsgi_middleware(app): |
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
90 |
app = MiddleWareClassOne(app) |
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
91 |
app = MiddleWareClassTwo(app) |
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
92 |
return app |
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
93 |
|
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
94 |
You must import the middleware classes elsewhere in the file. If |
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
95 |
the function is not found, no WSGI middleware is added. |
109
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
96 |
""" |
3031
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
97 |
run_bare_wsgi_app(add_wsgi_middleware(application)) |
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
98 |
|
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
99 |
|
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
100 |
def add_wsgi_middleware(application): |
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
101 |
"""Wrap WSGI middleware around a WSGI application object.""" |
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
102 |
return _config_handle.add_wsgi_middleware(application) |
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
103 |
|
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
104 |
|
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
105 |
def run_bare_wsgi_app(application): |
7678f72140e6
Update Google App Engine from 1.2.5 to 1.2.7 in thirdparty folder.
Sverre Rabbelier <srabbelier@gmail.com>
parents:
1278
diff
changeset
|
106 |
"""Like run_wsgi_app() but doesn't add WSGI middleware.""" |
109
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
107 |
env = dict(os.environ) |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
108 |
env["wsgi.input"] = sys.stdin |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
109 |
env["wsgi.errors"] = sys.stderr |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
110 |
env["wsgi.version"] = (1, 0) |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
111 |
env["wsgi.run_once"] = True |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
112 |
env["wsgi.url_scheme"] = wsgiref.util.guess_scheme(env) |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
113 |
env["wsgi.multithread"] = False |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
114 |
env["wsgi.multiprocess"] = False |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
115 |
result = application(env, _start_response) |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
116 |
if result is not None: |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
117 |
for data in result: |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
118 |
sys.stdout.write(data) |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
119 |
|
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
120 |
|
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
121 |
def _start_response(status, headers, exc_info=None): |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
122 |
"""A start_response() callable as specified by PEP 333""" |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
123 |
if exc_info is not None: |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
124 |
raise exc_info[0], exc_info[1], exc_info[2] |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
125 |
print "Status: %s" % status |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
126 |
for name, val in headers: |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
127 |
print "%s: %s" % (name, val) |
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
128 |
|
620f9b141567
Load ../../google_appengine into trunk/thirdparty/google_appengine.
Todd Larsen <tlarsen@google.com>
parents:
diff
changeset
|
129 |
return sys.stdout.write |