"""
log.debug("Executing form %s" % self)
- # Export all form data
- data = self.export()
+ for element in self:
+ log.debug(" Processing element %s" % element)
+
+ # Call the store callback if available
+ if element.store and callable(element.store):
+ element.store(element.value)
- # Log everything
- for key in data:
- log.debug(" %-24s : %s" % (key, data[key]))
+ # Otherwise try setting attribute to object
+ elif element.object and element.attribute:
+ setattr(element.object, element.attribute, element.value)
- # TODO handle callback
+ else:
+ log.warning("Value of %s could not be stored" % element)
# Sub-Forms
type = None
def __init__(self, form, name=None, label=None, default=None,
- disabled=False, readonly=False, **kwargs):
+ disabled=False, readonly=False, object=None, attribute=None, store=None, **kwargs):
assert self.type
self.form = form
self.disabled = disabled
self.readonly = readonly
+ # Object & Attribute
+ self.object = object
+ self.attribute = attribute or name
+
+ # Import default value from object and attribute if none set
+ if self.default is None and self.object and self.attribute:
+ self.default = getattr(self.object, self.attribute)
+
+ # Callbacks
+ self.store = store
+
# Help text
self.help = None