|
Brian Bird
Brian.Bird at securetrading.com
Thu Oct 26 05:14:26 EDT 2006
Is there anything in the works to make util.FieldStorage act more like a
real dictionary? Specifically, it doesn't support the __setitem__,
__delitem__ methods. Since the documentation states "it can be treated
like a dictionary" I was surprised to find these methods missing.
I know it's easy to change it to a real dictionary to get these methods,
but then you lose the (very useful) getlist() method. At first glance it
doesn't look like much work to add the extra methods (but I haven't
looked at how it may affect values which aren't StringField's).
I've just looked in the latest subversion and found that the items()
method is now in util.FieldStorage, as well as a method add_field()
which looks suspiciously like __setitem__ should, but no sign of a
__delitem__. However, there now seems to be a self.dictionary object
which could be useful - perhaps all unrecognised methods should be
passed onto self.dictionary in the __getattr__ instead of raising an
AttributeError?
I've put below what I thought needed adding to the util.FieldStorage
class before I noticed self.dictionary in case it's any help.
### Disclaimer - completely untested! :-) ###
def __setitem__(self, key, value):
self.list.append(util.Field(key, cStringIO.StringIO(key),
"text/plain", {}, None, {}))
def __delitem__(self, key):
for item in self.list:
if item.name == key:
self.list.remove(item)
def items(self):
result = []
for key in self.keys():
result.append((key, self[key]))
return result
def update(self, d):
for k in d.keys():
self[k] = d[k]
Thanks,
Brian
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mm_cfg_has_not_been_edited_to_set_host_domains/pipermail/mod_python/attachments/20061026/29be8f68/attachment.html
|