Package aquarium :: Package util :: Module FormDict :: Class FormDict
[show private | hide private]
[frames | no frames]

Type FormDict

object --+    
         |    
      dict --+
             |
            FormDict


Translate a cgi.FieldStorage into a (possibly recursive) dict.

If you've used cgi.FieldStorage from the Python standard library, you've probably translated it into a dict, which has a more friendly API. Then, at some point (either before or after you wrote the translation), you probably realized why cgi.FieldStorage is the way it is--because the same field can have multiple values.

This code works around this requirement in a more friendly way that is inspired by PHP. Specifically:

XXX Below here doesn't actually work and is more of a TODO:

The following attributes are used:

fieldStorage
This is the original cgi.FieldStorage object, just in case you actually need it. I won't even use it outside of the constructor.

Method Summary
  __init__(self, fieldStorage)
Accept a cgi.FieldStorage as an initializer.
  buildDict(self, idxs, val, thardict)
Takes a list of idxs to follow down the nested dicts contained in thardict where it will insert val.
  extractIndexes(self, key)
    Inherited from dict
  __cmp__(x, y)
x.__cmp__(y) <==> cmp(x,y)...
  __contains__(D, k)
D.__contains__(k) -> True if D has a key k, else False...
  __delitem__(x, y)
x.__delitem__(y) <==> del x[y]...
  __eq__(x, y)
x.__eq__(y) <==> x==y...
  __ge__(x, y)
x.__ge__(y) <==> x>=y...
  __getattribute__(...)
x.__getattribute__('name') <==> x.name...
  __getitem__(x, y)
x.__getitem__(y) <==> x[y]...
  __gt__(x, y)
x.__gt__(y) <==> x>y...
  __hash__(x)
x.__hash__() <==> hash(x)...
  __iter__(x)
x.__iter__() <==> iter(x)...
  __le__(x, y)
x.__le__(y) <==> x<=y...
  __len__(x)
x.__len__() <==> len(x)...
  __lt__(x, y)
x.__lt__(y) <==> x<y...
  __ne__(x, y)
x.__ne__(y) <==> x!=y...
  __new__(T, S, ...)
T.__new__(S, ...) -> a new object with type S, a subtype of T...
  __repr__(x)
x.__repr__() <==> repr(x)...
  __setitem__(x, i, y)
x.__setitem__(i, y) <==> x[i]=y...
  clear(D)
D.clear() -> None.
  copy(D)
D.copy() -> a shallow copy of D...
  get(D, k, d)
D.get(k[,d]) -> D[k] if k in D, else d.
  has_key(D, k)
D.has_key(k) -> True if D has a key k, else False...
  items(D)
D.items() -> list of D's (key, value) pairs, as 2-tuples...
  iteritems(D)
D.iteritems() -> an iterator over the (key, value) items of D...
  iterkeys(D)
D.iterkeys() -> an iterator over the keys of D...
  itervalues(D)
D.itervalues() -> an iterator over the values of D...
  keys(D)
D.keys() -> list of D's keys...
  pop(D, k, d)
If key is not found, d is returned if given, otherwise KeyError is raised...
  popitem(D)
2-tuple; but raise KeyError if D is empty...
  setdefault(D, k, d)
D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D...
  update(...)
D.update(E, **F) -> None.
  values(D)
D.values() -> list of D's values...
    Inherited from object
  __delattr__(...)
x.__delattr__('name') <==> del x.name...
  __reduce__(...)
helper for pickle...
  __reduce_ex__(...)
helper for pickle...
  __setattr__(...)
x.__setattr__('name', value) <==> x.name = value...
  __str__(x)
x.__str__() <==> str(x)...
    Inherited from type
  fromkeys(dict, S, v)
v defaults to None.

Method Details

__init__(self, fieldStorage)
(Constructor)

Accept a cgi.FieldStorage as an initializer.

Overrides:
__builtin__.dict.__init__

buildDict(self, idxs, val, thardict)

Takes a list of idxs to follow down the nested dicts contained in thardict where it will insert val.

idxs
The list of indexes to follow through the dict
val
The value to insert at the end of the indexes
thardict
The dict to use. Keys will be created.

Generated by Epydoc 2.1 on Mon Jan 1 16:34:19 2007 http://epydoc.sf.net