diff idavoll/data_form.py @ 100:0228725b705b

Initial revision
author Ralph Meijer <ralphm@ik.nu>
date Sun, 02 Jan 2005 20:09:31 +0000
parents
children fee92e499d6d
line wrap: on
line diff
--- /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)