diff options
author | Nathan Fritz <fritzy@netflint.net> | 2009-10-29 02:34:23 +0000 |
---|---|---|
committer | Nathan Fritz <fritzy@netflint.net> | 2009-10-29 02:34:23 +0000 |
commit | 44aa52663579bcd1a56d2f13cdc91b1ca2c2b542 (patch) | |
tree | 9466bb338e3fe20fb259a8cf3187dbf3e68488aa /sleekxmpp/plugins | |
parent | 8dbf53594bc9ea0aec1ecd81092d806d001a7b6c (diff) | |
download | slixmpp-44aa52663579bcd1a56d2f13cdc91b1ca2c2b542.tar.gz slixmpp-44aa52663579bcd1a56d2f13cdc91b1ca2c2b542.tar.bz2 slixmpp-44aa52663579bcd1a56d2f13cdc91b1ca2c2b542.tar.xz slixmpp-44aa52663579bcd1a56d2f13cdc91b1ca2c2b542.zip |
* fixed bugs with XEP 50 for components
* configuration-less nodes
Diffstat (limited to 'sleekxmpp/plugins')
-rw-r--r-- | sleekxmpp/plugins/xep_0004.py | 7 | ||||
-rw-r--r-- | sleekxmpp/plugins/xep_0050.py | 15 | ||||
-rw-r--r-- | sleekxmpp/plugins/xep_0060.py | 33 |
3 files changed, 31 insertions, 24 deletions
diff --git a/sleekxmpp/plugins/xep_0004.py b/sleekxmpp/plugins/xep_0004.py index faee631c..abd5ceef 100644 --- a/sleekxmpp/plugins/xep_0004.py +++ b/sleekxmpp/plugins/xep_0004.py @@ -108,6 +108,11 @@ class Form(FieldContainer): form1.fields[field.var].addOption(option, label) return form1 + def copy(self): + newform = Form(ftype=self.type) + newform.fromXML(self.getXML(self.type)) + return newform + def update(self, form): values = form.getValues() for var in values: @@ -126,7 +131,7 @@ class Form(FieldContainer): def setValues(self, values={}): for field in values: if field in self.field: - if isintance(values[field], list) or isinstance(values[field], tuple): + if isinstance(values[field], list) or isinstance(values[field], tuple): for value in values[field]: self.field[field].setValue(value) else: diff --git a/sleekxmpp/plugins/xep_0050.py b/sleekxmpp/plugins/xep_0050.py index 8c7e10d9..b75a675c 100644 --- a/sleekxmpp/plugins/xep_0050.py +++ b/sleekxmpp/plugins/xep_0050.py @@ -39,15 +39,16 @@ class xep_0050(base.base_plugin): self.xmpp.add_handler("<iq type='set' xmlns='%s'><command xmlns='http://jabber.org/protocol/commands' action='complete'/></iq>" % self.xmpp.default_ns, self.handler_command_complete) self.commands = {} self.sessions = {} + self.sd = self.xmpp.plugin['xep_0030'] def post_init(self): - self.xmpp['xep_0030'].add_feature('http://jabber.org/protocol/commands') + self.sd.add_feature('http://jabber.org/protocol/commands') def addCommand(self, node, name, form, pointer=None, multi=False): - self.xmpp['xep_0030'].add_item(None, name, 'http://jabber.org/protocol/commands', node) - self.xmpp['xep_0030'].add_identity('automation', 'command-node', name, node) - self.xmpp['xep_0030'].add_feature('http://jabber.org/protocol/commands', node) - self.xmpp['xep_0030'].add_feature('jabber:x:data', node) + self.sd.add_item(None, name, 'http://jabber.org/protocol/commands', node) + self.sd.add_identity('automation', 'command-node', name, node) + self.sd.add_feature('http://jabber.org/protocol/commands', node) + self.sd.add_feature('jabber:x:data', node) self.commands[node] = (name, form, pointer, multi) def getNewSession(self): @@ -80,7 +81,7 @@ class xep_0050(base.base_plugin): in_command = xml.find('{http://jabber.org/protocol/commands}command') sessionid = in_command.get('sessionid', None) pointer = self.sessions[sessionid]['next'] - results = self.xmpp['xep_0004'].makeForm('result') + results = self.xmpp.plugin['xep_0004'].makeForm('result') results.fromXML(in_command.find('{jabber:x:data}x')) pointer(results,sessionid) self.xmpp.send(self.makeCommand(xml.attrib['from'], in_command.attrib['node'], form=None, id=xml.attrib['id'], sessionid=sessionid, status='completed', actions=[])) @@ -91,7 +92,7 @@ class xep_0050(base.base_plugin): in_command = xml.find('{http://jabber.org/protocol/commands}command') sessionid = in_command.get('sessionid', None) pointer = self.sessions[sessionid]['next'] - results = self.xmpp['xep_0004'].makeForm('result') + results = self.xmpp.plugin['xep_0004'].makeForm('result') results.fromXML(in_command.find('{jabber:x:data}x')) form, npointer, next = pointer(results,sessionid) self.sessions[sessionid]['next'] = npointer diff --git a/sleekxmpp/plugins/xep_0060.py b/sleekxmpp/plugins/xep_0060.py index 68c391f6..734dd3da 100644 --- a/sleekxmpp/plugins/xep_0060.py +++ b/sleekxmpp/plugins/xep_0060.py @@ -18,25 +18,26 @@ class xep_0060(base.base_plugin): create.set('node', node) pubsub.append(create) configure = ET.Element('configure') - if config is None: - submitform = self.xmpp.plugin['xep_0004'].makeForm('submit') - else: + #if config is None: + # submitform = self.xmpp.plugin['xep_0004'].makeForm('submit') + #else: + if config is not None: submitform = config - if 'FORM_TYPE' in submitform.field: - submitform.field['FORM_TYPE'].setValue('http://jabber.org/protocol/pubsub#node_config') - else: - submitform.addField('FORM_TYPE', 'hidden', value='http://jabber.org/protocol/pubsub#node_config') - if collection: - if 'pubsub#node_type' in submitform.field: - submitform.field['pubsub#node_type'].setValue('collection') + if 'FORM_TYPE' in submitform.field: + submitform.field['FORM_TYPE'].setValue('http://jabber.org/protocol/pubsub#node_config') else: - submitform.addField('pubsub#node_type', value='collection') - else: - if 'pubsub#node_type' in submitform.field: - submitform.field['pubsub#node_type'].setValue('leaf') + submitform.addField('FORM_TYPE', 'hidden', value='http://jabber.org/protocol/pubsub#node_config') + if collection: + if 'pubsub#node_type' in submitform.field: + submitform.field['pubsub#node_type'].setValue('collection') + else: + submitform.addField('pubsub#node_type', value='collection') else: - submitform.addField('pubsub#node_type', value='leaf') - configure.append(submitform.getXML('submit')) + if 'pubsub#node_type' in submitform.field: + submitform.field['pubsub#node_type'].setValue('leaf') + else: + submitform.addField('pubsub#node_type', value='leaf') + configure.append(submitform.getXML('submit')) pubsub.append(configure) iq = self.xmpp.makeIqSet(pubsub) iq.attrib['to'] = jid |