diff options
author | Robert Robinson <rerobins@gmail.com> | 2015-09-14 14:31:17 -0600 |
---|---|---|
committer | Robert Robinson <rerobins@gmail.com> | 2015-09-14 16:46:36 -0600 |
commit | 0724f623bb613007f9acd6540efd4f256c8b6503 (patch) | |
tree | 1b82d65e7f46656b067ddbfb536e0dac8c430036 /sleekxmpp/plugins/xep_0004 | |
parent | bb094cc6498838cece046d9ed74881232fb5010d (diff) | |
download | slixmpp-0724f623bb613007f9acd6540efd4f256c8b6503.tar.gz slixmpp-0724f623bb613007f9acd6540efd4f256c8b6503.tar.bz2 slixmpp-0724f623bb613007f9acd6540efd4f256c8b6503.tar.xz slixmpp-0724f623bb613007f9acd6540efd4f256c8b6503.zip |
Force forms and fields to use plugin resolution
Instead of using the interface/subinterface code that was currently being implemented for the plugin.
(cherry picked from commit 1467ec7)
Diffstat (limited to 'sleekxmpp/plugins/xep_0004')
-rw-r--r-- | sleekxmpp/plugins/xep_0004/stanza/field.py | 4 | ||||
-rw-r--r-- | sleekxmpp/plugins/xep_0004/stanza/form.py | 13 |
2 files changed, 10 insertions, 7 deletions
diff --git a/sleekxmpp/plugins/xep_0004/stanza/field.py b/sleekxmpp/plugins/xep_0004/stanza/field.py index 51f85995..73e48758 100644 --- a/sleekxmpp/plugins/xep_0004/stanza/field.py +++ b/sleekxmpp/plugins/xep_0004/stanza/field.py @@ -13,8 +13,9 @@ class FormField(ElementBase): namespace = 'jabber:x:data' name = 'field' plugin_attrib = 'field' + plugin_multi_attrib = 'fields' interfaces = set(('answer', 'desc', 'required', 'value', - 'options', 'label', 'type', 'var')) + 'label', 'type', 'var')) sub_interfaces = set(('desc',)) plugin_tag_map = {} plugin_attrib_map = {} @@ -165,6 +166,7 @@ class FieldOption(ElementBase): plugin_attrib = 'option' interfaces = set(('label', 'value')) sub_interfaces = set(('value',)) + plugin_multi_attrib = 'options' FormField.addOption = FormField.add_option diff --git a/sleekxmpp/plugins/xep_0004/stanza/form.py b/sleekxmpp/plugins/xep_0004/stanza/form.py index 1d733760..cca9d2e0 100644 --- a/sleekxmpp/plugins/xep_0004/stanza/form.py +++ b/sleekxmpp/plugins/xep_0004/stanza/form.py @@ -22,8 +22,8 @@ class Form(ElementBase): namespace = 'jabber:x:data' name = 'x' plugin_attrib = 'form' - interfaces = set(('fields', 'instructions', 'items', - 'reported', 'title', 'type', 'values')) + interfaces = set(('instructions', 'items', + 'reported', 'title', 'type', )) sub_interfaces = set(('title',)) form_types = set(('cancel', 'form', 'result', 'submit')) @@ -48,7 +48,7 @@ class Form(ElementBase): def set_type(self, ftype): self._set_attr('type', ftype) if ftype == 'submit': - fields = self['fields'] + fields = self.get_fields() for var in fields: field = fields[var] del field['type'] @@ -74,7 +74,8 @@ class Form(ElementBase): field['desc'] = desc field['required'] = required if options is not None: - field['options'] = options + for option in options: + field.add_option(**option) else: del field['type'] self.append(field) @@ -227,9 +228,9 @@ class Form(ElementBase): def set_values(self, values): fields = self['fields'] for field in values: - if field not in fields: + if field not in self.get_fields(): fields[field] = self.add_field(var=field) - fields[field]['value'] = values[field] + self.get_fields()[field]['value'] = values[field] def merge(self, other): new = copy.copy(self) |