summaryrefslogtreecommitdiffstats
path: root/Lib/cgi.py
diff options
context:
space:
mode:
authorMoshe Zadka <moshez@math.huji.ac.il>2000-08-25 21:47:56 (GMT)
committerMoshe Zadka <moshez@math.huji.ac.il>2000-08-25 21:47:56 (GMT)
commita1a4b5916b08b24ac0f326949f6d0a0a3cedb963 (patch)
tree56facd35f1d910d71d385d9dc166c811b82a11b4 /Lib/cgi.py
parentdc3d606bd931bc7ffa780bd397ca184f69bb3838 (diff)
downloadcpython-a1a4b5916b08b24ac0f326949f6d0a0a3cedb963.zip
cpython-a1a4b5916b08b24ac0f326949f6d0a0a3cedb963.tar.gz
cpython-a1a4b5916b08b24ac0f326949f6d0a0a3cedb963.tar.bz2
Closing patch #101120 -- After everyone agreed.
Diffstat (limited to 'Lib/cgi.py')
-rwxr-xr-xLib/cgi.py46
1 files changed, 23 insertions, 23 deletions
diff --git a/Lib/cgi.py b/Lib/cgi.py
index 0184472..2a21405 100755
--- a/Lib/cgi.py
+++ b/Lib/cgi.py
@@ -19,7 +19,7 @@ written in Python.
# responsible for its maintenance.
#
-__version__ = "2.2"
+__version__ = "2.3"
# Imports
@@ -31,6 +31,7 @@ import os
import urllib
import mimetools
import rfc822
+import UserDict
from StringIO import StringIO
@@ -166,11 +167,10 @@ def parse_qs(qs, keep_blank_values=0, strict_parsing=0):
"""
dict = {}
for name, value in parse_qsl(qs, keep_blank_values, strict_parsing):
- if len(value) or keep_blank_values:
- if dict.has_key(name):
- dict[name].append(value)
- else:
- dict[name] = [value]
+ if dict.has_key(name):
+ dict[name].append(value)
+ else:
+ dict[name] = [value]
return dict
def parse_qsl(qs, keep_blank_values=0, strict_parsing=0):
@@ -201,9 +201,10 @@ def parse_qsl(qs, keep_blank_values=0, strict_parsing=0):
if strict_parsing:
raise ValueError, "bad query field: %s" % `name_value`
continue
- name = urllib.unquote(string.replace(nv[0], '+', ' '))
- value = urllib.unquote(string.replace(nv[1], '+', ' '))
- r.append((name, value))
+ if len(nv[1]) or keep_blank_values:
+ name = urllib.unquote(string.replace(nv[0], '+', ' '))
+ value = urllib.unquote(string.replace(nv[1], '+', ' '))
+ r.append((name, value))
return r
@@ -537,6 +538,17 @@ class FieldStorage:
else:
return found
+ def getvalue(self, key, default=None):
+ """Dictionary style get() method, including 'value' lookup."""
+ if self.has_key(key):
+ value = self[key]
+ if type(value) is type([]):
+ return map(lambda v: v.value, value)
+ else:
+ return value.value
+ else:
+ return default
+
def keys(self):
"""Dictionary style keys() method."""
if self.list is None:
@@ -706,7 +718,7 @@ class FieldStorage:
# Backwards Compatibility Classes
# ===============================
-class FormContentDict:
+class FormContentDict(UserDict.UserDict):
"""Basic (multiple values per field) form content as dictionary.
form = FormContentDict()
@@ -720,20 +732,8 @@ class FormContentDict:
"""
def __init__(self, environ=os.environ):
- self.dict = parse(environ=environ)
+ self.dict = self.data = parse(environ=environ)
self.query_string = environ['QUERY_STRING']
- def __getitem__(self,key):
- return self.dict[key]
- def keys(self):
- return self.dict.keys()
- def has_key(self, key):
- return self.dict.has_key(key)
- def values(self):
- return self.dict.values()
- def items(self):
- return self.dict.items()
- def __len__( self ):
- return len(self.dict)
class SvFormContentDict(FormContentDict):