Package cherrypy :: Package lib :: Module cptools
[hide private]
[frames] | no frames]

Module cptools

source code

Functions for builtin CherryPy tools.

Classes [hide private]
  SessionAuth
Assert that the user is logged in.
Functions [hide private]
 
validate_etags(autotags=False)
Validate the current ETag against If-Match, If-None-Match headers.
source code
 
validate_since()
Validate the current Last-Modified against If-Modified-Since headers.
source code
 
proxy(base=None, local='X-Forwarded-Host', remote='X-Forwarded-For', scheme='X-Forwarded-Proto')
Change the base URL (scheme://host[:port][/path]).
source code
 
ignore_headers(headers=('Range'))
Delete request headers whose field names are included in 'headers'.
source code
 
response_headers(headers=None)
Set headers on the response.
source code
 
referer(pattern, accept=True, accept_missing=False, error=403, message='Forbidden Referer header.')
Raise HTTPError if Referer header does/does not match the given pattern.
source code
 
session_auth(**kwargs)
Session authentication hook.
source code
 
log_traceback(severity=10)
Write the last error's traceback to the cherrypy error log.
source code
 
log_request_headers()
Write request headers to the cherrypy error log.
source code
 
log_hooks()
Write request.hooks to the cherrypy error log.
source code
 
redirect(url='', internal=True)
Raise InternalRedirect or HTTPRedirect to the given url.
source code
 
trailing_slash(missing=True, extra=False)
Redirect if path_info has (missing|extra) trailing slash.
source code
 
flatten()
Wrap response.body in a generator that recursively iterates over body.
source code
 
accept(media=None)
Return the client's preferred media-type (from the given Content-Types).
source code
Variables [hide private]
  __package__ = 'cherrypy.lib'
  k = 'session_key'
Function Details [hide private]

validate_etags(autotags=False)

source code 

Validate the current ETag against If-Match, If-None-Match headers.

If autotags is True, an ETag response-header value will be provided from an MD5 hash of the response body (unless some other code has already provided an ETag header). If False (the default), the ETag will not be automatic.

WARNING: the autotags feature is not designed for URL's which allow methods other than GET. For example, if a POST to the same URL returns no content, the automatic ETag will be incorrect, breaking a fundamental use for entity tags in a possibly destructive fashion. Likewise, if you raise 304 Not Modified, the response body will be empty, the ETag hash will be incorrect, and your application will break. See http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.24

validate_since()

source code 

Validate the current Last-Modified against If-Modified-Since headers.

If no code has set the Last-Modified response header, then no validation will be performed.

proxy(base=None, local='X-Forwarded-Host', remote='X-Forwarded-For', scheme='X-Forwarded-Proto')

source code 

Change the base URL (scheme://host[:port][/path]).

For running a CP server behind Apache, lighttpd, or other HTTP server.

If you want the new request.base to include path info (not just the host), you must explicitly set base to the full base path, and ALSO set 'local' to '', so that the X-Forwarded-Host request header (which never includes path info) does not override it.

cherrypy.request.remote.ip (the IP address of the client) will be rewritten if the header specified by the 'remote' arg is valid. By default, 'remote' is set to 'X-Forwarded-For'. If you do not want to rewrite remote.ip, set the 'remote' arg to an empty string.

ignore_headers(headers=('Range'))

source code 

Delete request headers whose field names are included in 'headers'.

This is a useful tool for working behind certain HTTP servers; for example, Apache duplicates the work that CP does for 'Range' headers, and will doubly-truncate the response.

referer(pattern, accept=True, accept_missing=False, error=403, message='Forbidden Referer header.')

source code 
Raise HTTPError if Referer header does/does not match the given pattern.

pattern: a regular expression pattern to test against the Referer.
accept: if True, the Referer must match the pattern; if False,
    the Referer must NOT match the pattern.
accept_missing: if True, permit requests with no Referer header.
error: the HTTP error code to return to the client on failure.
message: a string to include in the response body on failure.

session_auth(**kwargs)

source code 

Session authentication hook.

Any attribute of the SessionAuth class may be overridden via a keyword arg to this function:

anonymous: instancemethod check_username_and_password: instancemethod do_check: instancemethod do_login: instancemethod do_logout: instancemethod login_screen: instancemethod on_check: instancemethod on_login: instancemethod on_logout: instancemethod run: instancemethod session_key: str

flatten()

source code 

Wrap response.body in a generator that recursively iterates over body.

This allows cherrypy.response.body to consist of 'nested generators'; that is, a set of generators that yield generators.

accept(media=None)

source code 

Return the client's preferred media-type (from the given Content-Types).

If 'media' is None (the default), no test will be performed.

If 'media' is provided, it should be the Content-Type value (as a string) or values (as a list or tuple of strings) which the current request can emit. The client's acceptable media ranges (as declared in the Accept request header) will be matched in order to these Content-Type values; the first such string is returned. That is, the return value will always be one of the strings provided in the 'media' arg (or None if 'media' is None).

If no match is found, then HTTPError 406 (Not Acceptable) is raised. Note that most web browsers send */* as a (low-quality) acceptable media range, which should match any Content-Type. In addition, "...if no Accept header field is present, then it is assumed that the client accepts all media types."

Matching types are checked in order of client preference first, and then in the order of the given 'media' values.

Note that this function does not honor accept-params (other than "q").