mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-26 04:45:20 +01:00
Implement Message.get_replies()
This commit is contained in:
parent
e3aa28f055
commit
5186611851
1 changed files with 41 additions and 2 deletions
|
@ -714,7 +714,13 @@ class Messages(object):
|
||||||
"""len(:class:`Messages`) returns the number of contained messages
|
"""len(:class:`Messages`) returns the number of contained messages
|
||||||
|
|
||||||
.. note:: As this iterates over the messages, we will not be able to
|
.. note:: As this iterates over the messages, we will not be able to
|
||||||
iterate over them again (as in retrieve them)!
|
iterate over them again! So this will fail::
|
||||||
|
|
||||||
|
#THIS FAILS
|
||||||
|
msgs = Database().create_query('').search_message()
|
||||||
|
if len(msgs) > 0: #this 'exhausts' msgs
|
||||||
|
# next line raises NotmuchError(STATUS.NOT_INITIALIZED)!!!
|
||||||
|
for msg in msgs: print msg
|
||||||
"""
|
"""
|
||||||
if self._msgs is None:
|
if self._msgs is None:
|
||||||
raise NotmuchError(STATUS.NOT_INITIALIZED)
|
raise NotmuchError(STATUS.NOT_INITIALIZED)
|
||||||
|
@ -754,6 +760,10 @@ class Message(object):
|
||||||
_get_thread_id = nmlib.notmuch_message_get_thread_id
|
_get_thread_id = nmlib.notmuch_message_get_thread_id
|
||||||
_get_thread_id.restype = c_char_p
|
_get_thread_id.restype = c_char_p
|
||||||
|
|
||||||
|
"""notmuch_message_get_replies"""
|
||||||
|
_get_replies = nmlib.notmuch_message_get_replies
|
||||||
|
_get_replies.restype = c_void_p
|
||||||
|
|
||||||
"""notmuch_message_get_tags (notmuch_message_t *message)"""
|
"""notmuch_message_get_tags (notmuch_message_t *message)"""
|
||||||
_get_tags = nmlib.notmuch_message_get_tags
|
_get_tags = nmlib.notmuch_message_get_tags
|
||||||
_get_tags.restype = c_void_p
|
_get_tags.restype = c_void_p
|
||||||
|
@ -811,6 +821,33 @@ class Message(object):
|
||||||
|
|
||||||
return Message._get_thread_id (self._msg);
|
return Message._get_thread_id (self._msg);
|
||||||
|
|
||||||
|
def get_replies(self):
|
||||||
|
"""Gets all direct replies to this message as :class:`Messages` iterator
|
||||||
|
|
||||||
|
.. note:: This call only makes sense if 'message' was
|
||||||
|
ultimately obtained from a :class:`Thread` object, (such as
|
||||||
|
by coming directly from the result of calling
|
||||||
|
:meth:`Thread.get_toplevel_messages` or by any number of
|
||||||
|
subsequent calls to :meth:`get_replies`). If this message was
|
||||||
|
obtained through some non-thread means, (such as by a call
|
||||||
|
to :meth:`Query.search_messages`), then this function will
|
||||||
|
return `None`.
|
||||||
|
|
||||||
|
:returns: :class:`Messages` or `None` if there are no replies to
|
||||||
|
this message.
|
||||||
|
:exception: :exc:`NotmuchError` STATUS.NOT_INITIALIZED if the message
|
||||||
|
is not initialized.
|
||||||
|
"""
|
||||||
|
if self._msg is None:
|
||||||
|
raise NotmuchError(STATUS.NOT_INITIALIZED)
|
||||||
|
|
||||||
|
msgs_p = Message._get_replies(self._msg);
|
||||||
|
|
||||||
|
if msgs_p is None:
|
||||||
|
return None
|
||||||
|
|
||||||
|
return Messages(msgs_p,self)
|
||||||
|
|
||||||
def get_date(self):
|
def get_date(self):
|
||||||
"""Returns time_t of the message date
|
"""Returns time_t of the message date
|
||||||
|
|
||||||
|
@ -1071,7 +1108,9 @@ class Message(object):
|
||||||
msg['from'] = self.get_header('from')
|
msg['from'] = self.get_header('from')
|
||||||
msg['tags'] = str(self.get_tags())
|
msg['tags'] = str(self.get_tags())
|
||||||
msg['date'] = date.fromtimestamp(self.get_date())
|
msg['date'] = date.fromtimestamp(self.get_date())
|
||||||
return "%(from)s (%(date)s) (%(tags)s)" % (msg)
|
replies = self.get_replies()
|
||||||
|
msg['replies'] = len(replies) if replies is not None else -1
|
||||||
|
return "%(from)s (%(date)s) (%(tags)s) (%(replies)d) replies" % (msg)
|
||||||
|
|
||||||
def format_as_text(self):
|
def format_as_text(self):
|
||||||
"""Output like notmuch show (Not implemented)"""
|
"""Output like notmuch show (Not implemented)"""
|
||||||
|
|
Loading…
Reference in a new issue