summaryrefslogtreecommitdiff
path: root/paste
diff options
context:
space:
mode:
authorianb <devnull@localhost>2005-05-16 20:44:50 +0000
committerianb <devnull@localhost>2005-05-16 20:44:50 +0000
commita8e317c2979cbc9c8f2d4d35187da10098d2be8b (patch)
treefb3db152932ca47f7e74d9eb0d939877319db568 /paste
parentb5eea429f9578ef227ab2ca8e40ec545c9b2df39 (diff)
downloadpaste-a8e317c2979cbc9c8f2d4d35187da10098d2be8b.tar.gz
Added method to request fields
Diffstat (limited to 'paste')
-rw-r--r--paste/wareweb/cgifields.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/paste/wareweb/cgifields.py b/paste/wareweb/cgifields.py
index fc7188f..e05cf88 100644
--- a/paste/wareweb/cgifields.py
+++ b/paste/wareweb/cgifields.py
@@ -44,10 +44,30 @@ class Fields(UserDict):
self.data = field_dict
def __getattr__(self, attr):
+ # @@: I don't like this. Should it give a KeyError?
+ # should it exist at all?
return self.data.get(attr)
def getlist(self, name):
+ """
+ Return the named item as a list ([] if name not found,
+ [self[name]] if only one field passed in).
+ """
v = self.data.get(name, [])
if isinstance(v, list):
return v
return [v]
+
+ def itemlist(self):
+ """
+ Return a list of (name, [values...]). Like .items(),
+ except all values becomes a list (like .getlist()).
+ """
+ items = []
+ for name, value in self.iteritems():
+ if isinstance(value, list):
+ items.append((name, value))
+ else:
+ items.append((name, [value]))
+ return items
+