[Zope-Checkins] CVS: Zope/lib/python/ZPublisher - BaseRequest.py:1.49 BaseResponse.py:1.16 BeforeTraverse.py:1.10 Client.py:1.45 Converters.py:1.18 HTTPRangeSupport.py:1.7 HTTPRequest.py:1.79 HTTPResponse.py:1.68 Publish.py:1.157 Request.py:1.10 Response.py:1.51 TaintedString.py:1.2 Test.py:1.40 __init__.py:1.12 cgi_hotfix.py:1.3 mapply.py:1.6 maybe_lock.py:1.4 xmlrpc.py:1.12
Martijn Pieters
mj@zope.com
Wed, 14 Aug 2002 18:09:41 -0400
Update of /cvs-repository/Zope/lib/python/ZPublisher
In directory cvs.zope.org:/tmp/cvs-serv20811
Modified Files:
BaseRequest.py BaseResponse.py BeforeTraverse.py Client.py
Converters.py HTTPRangeSupport.py HTTPRequest.py
HTTPResponse.py Publish.py Request.py Response.py
TaintedString.py Test.py __init__.py cgi_hotfix.py mapply.py
maybe_lock.py xmlrpc.py
Log Message:
Clean up indentation and trailing whitespace.
=== Zope/lib/python/ZPublisher/BaseRequest.py 1.48 => 1.49 ===
--- Zope/lib/python/ZPublisher/BaseRequest.py:1.48 Tue Jul 16 09:01:48 2002
+++ Zope/lib/python/ZPublisher/BaseRequest.py Wed Aug 14 18:09:39 2002
@@ -1,14 +1,14 @@
##############################################################################
#
# Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE
-#
+#
##############################################################################
__version__='$Revision$'[11:-2]
@@ -25,7 +25,7 @@
def manage_property_types(self):
return type_converters.keys()
-
+
except:
class RequestContainer:
__roles__=None
@@ -35,7 +35,7 @@
_marker=[]
class BaseRequest:
"""Provide basic ZPublisher request management
-
+
This object provides access to request data. Request data may
vary depending on the protocol used.
@@ -60,7 +60,7 @@
# Allow (reluctantly) access to unprotected attributes
__allow_access_to_unprotected_subobjects__=1
-
+
def __init__(self, other=None, **kw):
"""The constructor is not allowed to raise errors
"""
@@ -95,8 +95,8 @@
Return a value for the required variable name.
The value will be looked up from one of the request data
categories. The search order is environment variables,
- other variables, form data, and then cookies.
-
+ other variables, form data, and then cookies.
+
"""
if key=='REQUEST': return self
@@ -117,7 +117,7 @@
v=self._file
self.other[key]=v
return v
-
+
return default
def __getitem__(self, key, default=_marker):
@@ -185,17 +185,17 @@
# Make sure that certain things that dont make sense
# cannot be traversed.
if item in ('REQUEST', 'aq_self', 'aq_base'):
- return response.notFoundError(path)
+ return response.notFoundError(path)
if not item or item=='.':
continue
elif item == '..':
del clean[-1]
else: clean.append(item)
path=clean
-
+
# How did this request come in? (HTTP GET, PUT, POST, etc.)
method=req_method=request_get('REQUEST_METHOD', 'GET').upper()
-
+
if method=='GET' or method=='POST':
# Probably a browser
no_acquire_flag=0
@@ -208,26 +208,26 @@
else:
no_acquire_flag=0
- URL=request['URL']
+ URL=request['URL']
parents=request['PARENTS']
object=parents[-1]
del parents[:]
roles = getattr(object, '__roles__', UNSPECIFIED_ROLES)
-
+
# if the top object has a __bobo_traverse__ method, then use it
# to possibly traverse to an alternate top-level object.
if hasattr(object,'__bobo_traverse__'):
try:
object=object.__bobo_traverse__(request)
roles =getattr(object, '__roles__', UNSPECIFIED_ROLES)
- except: pass
+ except: pass
if not path and not method:
return response.forbiddenError(self['URL'])
# Traverse the URL to find the object:
- if hasattr(object, '__of__'):
+ if hasattr(object, '__of__'):
# Try to bind the top-level object to the request
# This is how you get 'self.REQUEST'
object=object.__of__(RequestContainer(REQUEST=request))
@@ -292,7 +292,7 @@
return response.debugError(
"Object name begins with an underscore at: %s" % URL)
else: return response.forbiddenError(entry_name)
-
+
if hasattr(object,'__bobo_traverse__'):
subobject=object.__bobo_traverse__(request,entry_name)
if type(subobject) is type(()) and len(subobject) > 1:
@@ -311,7 +311,7 @@
# an object 'test' existed above it in the
# heirarchy -- you'd always get the
# existing object :(
-
+
if (no_acquire_flag and len(path) == 0 and
hasattr(object, 'aq_base')):
if hasattr(object.aq_base, entry_name):
@@ -325,7 +325,7 @@
TypeError, AttributeError):
if debug_mode:
return response.debugError(
- "Cannot locate object at: %s" % URL)
+ "Cannot locate object at: %s" % URL)
else:
return response.notFoundError(URL)
@@ -409,7 +409,7 @@
while user is None and i < last_parent_index:
parent=parents[i]
i=i+1
- if hasattr(parent, '__allow_groups__'):
+ if hasattr(parent, '__allow_groups__'):
groups=parent.__allow_groups__
else: continue
if hasattr(groups,'validate'): v=groups.validate
@@ -429,7 +429,7 @@
# Remove http request method from the URL.
request['URL']=URL
-
+
return object
retry_count=0
@@ -488,4 +488,3 @@
"""<strong>You are not authorized to access this resource""")
return None
-
=== Zope/lib/python/ZPublisher/BaseResponse.py 1.15 => 1.16 ===
--- Zope/lib/python/ZPublisher/BaseResponse.py:1.15 Wed Aug 14 12:45:53 2002
+++ Zope/lib/python/ZPublisher/BaseResponse.py Wed Aug 14 18:09:40 2002
@@ -1,14 +1,14 @@
##############################################################################
#
# Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE
-#
+#
##############################################################################
'''CGI Response Output formatter
@@ -28,10 +28,10 @@
debug_mode = None
_auth = None
_error_format = 'text/plain'
-
+
# Allow (reluctantly) access to unprotected attributes
__allow_access_to_unprotected_subobjects__ = 1
-
+
def __init__(self, stdout, stderr,
body='', headers=None, status=None, cookies=None):
self.stdout = stdout
@@ -44,7 +44,7 @@
if cookies is None:
cookies = {}
self.cookies = cookies
-
+
def setStatus(self, status, reason=None):
self.status = status
@@ -90,13 +90,13 @@
self.setBody(self.getBody() + body)
def getHeader(self, name):
- '''\
- Get a header value
-
- Returns the value associated with a HTTP return header, or
- "None" if no such header has been set in the response
- yet. '''
- return self.headers.get(name, None)
+ '''\
+ Get a header value
+
+ Returns the value associated with a HTTP return header, or
+ "None" if no such header has been set in the response
+ yet. '''
+ return self.headers.get(name, None)
def __getitem__(self, name):
'Get the value of an output header'
@@ -127,7 +127,7 @@
cookies on the response object.
Note that published objects must not generate any errors
- after beginning stream-oriented output.
+ after beginning stream-oriented output.
"""
self.body = self.body+data
=== Zope/lib/python/ZPublisher/BeforeTraverse.py 1.9 => 1.10 ===
--- Zope/lib/python/ZPublisher/BeforeTraverse.py:1.9 Wed Aug 14 10:28:32 2002
+++ Zope/lib/python/ZPublisher/BeforeTraverse.py Wed Aug 14 18:09:40 2002
@@ -1,14 +1,14 @@
##############################################################################
#
# Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE
-#
+#
##############################################################################
__version__='$Revision$'[11:-2]
@@ -73,7 +73,7 @@
bpth = bpth._prior
bpth = MultiHook(hookname, bpth, dic)
setattr(container, hookname, bpth)
-
+
keys = btr.keys()
keys.sort()
for key in keys:
=== Zope/lib/python/ZPublisher/Client.py 1.44 => 1.45 ===
--- Zope/lib/python/ZPublisher/Client.py:1.44 Wed Jan 2 10:56:04 2002
+++ Zope/lib/python/ZPublisher/Client.py Wed Aug 14 18:09:40 2002
@@ -6,19 +6,19 @@
##############################################################################
#
# Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE
-#
+#
##############################################################################
"""Bobo call interface
-This module provides tools for accessing web objects as if they were
-functions or objects with methods. It also provides a simple call function
+This module provides tools for accessing web objects as if they were
+functions or objects with methods. It also provides a simple call function
that allows one to simply make a single web request.
Function -- Function-like objects that return both header and body
@@ -62,7 +62,7 @@
self.func_name=url[url.rfind('/')+1:]
self.__dict__['__name__']=self.func_name
self.func_defaults=()
-
+
self.args=arguments
if method is not None: self.method=method
@@ -107,7 +107,7 @@
if not method or method=='POST':
for v in kw.values():
if hasattr(v,'read'): return self._mp_call(kw)
-
+
can_marshal=type2marshal.has_key
for k,v in kw.items():
t=type(v)
@@ -134,9 +134,9 @@
headers['Authorization']=(
"Basic %s" %
encodestring('%s:%s' % (self.username,self.password)).replace(
- '\012','')
+ '\012','')
)
-
+
try:
h=HTTP()
h.connect(self.host, self.port)
@@ -168,9 +168,9 @@
elif ec == 503: t=NotAvailable
else: t=ServerError
raise t, RemoteException(t,v,f,l,self.url,query,ec,em,response)
-
-
+
+
def _mp_call(self,kw,
type2suffix={
@@ -200,7 +200,7 @@
c=encodestring('%s:%s' % (self.username,self.password)).replace('\012','')
rq.append('Authorization: Basic %s' % c)
rq.append(MultiPart(d).render())
- rq='\r\n'.join(rq)
+ rq='\r\n'.join(rq)
try:
sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
@@ -222,11 +222,11 @@
headers=mimetools.Message(reply,0)
response=reply.read()
finally:
- if 0:
- raise NotAvailable, (
- RemoteException(NotAvailable,sys.exc_info()[1],
- self.url,'<MultiPart Form>'))
-
+ if 0:
+ raise NotAvailable, (
+ RemoteException(NotAvailable,sys.exc_info()[1],
+ self.url,'<MultiPart Form>'))
+
if ec==200: return (headers,response)
self.handleError('', ec, em, headers, response)
@@ -270,7 +270,7 @@
return f
def call(url,username=None, password=None, **kw):
-
+
return apply(Function(url,username=username, password=password), (), kw)
##############################################################################
@@ -295,12 +295,12 @@
if t is lt or t is tt:
raise TypeError, 'Invalid recursion in data to be marshaled.'
r.append(marshal_whatever("%s:%s" % (n,tname) ,v))
-
+
return '&'.join(r)
def marshal_tuple(n,l):
return marshal_list(n,l,'tuple')
-
+
type2marshal={
type(1.0): marshal_float,
type(1): marshal_int,
@@ -549,7 +549,7 @@
except:
print usage
sys.exit(1)
-
+
# The "main" program for this module
f=Function(url)
if user: f.username, f.password = user, pw
=== Zope/lib/python/ZPublisher/Converters.py 1.17 => 1.18 ===
--- Zope/lib/python/ZPublisher/Converters.py:1.17 Thu Aug 1 12:00:41 2002
+++ Zope/lib/python/ZPublisher/Converters.py Wed Aug 14 18:09:40 2002
@@ -1,14 +1,14 @@
##############################################################################
#
# Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE
-#
+#
##############################################################################
__version__='$Revision$'[11:-2]
@@ -20,7 +20,7 @@
if hasattr(v,'read'): return v.read()
elif isinstance(v,UnicodeType) :
return v.encode('latin1')
- else:
+ else:
return str(v)
def field2text(v, nl=re.compile('\r\n|\n\r').search):
@@ -38,7 +38,7 @@
else: l=mo.start(0)
r.append(v[s:])
-
+
return '\n'.join(r)
def field2required(v):
@@ -66,7 +66,7 @@
try: return float(v)
except ValueError:
raise ValueError, (
- "A floating-point number was expected in the value '%s'" %
+ "A floating-point number was expected in the value '%s'" %
escape(v)
)
raise ValueError, (
=== Zope/lib/python/ZPublisher/HTTPRangeSupport.py 1.6 => 1.7 ===
--- Zope/lib/python/ZPublisher/HTTPRangeSupport.py:1.6 Wed Jan 2 10:56:04 2002
+++ Zope/lib/python/ZPublisher/HTTPRangeSupport.py Wed Aug 14 18:09:40 2002
@@ -1,14 +1,14 @@
##############################################################################
#
# Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE
-#
+#
##############################################################################
"""HTTP Range support utilities.
@@ -122,7 +122,7 @@
optimized = []
add = optimized.append
start, end = ranges.pop()
-
+
while ranges:
nextstart, nextend = ranges.pop()
# If the next range overlaps
@@ -130,7 +130,7 @@
# If it falls within the current range, discard
if nextend <= end:
continue
-
+
# Overlap, adjust end
end = nextend
else:
@@ -139,7 +139,7 @@
# Add the remaining optimized range
add((start, end))
-
+
return optimized
class HTTPRangeInterface(Interface.Base):
=== Zope/lib/python/ZPublisher/HTTPRequest.py 1.78 => 1.79 ===
--- Zope/lib/python/ZPublisher/HTTPRequest.py:1.78 Wed Aug 14 12:45:53 2002
+++ Zope/lib/python/ZPublisher/HTTPRequest.py Wed Aug 14 18:09:40 2002
@@ -1,14 +1,14 @@
##############################################################################
#
# Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE
-#
+#
##############################################################################
__version__='$Revision$'[11:-2]
@@ -29,22 +29,22 @@
import cgi_hotfix
isCGI_NAME = {
- 'SERVER_SOFTWARE' : 1,
- 'SERVER_NAME' : 1,
- 'GATEWAY_INTERFACE' : 1,
- 'SERVER_PROTOCOL' : 1,
- 'SERVER_PORT' : 1,
- 'REQUEST_METHOD' : 1,
- 'PATH_INFO' : 1,
- 'PATH_TRANSLATED' : 1,
- 'SCRIPT_NAME' : 1,
- 'QUERY_STRING' : 1,
- 'REMOTE_HOST' : 1,
- 'REMOTE_ADDR' : 1,
- 'AUTH_TYPE' : 1,
- 'REMOTE_USER' : 1,
- 'REMOTE_IDENT' : 1,
- 'CONTENT_TYPE' : 1,
+ 'SERVER_SOFTWARE' : 1,
+ 'SERVER_NAME' : 1,
+ 'GATEWAY_INTERFACE' : 1,
+ 'SERVER_PROTOCOL' : 1,
+ 'SERVER_PORT' : 1,
+ 'REQUEST_METHOD' : 1,
+ 'PATH_INFO' : 1,
+ 'PATH_TRANSLATED' : 1,
+ 'SCRIPT_NAME' : 1,
+ 'QUERY_STRING' : 1,
+ 'REMOTE_HOST' : 1,
+ 'REMOTE_ADDR' : 1,
+ 'AUTH_TYPE' : 1,
+ 'REMOTE_USER' : 1,
+ 'REMOTE_IDENT' : 1,
+ 'CONTENT_TYPE' : 1,
'CONTENT_LENGTH' : 1,
'SERVER_URL': 1,
}.has_key
@@ -62,7 +62,7 @@
class HTTPRequest(BaseRequest):
"""\
Model HTTP request data.
-
+
This object provides access to request data. This includes, the
input headers, form data, server data, and cookies.
@@ -150,7 +150,7 @@
if protocol is None: protocol = oldprotocol
if hostname is None: hostname = oldhostname
if port is None: port = oldport
-
+
if (port is None or default_port[protocol] == port):
host = hostname
else:
@@ -258,7 +258,7 @@
# _script and the other _names are meant for URL construction
self._script = map(quote, filter(None, script.split( '/')))
-
+
while b and b[-1]=='/': b=b[:-1]
p = b.rfind('/')
if p >= 0: b=b[:p+1]
@@ -272,7 +272,7 @@
if have_env('HTTPS') and (
environ['HTTPS'] == "on" or environ['HTTPS'] == "ON"):
protocol = 'https'
- elif (have_env('SERVER_PORT_SECURE') and
+ elif (have_env('SERVER_PORT_SECURE') and
environ['SERVER_PORT_SECURE'] == "1"):
protocol = 'https'
else: protocol = 'http'
@@ -297,9 +297,9 @@
port = environ['SERVER_PORT']
self.setServerURL(protocol=protocol, hostname=hostname, port=port)
server_url = other['SERVER_URL']
-
+
if server_url[-1:]=='/': server_url=server_url[:-1]
-
+
if b: self.base="%s/%s" % (server_url,b)
else: self.base=server_url
while script[:1]=='/': script=script[1:]
@@ -328,7 +328,7 @@
taintedcookies[k] = v
self.cookies=cookies
self.taintedcookies = taintedcookies
-
+
def processInputs(
self,
# "static" variables that we want to be local for speed
@@ -352,7 +352,7 @@
response=self.response
environ=self.environ
method=environ.get('REQUEST_METHOD','GET')
-
+
if method != 'GET': fp=self.stdin
else: fp=None
@@ -385,9 +385,9 @@
defaults={}
tainteddefaults={}
converter=seqf=None
-
+
for item in fslist:
-
+
isFileUpload = 0
key=item.name
if (hasattr(item,'file') and hasattr(item,'filename')
@@ -415,7 +415,7 @@
# We'll do the search in two steps. First, we'll
# do a string search, and then we'll check it with
# a re search.
-
+
l=key.rfind(':')
if l >= 0:
@@ -427,8 +427,8 @@
type_name=key[l+1:]
key=key[:l]
c=get_converter(type_name, None)
-
- if c is not None:
+
+ if c is not None:
converter=c
converter_type = type_name
flags=flags|CONVERTED
@@ -457,7 +457,7 @@
if not item: flags=flags|EMPTY
elif has_codec(type_name):
character_encoding = type_name
-
+
l=key.rfind(':')
if l < 0: break
mo=search_type(key,l)
@@ -465,7 +465,7 @@
else: l = -1
-
+
# Filter out special names from form:
if CGI_name(key) or key[:5]=='HTTP_': continue
@@ -476,7 +476,7 @@
if flags:
- # skip over empty fields
+ # skip over empty fields
if flags&EMPTY: continue
#Split the key and its attribute
@@ -494,7 +494,7 @@
raise ValueError(
"%s is not a valid record attribute name" %
escape(attr))
-
+
# defer conversion
if flags&CONVERTED:
try:
@@ -525,7 +525,7 @@
tainted[i] = TaintedString(tainted[i])
if not is_tainted:
tainted = None
-
+
except:
if (not item and not (flags&DEFAULT) and
defaults.has_key(key)):
@@ -541,8 +541,8 @@
if flags&RECORDS:
tainted = getattr(tainted[-1], attr)
else:
- raise
-
+ raise
+
elif not isFileUpload and '<' in item:
# Flag potentially unsafe values
tainted = TaintedString(item)
@@ -607,7 +607,7 @@
newrec = record()
setattr(newrec, attr, copyitem)
treclist.append(newrec)
-
+
if not hasattr(x,attr):
#If the attribute does not
#exist, setit
@@ -642,7 +642,7 @@
else:
# it is not a sequence so
# set the attribute
- setattr(b,attr,item)
+ setattr(b,attr,item)
# Store a tainted copy as well if necessary
if tainted:
@@ -682,7 +682,7 @@
else:
tainted_mapping[tainted_key] = [copied]
tainted_mapping[tainted_key].append(tainted)
-
+
elif tainted_mapping.has_key(tainted_key):
# We may already have encountered a tainted
# value for this key, and the tainted_mapping
@@ -741,7 +741,7 @@
else:
# This branch is for case when no type was specified.
mapping_object = form
-
+
if not isFileUpload and '<' in item:
tainted = TaintedString(item)
elif '<' in key:
@@ -761,7 +761,7 @@
else:
taintedform[tainted_key] = [copied]
taintedform[tainted_key].append(tainted)
-
+
elif taintedform.has_key(tainted_key):
# We may already have encountered a tainted value
# for this key, and the taintedform needs to hold
@@ -787,7 +787,7 @@
for key, value in defaults.items():
tainted_key = key
if '<' in key: tainted_key = TaintedString(key)
-
+
if not form.has_key(key):
# if the form does not have the key,
# set the default
@@ -795,7 +795,7 @@
if tainteddefaults.has_key(tainted_key):
taintedform[tainted_key] = \
- tainteddefaults[tainted_key]
+ tainteddefaults[tainted_key]
else:
#The form has the key
tdefault = tainteddefaults.get(tainted_key, value)
@@ -833,8 +833,8 @@
# if the form dictionary doesn't have
# the attribute, set it to the default
setattr(r,k,v)
- form[key] = r
-
+ form[key] = r
+
elif isinstance(value, lt):
# the default value is a list
l = form[key]
@@ -892,20 +892,20 @@
if isinstance(x, record):
# if the x is a record
for k, v in x.__dict__.items():
-
+
# loop through each
# attribute and value in
# the record
-
+
for y in l:
-
+
# loop through each
# record in the form
# list if it doesn't
# have the attributes
# in the default
# dictionary, set them
-
+
if not hasattr(y, k):
setattr(y, k, v)
else:
@@ -917,7 +917,7 @@
# The form has the key, the key is not mapped
# to a record or sequence so do nothing
pass
-
+
# Convert to tuples
if tuple_items:
for key in tuple_items.keys():
@@ -951,7 +951,7 @@
# If the record has the attribute
# convert it to a tuple and set it
value=tuple(getattr(x,attr))
- setattr(x,attr,value)
+ setattr(x,attr,value)
# Do the same for the tainted counterpart
if taintedform.has_key(tainted_split_key):
@@ -966,20 +966,20 @@
seq = tuple(seq)
setattr(trec, attr, seq)
else:
- # the form does not have the split key
+ # the form does not have the split key
tainted_key = key
if '<' in key: tainted_key = TaintedString(key)
if form.has_key(key):
# if it has the original key, get the item
# convert it to a tuple
- item=form[key]
+ item=form[key]
item=tuple(form[key])
form[key]=item
if taintedform.has_key(tainted_key):
tainted = tuple(taintedform[tainted_key])
taintedform[tainted_key] = tainted
-
+
if meth:
if environ.has_key('PATH_INFO'):
path=environ['PATH_INFO']
@@ -1007,7 +1007,7 @@
rsp=req.response
req['PATH_INFO']=path
object=None
-
+
# Try to traverse to get an object. Note that we call
# the exception method on the response, but we don't
# want to actually abort the current transaction
@@ -1036,10 +1036,10 @@
req.close()
return object
-
+
def clone(self):
- # Return a clone of the current request object
+ # Return a clone of the current request object
# that may be used to perform object traversal.
environ=self.environ.copy()
environ['REQUEST_METHOD']='GET'
@@ -1073,8 +1073,8 @@
Return a value for the required variable name.
The value will be looked up from one of the request data
categories. The search order is environment variables,
- other variables, form data, and then cookies.
-
+ other variables, form data, and then cookies.
+
""" #"
other=self.other
if other.has_key(key):
@@ -1246,14 +1246,14 @@
for k,v in self.other.items():
if k in ('PARENTS','RESPONSE'): continue
result=result + row % (escape(k), escape(repr(v)))
-
+
for n in "0123456789":
key = "URL%s"%n
- try: result=result + row % (key, escape(self[key]))
+ try: result=result + row % (key, escape(self[key]))
except KeyError: pass
for n in "0123456789":
key = "BASE%s"%n
- try: result=result + row % (key, escape(self[key]))
+ try: result=result + row % (key, escape(self[key]))
except KeyError: pass
result=result+"</table><h3>environ</h3><table>"
@@ -1280,14 +1280,14 @@
for k,v in self.other.items():
if k in ('PARENTS','RESPONSE'): continue
result=result + row % (k, repr(v))
-
+
for n in "0123456789":
key = "URL%s"%n
- try: result=result + row % (key, self[key])
+ try: result=result + row % (key, self[key])
except KeyError: pass
for n in "0123456789":
key = "BASE%s"%n
- try: result=result + row % (key, self[key])
+ try: result=result + row % (key, self[key])
except KeyError: pass
result=result+"\nENVIRON\n\n"
@@ -1408,9 +1408,9 @@
# self.headers so that managed code can access them.
try: self.headers.__allow_access_to_unprotected_subobjects__ = 1
except: pass
-
+
def __nonzero__(self):
- """FileUpload objects are considered false if their
+ """FileUpload objects are considered false if their
filename is empty.
"""
return not not self.filename
@@ -1453,8 +1453,8 @@
name = mo_p.group(2)
value = mo_p.group(3)
- else:
- return result
+ else:
+ return result
finally: release()
@@ -1475,11 +1475,11 @@
def __getitem__(self, key):
return self.__dict__[key]
-
+
def __str__(self):
L1 = self.__dict__.items()
L1.sort()
- return ", ".join(map(lambda item: "%s: %s" % item, L1))
+ return ", ".join(map(lambda item: "%s: %s" % item, L1))
def __repr__(self):
#return repr( self.__dict__ )
@@ -1502,4 +1502,3 @@
REC=RECORD|RECORDS
EMPTY=16
CONVERTED=32
-
=== Zope/lib/python/ZPublisher/HTTPResponse.py 1.67 => 1.68 ===
--- Zope/lib/python/ZPublisher/HTTPResponse.py:1.67 Wed Aug 14 12:45:53 2002
+++ Zope/lib/python/ZPublisher/HTTPResponse.py Wed Aug 14 18:09:40 2002
@@ -1,14 +1,14 @@
#############################################################################
#
# Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE
-#
+#
##############################################################################
'''CGI Response Output formatter
@@ -123,7 +123,7 @@
class HTTPResponse(BaseResponse):
"""\
An object representation of an HTTP response.
-
+
The Response type encapsulates all possible responses to HTTP
requests. Responses are normally created by the object publisher.
A published object may recieve the response abject as an argument
@@ -151,7 +151,7 @@
# 0 - no compression
# 1 - compress if accept-encoding ok
# 2 - ignore accept-encoding (i.e. force)
- use_HTTP_content_compression = 0
+ use_HTTP_content_compression = 0
def __init__(self,body='',status=200,headers=None,
stdout=sys.stdout, stderr=sys.stderr,):
@@ -167,7 +167,7 @@
if status == 200:
self.status = 200
self.errmsg = 'OK'
- headers['status'] = "200 OK"
+ headers['status'] = "200 OK"
else:
self.setStatus(status)
self.base = ''
@@ -180,11 +180,11 @@
def retry(self):
"""Return a response object to be used in a retry attempt
"""
-
+
# This implementation is a bit lame, because it assumes that
# only stdout stderr were passed to the constructor. OTOH, I
# think that that's all that is ever passed.
-
+
return self.__class__(stdout=self.stdout, stderr=self.stderr)
_shutdown_flag = None
@@ -211,7 +211,7 @@
# Don't change the response status.
# It has already been determined.
return
-
+
if type(status) is types.StringType:
status = status.lower()
if status_codes.has_key(status):
@@ -260,7 +260,7 @@
):
'''\
Set the body of the response
-
+
Sets the return body equal to the (string) argument "body". Also
updates the "content-length" return header.
@@ -269,13 +269,13 @@
If the body is a 2-element tuple, then it will be treated
as (title,body)
-
+
If is_error is true then the HTML will be formatted as a Zope error
message instead of a generic HTML page.
'''
if not body:
return self
-
+
if type(body) is types.TupleType and len(body) == 2:
title,body = body
@@ -294,7 +294,7 @@
body = _encode_unicode(unicode(body))
l = len(body)
- if ((l < 200) and body[:1] == '<' and body.find('>') == l-1 and
+ if ((l < 200) and body[:1] == '<' and body.find('>') == l-1 and
bogus_str_search(body) is not None):
self.notFoundError(body[1:-1])
else:
@@ -329,7 +329,7 @@
self.insertBase()
if self.use_HTTP_content_compression and \
not self.headers.get('content-encoding',None):
- # use HTTP content encoding to compress body contents unless
+ # use HTTP content encoding to compress body contents unless
# this response already has another type of content encoding
if content_type.split('/')[0] not in uncompressableMimeMajorTypes:
# only compress if not listed as uncompressable
@@ -348,10 +348,10 @@
self.setHeader('content-encoding','gzip')
if self.use_HTTP_content_compression == 1:
# use_HTTP_content_compression == 1 if force was
- # NOT used in enableHTTPCompression().
+ # NOT used in enableHTTPCompression().
# If we forced it, then Accept-Encoding
# was ignored anyway, so cache should not
- # vary on it. Otherwise if not forced, cache should
+ # vary on it. Otherwise if not forced, cache should
# respect Accept-Encoding client header
self.appendHeader('Vary','Accept-Encoding')
return self
@@ -406,7 +406,7 @@
self.use_HTTP_content_compression = 2
else:
self.use_HTTP_content_compression = 1
-
+
return self.use_HTTP_content_compression
def _encode_unicode(self,body,
@@ -470,7 +470,7 @@
def expireCookie(self, name, **kw):
'''\
Cause an HTTP cookie to be removed from the browser
-
+
The response will include an HTTP header that will remove the cookie
corresponding to "name" on the client, if one exists. This is
accomplished by sending a new cookie with an expiration date
@@ -509,7 +509,7 @@
def appendHeader(self, name, value, delimiter=","):
'''\
Append a value to a header.
-
+
Sets an HTTP return header "name" with value "value",
appending it following a comma if there was a previous value
set for the header. '''
@@ -539,7 +539,7 @@
text = subs[ent].join(text.split(ent))
return text
-
+
def _traceback(self, t, v, tb, as_html=1):
tb = format_exception(t, v, tb, as_html=as_html)
@@ -580,7 +580,7 @@
</P>""" + \
"""
<P><STRONG>%s</STRONG></P>
-
+
%s""" %(title,body) + \
"""
<HR NOSHADE>
@@ -631,7 +631,7 @@
raise 'BadRequest',self._error_html(
"Invalid request",
"The parameter, <em>%s</em>, " % name +
- "was omitted from the request.<p>" +
+ "was omitted from the request.<p>" +
"Make sure to specify all required parameters, " +
"and try the request again."
)
@@ -777,7 +777,7 @@
cookie_list.append(cookie)
# Should really check size of cookies here!
-
+
return cookie_list
def __str__(self,
@@ -829,7 +829,7 @@
cookies on the response object.
Note that published objects must not generate any errors
- after beginning stream-oriented output.
+ after beginning stream-oriented output.
"""
if not self._wrote:
@@ -838,5 +838,3 @@
self.stdout.flush()
self.stdout.write(data)
-
-
=== Zope/lib/python/ZPublisher/Publish.py 1.156 => 1.157 ===
--- Zope/lib/python/ZPublisher/Publish.py:1.156 Mon Apr 15 16:58:28 2002
+++ Zope/lib/python/ZPublisher/Publish.py Wed Aug 14 18:09:40 2002
@@ -1,14 +1,14 @@
##############################################################################
#
# Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE
-#
+#
##############################################################################
__doc__="""Python Object Publisher -- Publish Python objects on web servers
@@ -64,47 +64,47 @@
request_get=request.get
response=request.response
-
+
# First check for "cancel" redirect:
cancel=''
if request_get('SUBMIT','').strip().lower()=='cancel':
cancel=request_get('CANCEL_ACTION','')
if cancel: raise 'Redirect', cancel
-
+
after_list[0]=bobo_after
if debug_mode: response.debug_mode=debug_mode
if realm and not request.get('REMOTE_USER',None):
response.realm=realm
-
+
if bobo_before is not None:
bobo_before()
-
+
# Get a nice clean path list:
path=request_get('PATH_INFO').strip()
-
+
request['PARENTS']=parents=[object]
-
+
if transactions_manager: transactions_manager.begin()
-
+
object=request.traverse(path, validated_hook=validated_hook)
-
+
if transactions_manager:
transactions_manager.recordMetaData(object, request)
-
+
result=mapply(object, request.args, request,
call_object,1,
- missing_name,
+ missing_name,
dont_publish_class,
request, bind=1)
-
+
if result is not response: response.setBody(result)
-
+
if transactions_manager: transactions_manager.commit()
return response
except:
if transactions_manager: transactions_manager.abort()
-
+
if err_hook is not None:
if parents: parents=parents[0]
try:
@@ -127,7 +127,7 @@
return publish(newrequest, module_name, after_list, debug)
finally:
newrequest.close()
-
+
else: raise
@@ -226,7 +226,7 @@
z1 = os.environ.get('Z_DEBUG_MODE','')
z2 = os.environ.get('BOBO_DEBUG_MODE','')
-
+
if z1.lower() in ('yes','y') or z1.isdigit():
debug_mode = 1
elif z2.lower() in ('yes','y') or z2.isdigit():
@@ -264,7 +264,7 @@
error_hook, validated_hook, transactions_manager)
modules[module_name]=modules[module_name+'.cgi']=info
-
+
return info
except:
t,v,tb=sys.exc_info()
@@ -287,7 +287,7 @@
auth_user=request_get('AUTHENTICATED_USER',None)
if auth_user is not None:
T.setUser(auth_user, request_get('AUTHENTICATION_PATH'))
-
+
# ZPublisher profiler support
# ---------------------------
@@ -301,17 +301,17 @@
_pfunc=publish_module
_pstat=None
- def pm(module_name, stdin, stdout, stderr,
+ def pm(module_name, stdin, stdout, stderr,
environ, debug, request, response):
try:
- r=_pfunc(module_name, stdin=stdin, stdout=stdout,
- stderr=stderr, environ=environ, debug=debug,
+ r=_pfunc(module_name, stdin=stdin, stdout=stdout,
+ stderr=stderr, environ=environ, debug=debug,
request=request, response=response)
except: r=None
sys._pr_=r
- def publish_module(module_name, stdin=sys.stdin, stdout=sys.stdout,
- stderr=sys.stderr, environ=os.environ, debug=0,
+ def publish_module(module_name, stdin=sys.stdin, stdout=sys.stdout,
+ stderr=sys.stderr, environ=os.environ, debug=0,
request=None, response=None):
global _pstat
_plock.acquire()
@@ -320,11 +320,11 @@
path_info=request.get('PATH_INFO')
else: path_info=environ.get('PATH_INFO')
if path_info[-14:]=='manage_profile':
- return _pfunc(module_name, stdin=stdin, stdout=stdout,
- stderr=stderr, environ=environ, debug=debug,
+ return _pfunc(module_name, stdin=stdin, stdout=stdout,
+ stderr=stderr, environ=environ, debug=debug,
request=request, response=response)
pobj=profile.Profile()
- pobj.runcall(pm, module_name, stdin, stdout, stderr,
+ pobj.runcall(pm, module_name, stdin, stdout, stderr,
environ, debug, request, response)
result=sys._pr_
pobj.create_stats()
@@ -351,6 +351,3 @@
except: pass
raise error[0], error[1], error[2]
return result
-
-
-
=== Zope/lib/python/ZPublisher/Request.py 1.9 => 1.10 ===
--- Zope/lib/python/ZPublisher/Request.py:1.9 Wed Nov 28 10:51:20 2001
+++ Zope/lib/python/ZPublisher/Request.py Wed Aug 14 18:09:40 2002
@@ -1,14 +1,14 @@
##############################################################################
#
# Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE
-#
+#
##############################################################################
import HTTPRequest
Request=HTTPRequest.HTTPRequest
=== Zope/lib/python/ZPublisher/Response.py 1.50 => 1.51 ===
--- Zope/lib/python/ZPublisher/Response.py:1.50 Wed Nov 28 10:51:21 2001
+++ Zope/lib/python/ZPublisher/Response.py Wed Aug 14 18:09:40 2002
@@ -1,14 +1,14 @@
##############################################################################
#
# Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE
-#
+#
##############################################################################
import HTTPResponse
Response=HTTPResponse.HTTPResponse
=== Zope/lib/python/ZPublisher/TaintedString.py 1.1 => 1.2 ===
--- Zope/lib/python/ZPublisher/TaintedString.py:1.1 Thu Aug 1 12:00:41 2002
+++ Zope/lib/python/ZPublisher/TaintedString.py Wed Aug 14 18:09:40 2002
@@ -1,14 +1,14 @@
##############################################################################
#
# Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE
-#
+#
##############################################################################
__version__='$Revision$'[11:-2]
@@ -44,7 +44,7 @@
if '<' in v:
v = self.__class__(v)
return v
-
+
def __getslice__(self, i, j):
i = max(i, 0)
j = max(j, 0)
@@ -141,4 +141,3 @@
for f in oneArgWrappedMethods:
setattr(TaintedString, f, createOneArgWrapper(f))
-
=== Zope/lib/python/ZPublisher/Test.py 1.39 => 1.40 ===
--- Zope/lib/python/ZPublisher/Test.py:1.39 Wed Jan 2 10:56:04 2002
+++ Zope/lib/python/ZPublisher/Test.py Wed Aug 14 18:09:40 2002
@@ -7,14 +7,14 @@
##############################################################################
#
# Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE
-#
+#
##############################################################################
__doc__='''Command-line Bobo
@@ -25,7 +25,7 @@
where:
- module_path -- is a full path to a published module
+ module_path -- is a full path to a published module
path_info -- Is the information after the module name that would
normally be specified in a GET URL, including a query string.
@@ -33,22 +33,22 @@
Description
The command-line interface to Bobo provides a handy way to test,
- debug, and profile Bobo without a web server.
+ debug, and profile Bobo without a web server.
Options
-u username:password -- Supply HTTP authorization information
-e name=value -- Supply environment variables. Use a
- seperate -e option for each variable
+ seperate -e option for each variable
specified.
-p profiler_data_file -- Run under profiler control,
- generating the profiler
+ generating the profiler
data file, profiler_data_file.
-t -- Compute the time required to
- complete a request, in
+ complete a request, in
milliseconds.
-r n -- Specify a repeat count for timing or
@@ -134,7 +134,7 @@
env[val[:opt]]=val[opt+1:]
if (debug or 0)+(timeit or 0)+(profile and 1 or 0) > 1:
- raise 'Invalid options', 'only one of -p, -t, and -d are allowed'
+ raise 'Invalid options', 'only one of -p, -t, and -d are allowed'
module=args[0]
@@ -342,7 +342,7 @@
if isinstance(b, TupleType):
apply(db.set_break,b)
else:
- fbreak(db,b)
+ fbreak(db,b)
db.prompt='pdb> '
# db.set_continue()
@@ -368,9 +368,9 @@
publish_module_pm(file, environ=env, stdout=stdout, extra=extra)
print '\n%s\n' % ('_'*60)
else:
- if silent:
+ if silent:
stdout=open('/dev/null','w')
- else:
+ else:
if fp and hasattr(fp,'write'):
stdout = fp
else:
=== Zope/lib/python/ZPublisher/__init__.py 1.11 => 1.12 ===
--- Zope/lib/python/ZPublisher/__init__.py:1.11 Wed Nov 28 10:51:21 2001
+++ Zope/lib/python/ZPublisher/__init__.py Wed Aug 14 18:09:40 2002
@@ -1,14 +1,14 @@
##############################################################################
#
# Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE
-#
+#
##############################################################################
__version__='$Revision$'[11:-2]
=== Zope/lib/python/ZPublisher/cgi_hotfix.py 1.2 => 1.3 ===
--- Zope/lib/python/ZPublisher/cgi_hotfix.py:1.2 Wed Jul 25 15:38:28 2001
+++ Zope/lib/python/ZPublisher/cgi_hotfix.py Wed Aug 14 18:09:40 2002
@@ -7,7 +7,7 @@
"""Internal: read a part that is itself multipart."""
ib = self.innerboundary
if not valid_boundary(ib):
- raise ValueError, ('Invalid boundary in multipart form: %s'
+ raise ValueError, ('Invalid boundary in multipart form: %s'
% `ib`)
self.list = []
klass = self.FieldStorageClass or self.__class__
=== Zope/lib/python/ZPublisher/mapply.py 1.5 => 1.6 ===
--- Zope/lib/python/ZPublisher/mapply.py:1.5 Wed Nov 28 10:51:21 2001
+++ Zope/lib/python/ZPublisher/mapply.py Wed Aug 14 18:09:40 2002
@@ -1,14 +1,14 @@
##############################################################################
#
# Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE
-#
+#
##############################################################################
"""Provide an apply-like facility that works with any mapping object
"""
@@ -21,7 +21,7 @@
raise TypeError, 'argument %s was ommitted' % name
def default_handle_class(klass, context):
- if hasattr(klass,'__init__'):
+ if hasattr(klass,'__init__'):
f=klass.__init__.im_func
c=f.func_code
names=c.co_varnames[1:c.co_argcount]
@@ -50,7 +50,7 @@
im=1
elif not hasattr(f,'func_defaults') and maybe: return object
elif maybe: return object
-
+
if im:
f=f.im_func
c=f.func_code
=== Zope/lib/python/ZPublisher/maybe_lock.py 1.3 => 1.4 ===
--- Zope/lib/python/ZPublisher/maybe_lock.py:1.3 Wed Nov 28 10:51:21 2001
+++ Zope/lib/python/ZPublisher/maybe_lock.py Wed Aug 14 18:09:40 2002
@@ -1,14 +1,14 @@
##############################################################################
#
# Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE
-#
+#
##############################################################################
__version__='$Revision$'[11:-2]
=== Zope/lib/python/ZPublisher/xmlrpc.py 1.11 => 1.12 ===
--- Zope/lib/python/ZPublisher/xmlrpc.py:1.11 Fri May 31 08:31:08 2002
+++ Zope/lib/python/ZPublisher/xmlrpc.py Wed Aug 14 18:09:40 2002
@@ -1,14 +1,14 @@
##############################################################################
#
# Copyright (c) 2001 Zope Corporation and Contributors. All Rights Reserved.
-#
+#
# This software is subject to the provisions of the Zope Public License,
# Version 2.0 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
# FOR A PARTICULAR PURPOSE
-#
+#
##############################################################################
"""XML-RPC support module
@@ -28,9 +28,9 @@
The data is a string.
"""
- #
+ #
# For example, with the input:
- #
+ #
# <?xml version="1.0"?>
# <methodCall>
# <methodName>examples.getStateName</methodName>
@@ -40,9 +40,9 @@
# </param>
# </params>
# </methodCall>
- #
+ #
# the function should return:
- #
+ #
# ('examples.getStateName', (41,))
params, method = xmlrpclib.loads(data)
# Translate '.' to '/' in meth to represent object traversal.
@@ -53,7 +53,7 @@
#
# def response(anHTTPResponse):
# """Return a valid ZPublisher response object
-#
+#
# Use data already gathered by the existing response.
# The new response will replace the existing response.
# """
@@ -62,8 +62,8 @@
# r=Response()
# r.__dict__.update(anHTTPResponse.__dict__)
# return r
-
-
+
+
########################################################################
# Possible implementation helpers:
@@ -91,7 +91,7 @@
def __getattr__(self, name): return getattr(self._real, name)
def __setattr__(self, name, v): return setattr(self._real, name, v)
def __delattr__(self, name): return delattr(self._real, name)
-
+
def setBody(self, body, title='', is_error=0, bogus_str_search=None):
if isinstance(body, xmlrpclib.Fault):
# Convert Fault object to XML-RPC response.