100
|
1 from twisted.xish import domish |
|
2 |
|
3 NS_X_DATA = 'jabber:x:data' |
|
4 |
|
5 class Field(domish.Element): |
|
6 def __init__(self, type="text-single", var=None, label=None): |
|
7 domish.Element.__init__(self, (NS_X_DATA, 'field')) |
|
8 self["type"] = type |
|
9 if var is not None: |
|
10 self["var"] = var |
|
11 if label is not None: |
|
12 self["label"] = label |
|
13 |
|
14 def set_value(self, value): |
|
15 # TODO: handle *-multi types |
|
16 |
|
17 if self["type"] == 'boolean': |
|
18 value = str(int(bool(value))) |
|
19 else: |
|
20 value = str(value) |
|
21 |
|
22 try: |
|
23 value_element = self.value |
|
24 value_element.children = [] |
|
25 except: |
|
26 value_element = self.addElement("value") |
|
27 |
|
28 value_element.addContent(value) |
|
29 |
|
30 class Form(domish.Element): |
|
31 def __init__(self, type, form_type): |
|
32 domish.Element.__init__(self, (NS_X_DATA, 'x'), |
|
33 attribs={'type': type}) |
|
34 self.add_field_single(type="hidden", var="FORM_TYPE", value=form_type) |
|
35 |
|
36 def add_field_single(self, type="text-single", var=None, label=None, |
|
37 value=None): |
|
38 field = Field(type, var, label) |
|
39 if value is not None: |
|
40 field.set_value(value) |
|
41 self.addChild(field) |