123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- class FormIterator(object):
- def __init__(self, form, fieldsets=None):
- self._index = -1
- self.form = form
- try:
- self.fieldsets = fieldsets or form.fieldsets
- except AttributeError:
- raise AttributeError('Form fieldset could not be found. Either pass explicit "fieldsets" argument to FormIterator or define "fieldsets" attribute on form.')
- def __iter__(self):
- return self
- def next(self):
- self._index += 1
- try:
- return FieldsetIterator(self.form,
- self.fieldsets[self._index][0],
- self.fieldsets[self._index][1])
- except IndexError:
- self._index = -1
- raise StopIteration()
- class FieldsetIterator(object):
- def __init__(self, form, name, fields):
- self._index = -1
- self.form = form
- self.name = name
- self.fields = fields
- def __iter__(self):
- return self
- def next(self):
- self._index += 1
- try:
- row = self.fields[self._index]
- if isinstance(row, basestring):
- field_name = row
- return self.form[field_name]
- field_name = row[0]
- field = self.form[field_name]
- field.extra = row[1]
- return field
- except IndexError:
- raise StopIteration()
- except KeyError:
- raise KeyError('Field "%s" could not be found in iterated form.' % field_name)
|