diff --git a/cnotmuch/database.py b/cnotmuch/database.py index 09af0df9..1619e454 100644 --- a/cnotmuch/database.py +++ b/cnotmuch/database.py @@ -225,12 +225,12 @@ class Tags(object): _get = nmlib.notmuch_tags_get _get.restype = c_char_p - def __init__(self, tags_p, db=None): + def __init__(self, tags_p, parent=None): """ msg_p is a pointer to an notmuch_message_t Structure. If it is None, we will raise an NotmuchError(STATUS.NULL_POINTER). - Is passed the db these tags are derived from, and saves a + Is passed the parent these tags are derived from, and saves a reference to it, so we can automatically delete the db object once all derived objects are dead. @@ -244,8 +244,9 @@ class Tags(object): NotmuchError(STATUS.NULL_POINTER) self._tags = tags_p - self._db = db - logging.debug("Inited Tags derived from %s" %(str(db))) + #save reference to parent object so we keep it alive + self._parent = parent + logging.debug("Inited Tags derived from %s" %(repr(parent))) def __iter__(self): """ Make Tags an iterator """ @@ -436,6 +437,11 @@ class Message(object): raise NotmuchError(STATUS.NULL_POINTER) return Tags(tags_p, self) + def __str__(self): + """A message() is represented by a 1-line summary""" + tags = str(self.get_tags()) + return "TODO: FIXME Sebastian Krzyszkowiak (2009-08-27) (%s)" % (tags) + def __del__(self): """Close and free the notmuch Message""" if self._msg is not None: diff --git a/notmuch b/notmuch index 478aed3a..4e259c1c 100755 --- a/notmuch +++ b/notmuch @@ -111,6 +111,19 @@ if __name__ == '__main__': if len(sys.argv) == 2: print HELPTEXT else: print "Not implemented" + elif sys.argv[1] == 'show': + db = Database() + if len(sys.argv) == 2: + #no further search term + querystr='' + else: + #mangle arguments wrapping terms with spaces in quotes + querystr = quote_query_line(sys.argv[2:]) + logging.debug("show "+querystr) + m = Query(db,querystr).search_messages() + for msg in m: + print("%s" % (msg)) + elif sys.argv[1] == 'new': #TODO: handle --verbose print "Not implemented." @@ -155,27 +168,8 @@ if __name__ == '__main__': #TODO: implement """ search [options...] [...] - - Search for messages matching the given search terms. - show [...] - - Show all messages matching the search terms. - reply [options...] [...] - - Construct a reply template for a set of messages. - tag +|- [...] [--] [...] - - Add/remove tags for all messages matching the search terms. - -dump [] - - Create a plain-text dump of the tags for each message. - restore - search-tags [ [...] ] - - List all tags found in the database or matching messages. """