diff options
author | Lance Stout <lancestout@gmail.com> | 2011-08-11 21:59:55 -0700 |
---|---|---|
committer | Lance Stout <lancestout@gmail.com> | 2011-08-11 21:59:55 -0700 |
commit | 9b7ed73f95145f88887d6fc3daa1bd2a9596b943 (patch) | |
tree | fe5e828b16044cde1b4cbc8f6dd299463ac11b64 /sleekxmpp/plugins/xep_0004/dataforms.py | |
parent | a189cb8333d5f59caa9015f0ded222696987d957 (diff) | |
download | slixmpp-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.py | 60 |
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 |