#!/usr/bin/python # # Copyright © 2011 David Bremner <david@tethera.net> # License: Same as notmuch import datetime import notmuch import sys QUERY = "tag:notmuch::patch and not tag:notmuch::pushed" QUERY += " and not tag:notmuch::obsolete and not tag:notmuch::wip" QUERY += " and not tag:notmuch::stale and not tag:notmuch::contrib" QUERY += " and not tag:notmuch::python and not tag:notmuch::vim" QUERY += " and not tag:notmuch::moreinfo" def html_row(*args): print ' <tr><td>' print ' </td><td>'.join(args).encode('utf-8') print ' </td></tr>' db = notmuch.Database(mode=notmuch.Database.MODE.READ_WRITE) q_new = notmuch.Query(db, QUERY) q_new.set_sort(notmuch.Query.SORT.OLDEST_FIRST) headers = ['date','from','subject'] last = {} for header in headers: last[header] = None print '<h2>Notmuch Patches</h2>' print 'Generated: %s<br>' % datetime.date.today() print 'For more infomation see <a href="http://notmuchmail.org/nmbug">nmbug</a>' print '<h3>Query</h3>' print QUERY print '<h3>Result</h3>' print '<table>' for m in q_new.search_messages(): out = {}; for header in headers: if header != 'date': val = m.get_header(header) else: val = datetime.date.fromtimestamp(m.get_date()).isoformat() if last[header] == val: out[header] = "" else: out[header] = val last[header] = val mid=m.get_message_id() out['id'] = '<a href=http://mid.gmane.org/%s>id:%s</a>' % (mid,mid) html_row(out['date'],out['from'],out['subject'],out['id']) # print '%(date)-10.10s %(from)-20.20s %(subject)-40.40s id:%(id)s' % out print '</table>'