1
0
mirror of https://github.com/django/django.git synced 2025-06-04 02:59:13 +00:00

Minor style fixes.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@7820 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Gary Wilson Jr 2008-07-02 04:34:05 +00:00
parent 54d50ef5c8
commit 7e210f68a9

View File

@ -5,6 +5,7 @@ try:
from cStringIO import StringIO from cStringIO import StringIO
except ImportError: except ImportError:
from StringIO import StringIO from StringIO import StringIO
from django.conf import settings from django.conf import settings
from django.contrib.auth import authenticate, login from django.contrib.auth import authenticate, login
from django.core.handlers.base import BaseHandler from django.core.handlers.base import BaseHandler
@ -22,6 +23,7 @@ from django.utils.itercompat import is_iterable
BOUNDARY = 'BoUnDaRyStRiNg' BOUNDARY = 'BoUnDaRyStRiNg'
MULTIPART_CONTENT = 'multipart/form-data; boundary=%s' % BOUNDARY MULTIPART_CONTENT = 'multipart/form-data; boundary=%s' % BOUNDARY
class FakePayload(object): class FakePayload(object):
""" """
A wrapper around StringIO that restricts what can be read since data from A wrapper around StringIO that restricts what can be read since data from
@ -41,6 +43,7 @@ class FakePayload(object):
self.__len -= num_bytes self.__len -= num_bytes
return content return content
class ClientHandler(BaseHandler): class ClientHandler(BaseHandler):
""" """
A HTTP Handler that can be used for testing purposes. A HTTP Handler that can be used for testing purposes.
@ -61,7 +64,7 @@ class ClientHandler(BaseHandler):
request = WSGIRequest(environ) request = WSGIRequest(environ)
response = self.get_response(request) response = self.get_response(request)
# Apply response middleware # Apply response middleware.
for middleware_method in self._response_middleware: for middleware_method in self._response_middleware:
response = middleware_method(request, response) response = middleware_method(request, response)
response = self.apply_response_fixes(request, response) response = self.apply_response_fixes(request, response)
@ -71,14 +74,15 @@ class ClientHandler(BaseHandler):
return response return response
def store_rendered_templates(store, signal, sender, template, context): def store_rendered_templates(store, signal, sender, template, context):
"A utility function for storing templates and contexts that are rendered" """
Stores templates and contexts that are rendered.
"""
store.setdefault('template',[]).append(template) store.setdefault('template',[]).append(template)
store.setdefault('context',[]).append(context) store.setdefault('context',[]).append(context)
def encode_multipart(boundary, data): def encode_multipart(boundary, data):
""" """
A simple method for encoding multipart POST data from a dictionary of Encodes multipart POST data from a dictionary of form values.
form values.
The key will be used as the form data name; the value will be transmitted The key will be used as the form data name; the value will be transmitted
as content. If the value is a file, the contents of the file will be sent as content. If the value is a file, the contents of the file will be sent
@ -90,7 +94,8 @@ def encode_multipart(boundary, data):
if isinstance(value, file): if isinstance(value, file):
lines.extend([ lines.extend([
'--' + boundary, '--' + boundary,
'Content-Disposition: form-data; name="%s"; filename="%s"' % (to_str(key), to_str(os.path.basename(value.name))), 'Content-Disposition: form-data; name="%s"; filename="%s"' \
% (to_str(key), to_str(os.path.basename(value.name))),
'Content-Type: application/octet-stream', 'Content-Type: application/octet-stream',
'', '',
value.read() value.read()
@ -144,13 +149,14 @@ class Client:
def store_exc_info(self, *args, **kwargs): def store_exc_info(self, *args, **kwargs):
""" """
Utility method that can be used to store exceptions when they are Stores exceptions when they are generated by a view.
generated by a view.
""" """
self.exc_info = sys.exc_info() self.exc_info = sys.exc_info()
def _session(self): def _session(self):
"Obtain the current session variables" """
Obtains the current session variables.
"""
if 'django.contrib.sessions' in settings.INSTALLED_APPS: if 'django.contrib.sessions' in settings.INSTALLED_APPS:
engine = __import__(settings.SESSION_ENGINE, {}, {}, ['']) engine = __import__(settings.SESSION_ENGINE, {}, {}, [''])
cookie = self.cookies.get(settings.SESSION_COOKIE_NAME, None) cookie = self.cookies.get(settings.SESSION_COOKIE_NAME, None)
@ -166,7 +172,6 @@ class Client:
Assumes defaults for the query environment, which can be overridden Assumes defaults for the query environment, which can be overridden
using the arguments to the request. using the arguments to the request.
""" """
environ = { environ = {
'HTTP_COOKIE': self.cookies, 'HTTP_COOKIE': self.cookies,
'PATH_INFO': '/', 'PATH_INFO': '/',
@ -180,13 +185,13 @@ class Client:
environ.update(self.defaults) environ.update(self.defaults)
environ.update(request) environ.update(request)
# Curry a data dictionary into an instance of # Curry a data dictionary into an instance of the template renderer
# the template renderer callback function # callback function.
data = {} data = {}
on_template_render = curry(store_rendered_templates, data) on_template_render = curry(store_rendered_templates, data)
dispatcher.connect(on_template_render, signal=signals.template_rendered) dispatcher.connect(on_template_render, signal=signals.template_rendered)
# Capture exceptions created by the handler # Capture exceptions created by the handler.
dispatcher.connect(self.store_exc_info, signal=got_request_exception) dispatcher.connect(self.store_exc_info, signal=got_request_exception)
try: try:
@ -209,14 +214,14 @@ class Client:
exc_info = self.exc_info exc_info = self.exc_info
self.exc_info = None self.exc_info = None
raise exc_info[1], None, exc_info[2] raise exc_info[1], None, exc_info[2]
# Save the client and request that stimulated the response # Save the client and request that stimulated the response.
response.client = self response.client = self
response.request = request response.request = request
# Add any rendered template detail to the response # Add any rendered template detail to the response.
# If there was only one template rendered (the most likely case), # If there was only one template rendered (the most likely case),
# flatten the list to a single element # flatten the list to a single element.
for detail in ('template', 'context'): for detail in ('template', 'context'):
if data.get(detail): if data.get(detail):
if len(data[detail]) == 1: if len(data[detail]) == 1:
@ -226,14 +231,16 @@ class Client:
else: else:
setattr(response, detail, None) setattr(response, detail, None)
# Update persistent cookie data # Update persistent cookie data.
if response.cookies: if response.cookies:
self.cookies.update(response.cookies) self.cookies.update(response.cookies)
return response return response
def get(self, path, data={}, **extra): def get(self, path, data={}, **extra):
"Request a response from the server using GET." """
Requests a response from the server using GET.
"""
r = { r = {
'CONTENT_LENGTH': None, 'CONTENT_LENGTH': None,
'CONTENT_TYPE': 'text/html; charset=utf-8', 'CONTENT_TYPE': 'text/html; charset=utf-8',
@ -246,8 +253,9 @@ class Client:
return self.request(**r) return self.request(**r)
def post(self, path, data={}, content_type=MULTIPART_CONTENT, **extra): def post(self, path, data={}, content_type=MULTIPART_CONTENT, **extra):
"Request a response from the server using POST." """
Requests a response from the server using POST.
"""
if content_type is MULTIPART_CONTENT: if content_type is MULTIPART_CONTENT:
post_data = encode_multipart(BOUNDARY, data) post_data = encode_multipart(BOUNDARY, data)
else: else:
@ -265,22 +273,24 @@ class Client:
return self.request(**r) return self.request(**r)
def login(self, **credentials): def login(self, **credentials):
"""Set the Client to appear as if it has sucessfully logged into a site. """
Sets the Client to appear as if it has successfully logged into a site.
Returns True if login is possible; False if the provided credentials Returns True if login is possible; False if the provided credentials
are incorrect, or the user is inactive, or if the sessions framework is are incorrect, or the user is inactive, or if the sessions framework is
not available. not available.
""" """
user = authenticate(**credentials) user = authenticate(**credentials)
if user and user.is_active and 'django.contrib.sessions' in settings.INSTALLED_APPS: if user and user.is_active \
and 'django.contrib.sessions' in settings.INSTALLED_APPS:
engine = __import__(settings.SESSION_ENGINE, {}, {}, ['']) engine = __import__(settings.SESSION_ENGINE, {}, {}, [''])
# Create a fake request to store login details # Create a fake request to store login details.
request = HttpRequest() request = HttpRequest()
request.session = engine.SessionStore() request.session = engine.SessionStore()
login(request, user) login(request, user)
# Set the cookie to represent the session # Set the cookie to represent the session.
self.cookies[settings.SESSION_COOKIE_NAME] = request.session.session_key self.cookies[settings.SESSION_COOKIE_NAME] = request.session.session_key
self.cookies[settings.SESSION_COOKIE_NAME]['max-age'] = None self.cookies[settings.SESSION_COOKIE_NAME]['max-age'] = None
self.cookies[settings.SESSION_COOKIE_NAME]['path'] = '/' self.cookies[settings.SESSION_COOKIE_NAME]['path'] = '/'
@ -288,7 +298,7 @@ class Client:
self.cookies[settings.SESSION_COOKIE_NAME]['secure'] = settings.SESSION_COOKIE_SECURE or None self.cookies[settings.SESSION_COOKIE_NAME]['secure'] = settings.SESSION_COOKIE_SECURE or None
self.cookies[settings.SESSION_COOKIE_NAME]['expires'] = None self.cookies[settings.SESSION_COOKIE_NAME]['expires'] = None
# Save the session values # Save the session values.
request.session.save() request.session.save()
return True return True
@ -296,7 +306,8 @@ class Client:
return False return False
def logout(self): def logout(self):
"""Removes the authenticated user's cookies. """
Removes the authenticated user's cookies.
Causes the authenticated user to be logged out. Causes the authenticated user to be logged out.
""" """