From 1121cad788f01bee80f281f8da4e5b22dfa342f1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dagfinn=20Ilmari=20Manns=C3=A5ker?= <ilmari@ilmari.org>
Date: Wed, 1 Mar 2017 21:58:41 +0000
Subject: [PATCH 2/2] MIME-decode headers from the archive JSON API

---
 pgcommitfest/commitfest/ajax.py | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/pgcommitfest/commitfest/ajax.py b/pgcommitfest/commitfest/ajax.py
index cffc33d..4f4df6b 100644
--- a/pgcommitfest/commitfest/ajax.py
+++ b/pgcommitfest/commitfest/ajax.py
@@ -6,6 +6,9 @@ from django.contrib.auth.decorators import login_required
 from django.contrib.auth.models import User
 from django.db import transaction
 
+from codecs import decode
+from email.header import decode_header
+
 import httplib
 import socket
 import urllib
@@ -53,6 +56,15 @@ def _archivesAPI(suburl, params=None):
 		h.close()
 	except socket.error, e:
 		raise Http503("Failed to communicate with archives backend: %s" % e)
+
+	# MIME-decode possibly-encoded headers
+	for m in r:
+		for h in ('from','to','cc','subj'):
+			try:
+				m[h] = ''.join([decode(v, c if c else 'ascii') for (v, c) in decode_header(m[h])])
+			except:
+				# Do nothing if the header doesn't exist or the decode fails
+				pass
 	return r
 
 def getThreads(request):
-- 
2.7.4

