summaryrefslogtreecommitdiff
path: root/sleekxmpp/plugins/xep_0004/dataforms.py
diff options
context:
space:
mode:
authorLance Stout <lancestout@gmail.com>2011-08-11 21:59:55 -0700
committerLance Stout <lancestout@gmail.com>2011-08-11 21:59:55 -0700
commit9b7ed73f95145f88887d6fc3daa1bd2a9596b943 (patch)
treefe5e828b16044cde1b4cbc8f6dd299463ac11b64 /sleekxmpp/plugins/xep_0004/dataforms.py
parenta189cb8333d5f59caa9015f0ded222696987d957 (diff)
downloadslixmpp-9b7ed73f95145f88887d6fc3daa1bd2a9596b943.tar.gz
slixmpp-9b7ed73f95145f88887d6fc3daa1bd2a9596b943.tar.bz2
slixmpp-9b7ed73f95145f88887d6fc3daa1bd2a9596b943.tar.xz
slixmpp-9b7ed73f95145f88887d6fc3daa1bd2a9596b943.zip
Reorganize XEP-0004.
Changes: May now use underscored method names form.field is replaced by form['fields'] form.get_fields no longer accepts use_dict parameter, it always returns an OrderedDict now form.set_fields will accept either an OrderedDict, or a list of (var, dict) tuples as before. Setting the form type to 'submit' will remove extra meta data from the form fields, leaving just the 'var' and 'value' Setting the form type to 'cancel' will remove all fields.
Diffstat (limited to 'sleekxmpp/plugins/xep_0004/dataforms.py')
-rw-r--r--sleekxmpp/plugins/xep_0004/dataforms.py60
1 files changed, 60 insertions, 0 deletions
diff --git a/sleekxmpp/plugins/xep_0004/dataforms.py b/sleekxmpp/plugins/xep_0004/dataforms.py
new file mode 100644
index 00000000..5414be5c
--- /dev/null
+++ b/sleekxmpp/plugins/xep_0004/dataforms.py
@@ -0,0 +1,60 @@
+"""
+ SleekXMPP: The Sleek XMPP Library
+ Copyright (C) 2011 Nathanael C. Fritz, Lance J.T. Stout
+ This file is part of SleekXMPP.
+
+ See the file LICENSE for copying permission.
+"""
+
+import copy
+
+from sleekxmpp.thirdparty import OrderedDict
+
+from sleekxmpp import Message
+from sleekxmpp.xmlstream import register_stanza_plugin, ElementBase, ET
+from sleekxmpp.xmlstream.handler import Callback
+from sleekxmpp.xmlstream.matcher import StanzaPath
+from sleekxmpp.plugins.base import base_plugin
+from sleekxmpp.plugins.xep_0004 import stanza
+from sleekxmpp.plugins.xep_0004.stanza import Form, FormField, FieldOption
+
+
+class xep_0004(base_plugin):
+ """
+ XEP-0004: Data Forms
+ """
+
+ def plugin_init(self):
+ self.xep = '0004'
+ self.description = 'Data Forms'
+ self.stanza = stanza
+
+ self.xmpp.registerHandler(
+ Callback('Data Form',
+ StanzaPath('message/form'),
+ self.handle_form))
+
+ register_stanza_plugin(FormField, FieldOption, iterable=True)
+ register_stanza_plugin(Form, FormField, iterable=True)
+ register_stanza_plugin(Message, Form)
+
+ def make_form(self, ftype='form', title='', instructions=''):
+ f = Form()
+ f['type'] = ftype
+ f['title'] = title
+ f['instructions'] = instructions
+ return f
+
+ def post_init(self):
+ base_plugin.post_init(self)
+ self.xmpp.plugin['xep_0030'].add_feature('jabber:x:data')
+
+ def handle_form(self, message):
+ self.xmpp.event("message_xform", message)
+
+ def build_form(self, xml):
+ return Form(xml=xml)
+
+
+xep_0004.makeForm = xep_0004.make_form
+xep_0004.buildForm = xep_0004.build_form