X-Git-Url: https://git.notmuchmail.org/git?a=blobdiff_plain;f=devel%2Fnmbug%2Fnmbug-status;h=018f1911988018fa278d81026f91584ff7414c56;hb=0d563dae1d86f22b10981e99d69d0eb0b69a131d;hp=873a46a890d6250d522ef88eeff9e021e81c81dc;hpb=9b98c5f8e933e531777abe87210db2f946801261;p=notmuch
diff --git a/devel/nmbug/nmbug-status b/devel/nmbug/nmbug-status
index 873a46a8..018f1911 100755
--- a/devel/nmbug/nmbug-status
+++ b/devel/nmbug/nmbug-status
@@ -21,8 +21,10 @@ except ImportError: # Python 2
import json
import argparse
import os
+import re
import sys
import subprocess
+import xml.sax.saxutils
_ENCODING = locale.getpreferredencoding() or sys.getdefaultencoding()
@@ -168,24 +170,32 @@ class Page (object):
class HtmlPage (Page):
+ _slug_regexp = re.compile('\W+')
+
def _write_header(self, views, stream):
super(HtmlPage, self)._write_header(views=views, stream=stream)
stream.write('
\n')
for view in views:
+ if 'id' not in view:
+ view['id'] = self._slug(view['title'])
stream.write(
- '- {title}
\n'.format(**view))
+ '- {title}
\n'.format(**view))
stream.write('
\n')
def _write_view_header(self, view, stream):
- stream.write('{title}
\n'.format(**view))
+ stream.write('{title}
\n'.format(**view))
+ stream.write('\n')
if 'comment' in view:
stream.write(view['comment'])
stream.write('\n')
for line in [
'The view is generated from the following query:',
- '
',
+ '',
+ '',
+ ' ',
view['query-string'],
- '
',
+ ' ',
+ '',
]:
stream.write(line)
stream.write('\n')
@@ -195,19 +205,22 @@ class HtmlPage (Page):
return
stream.write('\n')
for thread in threads:
+ stream.write(' \n')
for message_display_data in thread:
stream.write((
- '\n'
- ' {date} | \n'
- ' {message-id-term} | \n'
- '
\n'
- '\n'
- ' {from} | \n'
- ' {subject} | \n'
- '
\n'
+ ' \n'
+ ' {date} | \n'
+ ' {message-id-term} | \n'
+ '
\n'
+ ' \n'
+ ' {from} | \n'
+ ' {subject} | \n'
+ '
\n'
).format(**message_display_data))
+ stream.write(' \n')
if thread != threads[-1]:
- stream.write('
|
\n')
+ stream.write(
+ '
|
\n')
stream.write('
\n')
def _message_display_data(self, *args, **kwargs):
@@ -217,28 +230,71 @@ class HtmlPage (Page):
if 'subject' in display_data and 'message-id' in display_data:
d = {
'message-id': quote(display_data['message-id']),
- 'subject': display_data['subject'],
+ 'subject': xml.sax.saxutils.escape(display_data['subject']),
}
display_data['subject'] = (
'{subject}'
).format(**d)
+ for key in ['message-id', 'from']:
+ if key in display_data:
+ display_data[key] = xml.sax.saxutils.escape(display_data[key])
return (running_data, display_data)
+ def _slug(self, string):
+ return self._slug_regexp.sub('-', string)
+
_PAGES['text'] = Page()
_PAGES['html'] = HtmlPage(
header='''
-
-Notmuch Patches
+
+ Notmuch Patches
+
Notmuch Patches
+
Generated: {date}
For more infomation see nmbug
+
Views
-'''.format(date=datetime.datetime.utcnow().date()),
+'''.format(date=datetime.datetime.utcnow().date(),
+ inter_message_padding='0.25em',
+ border_radius='0.5em'),
footer='\n\n',
)