diff --git a/sleekxmpp/plugins/stanza_pubsub.py b/sleekxmpp/plugins/stanza_pubsub.py index 09cff88..1d8c86f 100644 --- a/sleekxmpp/plugins/stanza_pubsub.py +++ b/sleekxmpp/plugins/stanza_pubsub.py @@ -286,39 +286,6 @@ stanzaPlugin(Pubsub, Configure) stanzaPlugin(Create, Configure) class DefaultConfig(ElementBase): - namespace = 'http://jabber.org/protocol/pubsub' - name = 'default' - plugin_attrib = 'default' - interfaces = set(('node', 'type', 'config')) - plugin_attrib_map = {} - plugin_tag_map = {} - - def __init__(self, *args, **kwargs): - ElementBase.__init__(self, *args, **kwargs) - - def getConfig(self): - config = self.xml.find('{jabber:x:data}x') - form = xep_0004.Form() - if config is not None: - form.fromXML(config) - return form - - def setConfig(self, value): - self.xml.append(value.getXML()) - return self - - def delConfig(self): - config = self.xml.find('{jabber:x:data}x') - self.xml.remove(config) - - def getType(self): - t = self._getAttr('type') - if not t: t == 'leaf' - return t - -stanzaPlugin(Pubsub, DefaultConfig) - -class DefaultConfigOwner(ElementBase): namespace = 'http://jabber.org/protocol/pubsub#owner' name = 'default' plugin_attrib = 'default' @@ -440,6 +407,7 @@ class OwnerDelete(ElementBase, OptionalSetting): plugin_attrib = 'delete' plugin_attrib_map = {} plugin_tag_map = {} + interfaces = set(('node',)) stanzaPlugin(PubsubOwner, OwnerDelete) diff --git a/sleekxmpp/stanza/iq.py b/sleekxmpp/stanza/iq.py index 8d91c83..4969b70 100644 --- a/sleekxmpp/stanza/iq.py +++ b/sleekxmpp/stanza/iq.py @@ -16,6 +16,7 @@ class Iq(RootStanza): interfaces = set(('type', 'to', 'from', 'id','query')) types = set(('get', 'result', 'set', 'error')) name = 'iq' + plugin_attrib = name namespace = 'jabber:client' def __init__(self, *args, **kwargs): diff --git a/sleekxmpp/stanza/message.py b/sleekxmpp/stanza/message.py index 9c2bf30..3834180 100644 --- a/sleekxmpp/stanza/message.py +++ b/sleekxmpp/stanza/message.py @@ -15,6 +15,7 @@ class Message(RootStanza): types = set((None, 'normal', 'chat', 'headline', 'error', 'groupchat')) sub_interfaces = set(('body', 'subject')) name = 'message' + plugin_attrib = name namespace = 'jabber:client' def getType(self): diff --git a/sleekxmpp/stanza/presence.py b/sleekxmpp/stanza/presence.py index 55f4047..c66246c 100644 --- a/sleekxmpp/stanza/presence.py +++ b/sleekxmpp/stanza/presence.py @@ -16,6 +16,7 @@ class Presence(RootStanza): showtypes = set(('dnd', 'chat', 'xa', 'away')) sub_interfaces = set(('status', 'priority')) name = 'presence' + plugin_attrib = name namespace = 'jabber:client' def getShowElement(self): diff --git a/sleekxmpp/xmlstream/stanzabase.py b/sleekxmpp/xmlstream/stanzabase.py index acb9578..6ed5cbd 100644 --- a/sleekxmpp/xmlstream/stanzabase.py +++ b/sleekxmpp/xmlstream/stanzabase.py @@ -117,7 +117,7 @@ class ElementBase(tostring.ToString): else: nodes = matchstring tagargs = nodes[0].split('@') - if tagargs[0] not in (self.plugins, self.name): return False + if tagargs[0] not in (self.plugins, self.plugin_attrib): return False founditerable = False for iterable in self.iterables: founditerable = iterable.match(nodes[1:]) @@ -325,8 +325,8 @@ class StanzaBase(ElementBase): def clear(self): for child in self.xml.getchildren(): self.xml.remove(child) - #for plugin in list(self.plugins.keys()): - # del self.plugins[plugin] + for plugin in list(self.plugins.keys()): + del self.plugins[plugin] def reply(self): self['from'], self['to'] = self['to'], self['from'] diff --git a/tests/test_pubsubstanzas.py b/tests/test_pubsubstanzas.py index 4f9faf7..ed37314 100644 --- a/tests/test_pubsubstanzas.py +++ b/tests/test_pubsubstanzas.py @@ -98,15 +98,15 @@ class testpubsubstanzas(unittest.TestCase): self.failUnless(xmlstring == str(iq) == str(iq2) == str(iq3)) def testDefault(self): - "Testing iq/default stanzas" + "Testing iq/pubsub_owner/default stanzas" from sleekxmpp.plugins import xep_0004 iq = self.ps.Iq() - iq['pubsub']['default'] - iq['pubsub']['default']['node'] = 'mynode' + iq['pubsub_owner']['default'] + iq['pubsub_owner']['default']['node'] = 'mynode' form = xep_0004.Form() form.addField('pubsub#title', ftype='text-single', value='This thing is awesome') - iq['pubsub']['default']['config'] = form - xmlstring = """This thing is awesome""" + iq['pubsub_owner']['default']['config'] = form + xmlstring = """This thing is awesome""" iq2 = self.ps.Iq(None, self.ps.ET.fromstring(xmlstring)) iq3 = self.ps.Iq() values = iq2.getValues() @@ -151,11 +151,16 @@ class testpubsubstanzas(unittest.TestCase): iq3 = self.ps.Iq() values = iq2.getValues() iq3.setValues(values) - #print() - #print(xmlstring) - #print(iq) - #print(iq2) - #print(iq3) + self.failUnless(xmlstring == str(iq) == str(iq2) == str(iq3)) + + def testDelete(self): + "Testing iq/pubsub_owner/delete stanzas" + iq = self.ps.Iq() + iq['pubsub_owner']['delete']['node'] = 'thingers' + xmlstring = """""" + iq2 = self.ps.Iq(None, self.ps.ET.fromstring(xmlstring)) + iq3 = self.ps.Iq() + iq3.setValues(iq2.getValues()) self.failUnless(xmlstring == str(iq) == str(iq2) == str(iq3)) suite = unittest.TestLoader().loadTestsFromTestCase(testpubsubstanzas)