[mhonarc] show links to archives more briefly
- From: Olav Vitters <ovitters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mhonarc] show links to archives more briefly
- Date: Tue, 12 Feb 2013 22:55:49 +0000 (UTC)
commit 3f00e11b0bc699df930a43ca9257e30c9c7fe018
Author: Olav Vitters <olav vitters nl>
Date: Tue Feb 12 23:55:46 2013 +0100
show links to archives more briefly
archive.py | 92 ++++++++++++++++++++++++++++++++++++++---------------------
1 files changed, 59 insertions(+), 33 deletions(-)
---
diff --git a/archive.py b/archive.py
index 4bf23e1..cbd753e 100755
--- a/archive.py
+++ b/archive.py
@@ -213,6 +213,7 @@ class Archiver:
os.symlink(os.path.join(cls.PRIVATE_ARCHIVE_DIR, listname), os.path.join(cls.PUBLIC_ARCHIVE_DIR, listname))
dirs = {}
+ years = {}
re_path = re.compile(r'^(\d+)-(\w+)$')
for a_dir in os.listdir(path):
mo = re_path.match(a_dir)
@@ -223,42 +224,58 @@ class Archiver:
month = mo.group(2).lower()
if month in cls.MONTHS:
- dirs[a_dir] = (long(year) * 100) + cls.MONTHS[month]
+ monthnr = cls.MONTHS[month]
+ dirs[a_dir] = (long(year) * 100) + monthnr
+ if not year in years:
+ years[year] = {}
+ years[year][monthnr] = (a_dir, month)
else:
dirs[a_dir] = a_dir
with open(os.path.join(path, 'index.html'), 'w') as fp:
- fp.write('''
- <table border=3>
- <tr><td>Archive</td>
- <td>View by:</td>
- <td>Downloadable version</td></tr>''')
-
-
- for a_dir in sorted(dirs, key=dirs.get):
- # XXX - write header
- for fmt in ("%s.txt", "%s.txt.gz"):
- mboxfile = fmt % a_dir
- if os.path.exists(os.path.join(path, mboxfile)):
- stat = os.stat(os.path.join(path, mboxfile))
- mboxsize = stat.st_size
- break
- else:
- mboxsize = 0
-
- fp.write('''
- <tr>
- <td>%s</td>
- <td>
- <A href="%s/thread.html">Thread</a>
- <A href="%s/date.html">Date</a>
- <A href="%s/author.html">Author</a>
- </td>
- <td><A href="%s">%s</a></td>
- </tr>''' % (a_dir, a_dir, a_dir, a_dir, mboxfile, human_size(mboxsize)))
+ # Overview per thread, date, author
+ for link in ("thread", "date", "author"):
+ fp.write('<h2>By %s</h2>' % link.title())
+ fp.write('<table border=0>')
+ for year in sorted(years, reverse=True):
+ fp.write('''<tr><th>%s</th>''' % year)
+
+ for monthnr in xrange(1, 13):
+ if monthnr in years[year]:
+ fp.write('<td><a href="%s/%s.html">%s</a></td>' % (years[year][monthnr][0], link, years[year][monthnr][1][:3].title()))
+ else:
+ fp.write('<td> </td>')
+ fp.write('</tr>')
+ fp.write('</table>')
+
+ # Overview of downloadable versions
+ fp.write('<h2>Download</h2>')
+ fp.write('<table border=0>')
+ fp.write('<tr><th>Year</th>')
+ for month in sorted(cls.MONTHS, key=cls.MONTHS.get):
+ fp.write('''<th>%s</th>''' % month[:3].title())
+
+ for year in sorted(years, reverse=True):
+ fp.write('''<tr><th>%s</th>''' % year)
+ for monthnr in xrange(1, 13):
+ if monthnr in years[year]:
+ mboxsize = 0
+ a_dir = years[year][monthnr][0]
+ for fmt in ("%s.txt", "%s.txt.gz"):
+ mboxfile = fmt % a_dir
+ if os.path.exists(os.path.join(path, mboxfile)):
+ stat = os.stat(os.path.join(path, mboxfile))
+ mboxsize = stat.st_size
+ break
+
+ fp.write('<td><a href="%s">%s</a></td>' % (mboxfile, human_size(mboxsize)))
+ else:
+ fp.write('<td> </td>')
+ fp.write('</tr>')
+ fp.write('</table>')
+
fp.write('''
- </table>
</div> <!-- end of div.body -->
<div id="footer_community"></div>
@@ -427,7 +444,16 @@ def main():
archiver.process_fd(options.infile)
if __name__ == "__main__":
- main()
- print >>sys.stderr, "INCOMPLETE"
- sys.exit(1)
+ try:
+ main()
+ except KeyboardInterrupt:
+ print('Interrupted')
+ sys.exit(1)
+ except EOFError:
+ print('EOF')
+ sys.exit(1)
+ except IOError, e:
+ if e.errno != errno.EPIPE:
+ raise
+ sys.exit(0)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]