diff options
Diffstat (limited to 'sleekxmpp/stanza/presence.py')
-rw-r--r-- | sleekxmpp/stanza/presence.py | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/sleekxmpp/stanza/presence.py b/sleekxmpp/stanza/presence.py index c66246c9..0da7ffc8 100644 --- a/sleekxmpp/stanza/presence.py +++ b/sleekxmpp/stanza/presence.py @@ -5,36 +5,34 @@ See the file license.txt for copying permission. """ -from .. xmlstream.stanzabase import StanzaBase -from xml.etree import cElementTree as ET + from . error import Error from . rootstanza import RootStanza +from .. xmlstream.stanzabase import StanzaBase, ET + class Presence(RootStanza): - interfaces = set(('type', 'to', 'from', 'id', 'status', 'priority')) + interfaces = set(('type', 'to', 'from', 'id', 'show', 'status', 'priority')) types = set(('available', 'unavailable', 'error', 'probe', 'subscribe', 'subscribed', 'unsubscribe', 'unsubscribed')) showtypes = set(('dnd', 'chat', 'xa', 'away')) - sub_interfaces = set(('status', 'priority')) + sub_interfaces = set(('show', 'status', 'priority')) name = 'presence' plugin_attrib = name namespace = 'jabber:client' - def getShowElement(self): - return self.xml.find("{%s}show" % self.namespace) + def setShow(self, show): + if show in self.showtypes: + self._setSubText('show', text=show) + return self def setType(self, value): - show = self.getShowElement() if value in self.types: - if show is not None: - self.xml.remove(show) + self['show'] = None if value == 'available': value = '' self._setAttr('type', value) elif value in self.showtypes: - if show is None: - show = ET.Element("{%s}show" % self.namespace) - self.xml.append(show) - show.text = value + self['show'] = value return self def setPriority(self, value): @@ -48,9 +46,7 @@ class Presence(RootStanza): def getType(self): out = self._getAttr('type') if not out: - show = self.getShowElement() - if show is not None: - out = show.text + out = self['show'] if not out or out is None: out = 'available' return out |