Remember to copy method to request copies.
[wrw.git] / wrw / form.py
CommitLineData
b409a338
FT
1import cgi
2
3__all__ = ["formdata"]
4
5class formwrap(object):
6 def __init__(self, req):
aba06d86 7 if req.ihead.get("Content-Type") == "application/x-www-form-urlencoded":
b409a338
FT
8 self.cf = cgi.parse(environ = req.env, fp = req.env["wsgi.input"])
9 else:
10 self.cf = cgi.parse(environ = req.env)
11
12 def __getitem__(self, key):
13 return self.cf[key][0]
14
15 def get(self, key, default = ""):
16 if key in self:
17 return self.cf[key][0]
18 return default
19
20 def __contains__(self, key):
21 return key in self.cf and len(self.cf[key]) > 0
22
23 def __iter__(self):
24 return iter(self.cf)
25
26 def items(self):
27 def iter():
28 for key, list in self.cf.items():
29 for val in list:
30 yield key, val
31 return list(iter())
32
33 def keys(self):
34 return self.cf.keys()
35
36 def values(self):
37 return [val for key, val in self.items()]
38
39def formdata(req):
40 return req.item(formwrap)