# HG changeset patch # User Ralph Meijer # Date 1104696571 0 # Node ID 0228725b705bc457075682f184a33d73b0b03515 # Parent 886caecb0030717140bd264fe18f2d831eae8dd1 Initial revision diff -r 886caecb0030 -r 0228725b705b idavoll/data_form.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idavoll/data_form.py Sun Jan 02 20:09:31 2005 +0000 @@ -0,0 +1,41 @@ +from twisted.xish import domish + +NS_X_DATA = 'jabber:x:data' + +class Field(domish.Element): + def __init__(self, type="text-single", var=None, label=None): + domish.Element.__init__(self, (NS_X_DATA, 'field')) + self["type"] = type + if var is not None: + self["var"] = var + if label is not None: + self["label"] = label + + def set_value(self, value): + # TODO: handle *-multi types + + if self["type"] == 'boolean': + value = str(int(bool(value))) + else: + value = str(value) + + try: + value_element = self.value + value_element.children = [] + except: + value_element = self.addElement("value") + + value_element.addContent(value) + +class Form(domish.Element): + def __init__(self, type, form_type): + domish.Element.__init__(self, (NS_X_DATA, 'x'), + attribs={'type': type}) + self.add_field_single(type="hidden", var="FORM_TYPE", value=form_type) + + def add_field_single(self, type="text-single", var=None, label=None, + value=None): + field = Field(type, var, label) + if value is not None: + field.set_value(value) + self.addChild(field)