diff options
| author | David Bremner <bremner@debian.org> | 2011-12-14 22:50:31 -0400 |
|---|---|---|
| committer | David Bremner <bremner@debian.org> | 2011-12-14 22:50:31 -0400 |
| commit | d1ff4f6f5d3a316926b8474d86afe68779e1f597 (patch) | |
| tree | 3c569e28cb0d46c523d82ac220cfa512466fcbaf | |
| parent | e3a39fd9e4e247df1855117a19a3f2a31916e555 (diff) | |
nmbug: add source for report generator
| -rw-r--r-- | nmbug.mdwn | 1 | ||||
| -rw-r--r-- | nmbug/report.py.mdwn | 79 |
2 files changed, 80 insertions, 0 deletions
@@ -4,6 +4,7 @@ There is a dump of (one view of) the nmbug [[status|nmbug/status]]. It is even more experimental than everything else here, and currently manually updated. +It is generated by a [[python script|nmbug/report.py]]. ## Getting set up diff --git a/nmbug/report.py.mdwn b/nmbug/report.py.mdwn new file mode 100644 index 0000000..b89323d --- /dev/null +++ b/nmbug/report.py.mdwn @@ -0,0 +1,79 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> +<html> +<head> +<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> +<title>nmbug report generator</title> +<link rel="stylesheet" type="text/css" href="highlight.css"> +</head> +<body class="hl"> +<pre class="hl"><span class="hl slc">#!/usr/bin/python</span> +<span class="hl slc">#</span> +<span class="hl slc"># Copyright © 2011 David Bremner <david@tethera.net></span> +<span class="hl slc"># License: Same as notmuch</span> + +<span class="hl kwa">import</span> datetime +<span class="hl kwa">import</span> notmuch +<span class="hl kwa">import</span> sys + +QUERY <span class="hl opt">=</span> <span class="hl str">"tag:notmuch::patch and not tag:notmuch::pushed"</span> +QUERY <span class="hl opt">+=</span> <span class="hl str">" and not tag:notmuch::obsolete and not tag:notmuch::wip"</span> +QUERY <span class="hl opt">+=</span> <span class="hl str">" and not tag:notmuch::stale and not tag:notmuch::contrib"</span> +QUERY <span class="hl opt">+=</span> <span class="hl str">" and not tag:notmuch::python and not tag:notmuch::vim"</span> +QUERY <span class="hl opt">+=</span> <span class="hl str">" and not tag:notmuch::moreinfo"</span> + +<span class="hl kwa">def</span> <span class="hl kwd">html_row</span><span class="hl opt">(*</span>args<span class="hl opt">):</span> + <span class="hl kwa">print</span> <span class="hl str">' <tr><td>'</span> + <span class="hl kwa">print</span> <span class="hl str">' </td><td>'</span><span class="hl opt">.</span><span class="hl kwd">join</span><span class="hl opt">(</span>args<span class="hl opt">).</span><span class="hl kwd">encode</span><span class="hl opt">(</span><span class="hl str">'utf-8'</span><span class="hl opt">)</span> + <span class="hl kwa">print</span> <span class="hl str">' </td></tr>'</span> + +db <span class="hl opt">=</span> notmuch<span class="hl opt">.</span><span class="hl kwd">Database</span><span class="hl opt">(</span>mode<span class="hl opt">=</span>notmuch<span class="hl opt">.</span>Database<span class="hl opt">.</span>MODE<span class="hl opt">.</span>READ_WRITE<span class="hl opt">)</span> +q_new <span class="hl opt">=</span> notmuch<span class="hl opt">.</span><span class="hl kwd">Query</span><span class="hl opt">(</span>db<span class="hl opt">,</span> QUERY<span class="hl opt">)</span> +q_new<span class="hl opt">.</span><span class="hl kwd">set_sort</span><span class="hl opt">(</span>notmuch<span class="hl opt">.</span>Query<span class="hl opt">.</span>SORT<span class="hl opt">.</span>OLDEST_FIRST<span class="hl opt">)</span> + +headers <span class="hl opt">= [</span><span class="hl str">'date'</span><span class="hl opt">,</span><span class="hl str">'from'</span><span class="hl opt">,</span><span class="hl str">'subject'</span><span class="hl opt">]</span> +last <span class="hl opt">= {}</span> + +<span class="hl kwa">for</span> header <span class="hl kwa">in</span> headers<span class="hl opt">:</span> + last<span class="hl opt">[</span>header<span class="hl opt">] =</span> <span class="hl kwa">None</span> + +<span class="hl kwa">print</span> <span class="hl str">'<h2>Notmuch Patches</h2>'</span> + +<span class="hl kwa">print</span> <span class="hl str">'Generated: %s<br>'</span> <span class="hl opt">%</span> datetime<span class="hl opt">.</span>date<span class="hl opt">.</span><span class="hl kwd">today</span><span class="hl opt">()</span> + +<span class="hl kwa">print</span> <span class="hl str">'For more infomation see <a href="http://notmuchmail.org/nmbug">nmbug</a>'</span> + +<span class="hl kwa">print</span> <span class="hl str">'<h3>Query</h3>'</span> +<span class="hl kwa">print</span> QUERY + +<span class="hl kwa">print</span> <span class="hl str">'<h3>Result</h3>'</span> + + +<span class="hl kwa">print</span> <span class="hl str">'<table>'</span> +<span class="hl kwa">for</span> m <span class="hl kwa">in</span> q_new<span class="hl opt">.</span><span class="hl kwd">search_messages</span><span class="hl opt">():</span> + + out <span class="hl opt">= {};</span> + + <span class="hl kwa">for</span> header <span class="hl kwa">in</span> headers<span class="hl opt">:</span> + <span class="hl kwa">if</span> header <span class="hl opt">!=</span> <span class="hl str">'date'</span><span class="hl opt">:</span> + val <span class="hl opt">=</span> m<span class="hl opt">.</span><span class="hl kwd">get_header</span><span class="hl opt">(</span>header<span class="hl opt">)</span> + <span class="hl kwa">else</span><span class="hl opt">:</span> + val <span class="hl opt">=</span> datetime<span class="hl opt">.</span>date<span class="hl opt">.</span><span class="hl kwd">fromtimestamp</span><span class="hl opt">(</span>m<span class="hl opt">.</span><span class="hl kwd">get_date</span><span class="hl opt">()).</span><span class="hl kwd">isoformat</span><span class="hl opt">()</span> + + <span class="hl kwa">if</span> last<span class="hl opt">[</span>header<span class="hl opt">] ==</span> val<span class="hl opt">:</span> + out<span class="hl opt">[</span>header<span class="hl opt">] =</span> <span class="hl str">""</span> + <span class="hl kwa">else</span><span class="hl opt">:</span> + out<span class="hl opt">[</span>header<span class="hl opt">] =</span> val + last<span class="hl opt">[</span>header<span class="hl opt">] =</span> val + + mid<span class="hl opt">=</span>m<span class="hl opt">.</span><span class="hl kwd">get_message_id</span><span class="hl opt">()</span> + + out<span class="hl opt">[</span><span class="hl str">'id'</span><span class="hl opt">] =</span> <span class="hl str">'<a href=http://mid.gmane.org/%s>id:%s</a>'</span> <span class="hl opt">% (</span>mid<span class="hl opt">,</span>mid<span class="hl opt">)</span> + + <span class="hl kwd">html_row</span><span class="hl opt">(</span>out<span class="hl opt">[</span><span class="hl str">'date'</span><span class="hl opt">],</span>out<span class="hl opt">[</span><span class="hl str">'from'</span><span class="hl opt">],</span>out<span class="hl opt">[</span><span class="hl str">'subject'</span><span class="hl opt">],</span>out<span class="hl opt">[</span><span class="hl str">'id'</span><span class="hl opt">])</span> + +<span class="hl slc"># print '%(date)-10.10s %(from)-20.20s %(subject)-40.40s id:%(id)s' % out</span> +<span class="hl kwa">print</span> <span class="hl str">'</table>'</span> +</pre> +</body> +</html> +<!--HTML generated by highlight 3.5, http://www.andre-simon.de/--> |
