diff options
author | Jesse Rosenthal <jrosenthal@jhu.edu> | 2010-03-28 00:02:44 +0100 |
---|---|---|
committer | Jesse Rosenthal <jrosenthal@jhu.edu> | 2010-03-28 00:02:44 +0100 |
commit | 61a547bd3e2760f1f835762f92c83cff2c1c71e5 (patch) | |
tree | 9fd235e233ac35e57a24de11dc7b6b04769b64fb | |
parent | 8b84f00cce6e64336e0ac62573ab181348112464 (diff) |
implement sort order for notmuch show
-rw-r--r-- | cnotmuch/message.py | 10 | ||||
-rwxr-xr-x | notmuch | 36 |
2 files changed, 32 insertions, 14 deletions
diff --git a/cnotmuch/message.py b/cnotmuch/message.py index 7274c6d..6a68c92 100644 --- a/cnotmuch/message.py +++ b/cnotmuch/message.py @@ -721,7 +721,7 @@ class Message(object): easy to change to a new format when the format changes.""" format = self.format_message_internal() - output = "\n\fmessage{ id:%s depth:%d match:%d filename:%s" \ + output = "\fmessage{ id:%s depth:%d match:%d filename:%s" \ % (format['id'], indent, format['match'], format['filename']) output += "\n\fheader{" @@ -729,7 +729,7 @@ class Message(object): output += "\n%s (%s) (" % (format["headers"]["from"], format["headers"]["date"]) output += ", ".join(format["tags"]) - output += ")\n" + output += ")" output += "\nSubject: %s" % format["headers"]["subject"] output += "\nFrom: %s" % format["headers"]["from"] @@ -739,7 +739,7 @@ class Message(object): if format["headers"]["bcc"]: output += "\nBcc: %s" % format["headers"]["bcc"] output += "\nDate: %s" % format["headers"]["date"] - output += "\nheader}\f" + output += "\n\fheader}" output += "\n\fbody{" @@ -748,7 +748,7 @@ class Message(object): for p in parts: if not p.has_key("filename"): output += "\n\fpart{ " - output += "ID: %d, Content-type:%s\n" % (p["id"], + output += "ID: %d, Content-type: %s\n" % (p["id"], p["content_type"]) if p.has_key("content"): output += "\n%s\n" % p["content"] @@ -763,7 +763,7 @@ class Message(object): output += "\n\fattachment}\n" output += "\n\fbody}\n" - output += "\n\fmessage}\n" + output += "\n\fmessage}" return output @@ -290,16 +290,34 @@ if __name__ == '__main__': #------------------------------------- elif sys.argv[1] == 'search': 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:]) + query_string = '' + sort_order="newest-first" + first_search_term = None + for (i, arg) in enumerate(sys.argv[1:]): + if arg.startswith('--sort='): + sort_order=arg.split("=")[1] + if not sort_order in ("oldest-first", "newest-first"): + raise Exception("unknown sort order") + elif not arg.startswith('--'): + #save the position of the first sys.argv that is a search term + first_search_term = i+1 + + if first_search_term: + #mangle arguments wrapping terms with spaces in quotes + querystr = quote_query_line(sys.argv[first_search_term:]) + + logging.debug("search "+querystr) - t = Query(db,querystr).search_threads() + qry = Query(db,querystr) + if sort_order == "oldest-first": + qry.set_sort(Query.SORT.OLDEST_FIRST) + else: + qry.set_sort(Query.SORT.NEWEST_FIRST) + t = qry.search_threads() + for thread in t: - print(str(thread)) + print(str(thread)) + #------------------------------------- elif sys.argv[1] == 'show': entire_thread = False @@ -344,7 +362,7 @@ if __name__ == '__main__': first_toplevel = False - msgs.print_messages(out_format, 0, True) + msgs.print_messages(out_format, 0, entire_thread) if out_format.lower() == "json": sys.stdout.write("]") |