diff options
author | Lance Stout <lancestout@gmail.com> | 2012-06-22 23:17:15 -0700 |
---|---|---|
committer | Lance Stout <lancestout@gmail.com> | 2012-06-22 23:17:15 -0700 |
commit | 5d6019a962fd1a30ed04520892836cdecc7fe19f (patch) | |
tree | 6ee7b956a813af2f0507867dc861f4aead3479e2 /sleekxmpp/stanza/message.py | |
parent | eb5df1aa3722e6e85b9683805b4088f4340918aa (diff) | |
parent | 85ef2d8d0bcc92cd20d857d01bcf1bba56bc8edf (diff) | |
download | slixmpp-5d6019a962fd1a30ed04520892836cdecc7fe19f.tar.gz slixmpp-5d6019a962fd1a30ed04520892836cdecc7fe19f.tar.bz2 slixmpp-5d6019a962fd1a30ed04520892836cdecc7fe19f.tar.xz slixmpp-5d6019a962fd1a30ed04520892836cdecc7fe19f.zip |
Merge branch 'master' into develop
Diffstat (limited to 'sleekxmpp/stanza/message.py')
-rw-r--r-- | sleekxmpp/stanza/message.py | 44 |
1 files changed, 38 insertions, 6 deletions
diff --git a/sleekxmpp/stanza/message.py b/sleekxmpp/stanza/message.py index 407802bd..02133682 100644 --- a/sleekxmpp/stanza/message.py +++ b/sleekxmpp/stanza/message.py @@ -7,7 +7,7 @@ """ from sleekxmpp.stanza.rootstanza import RootStanza -from sleekxmpp.xmlstream import StanzaBase +from sleekxmpp.xmlstream import StanzaBase, ET class Message(RootStanza): @@ -54,13 +54,14 @@ class Message(RootStanza): del_mucnick -- Dummy method to prevent deletion. """ - namespace = 'jabber:client' name = 'message' - interfaces = set(('type', 'to', 'from', 'id', 'body', 'subject', - 'mucroom', 'mucnick')) - sub_interfaces = set(('body', 'subject')) + namespace = 'jabber:client' plugin_attrib = name - types = set((None, 'normal', 'chat', 'headline', 'error', 'groupchat')) + interfaces = set(['type', 'to', 'from', 'id', 'body', 'subject', + 'thread', 'parent_thread', 'mucroom', 'mucnick']) + sub_interfaces = set(['body', 'subject', 'thread']) + lang_interfaces = sub_interfaces + types = set(['normal', 'chat', 'headline', 'error', 'groupchat']) def get_type(self): """ @@ -72,6 +73,31 @@ class Message(RootStanza): """ return self._get_attr('type', 'normal') + def get_parent_thread(self): + """Return the message thread's parent thread.""" + thread = self.xml.find('{%s}thread' % self.namespace) + if thread is not None: + return thread.attrib.get('parent', '') + return '' + + def set_parent_thread(self, value): + """Add or change the message thread's parent thread.""" + thread = self.xml.find('{%s}thread' % self.namespace) + if value: + if thread is None: + thread = ET.Element('{%s}thread' % self.namespace) + self.xml.append(thread) + thread.attrib['parent'] = value + else: + if thread is not None and 'parent' in thread.attrib: + del thread.attrib['parent'] + + def del_parent_thread(self): + """Delete the message thread's parent reference.""" + thread = self.xml.find('{%s}thread' % self.namespace) + if thread is not None and 'parent' in thread.attrib: + del thread.attrib['parent'] + def chat(self): """Set the message type to 'chat'.""" self['type'] = 'chat' @@ -96,10 +122,16 @@ class Message(RootStanza): clear -- Indicates if existing content should be removed before replying. Defaults to True. """ + thread = self['thread'] + parent = self['parent_thread'] + StanzaBase.reply(self, clear) if self['type'] == 'groupchat': self['to'] = self['to'].bare + self['thread'] = thread + self['parent_thread'] = parent + del self['id'] if body is not None: |