summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAurélien Bompard <aurelien@bompard.org>2014-01-06 19:26:10 +0100
committerAurélien Bompard <aurelien@bompard.org>2014-01-06 19:26:10 +0100
commitb78e4f39cce3db553f856f293f2660c87a007e9e (patch)
tree08650f1c321765aef2c2db68f44ac6ab349d2eee
parent47108988eb3bffaafae6b1ee8d275a0a2311d419 (diff)
downloadhyperkitty-b78e4f39cce3db553f856f293f2660c87a007e9e.tar.gz
hyperkitty-b78e4f39cce3db553f856f293f2660c87a007e9e.tar.xz
hyperkitty-b78e4f39cce3db553f856f293f2660c87a007e9e.zip
Return a degraded public profile when Mailman is not available
-rw-r--r--hyperkitty/views/accounts.py22
1 files changed, 18 insertions, 4 deletions
diff --git a/hyperkitty/views/accounts.py b/hyperkitty/views/accounts.py
index e7ca11d..26d6a46 100644
--- a/hyperkitty/views/accounts.py
+++ b/hyperkitty/views/accounts.py
@@ -263,6 +263,12 @@ def subscriptions(request):
def public_profile(request, user_id):
+ class FakeMailmanUser(object):
+ display_name = None
+ created_on = None
+ addresses = []
+ subscription_list_ids = []
+ store = get_store(request)
try:
client = mailmanclient.Client('%s/3.0' %
settings.MAILMAN_REST_SERVER,
@@ -272,9 +278,13 @@ def public_profile(request, user_id):
except HTTPError:
raise Http404("No user with this ID: %s" % user_id)
except mailmanclient.MailmanConnectionError:
- return HttpResponse("Can't connect to Mailman",
- content_type="text/plain", status=500)
- store = get_store(request)
+ db_user = store.get_user(user_id)
+ if db_user is None:
+ return HttpResponse("Can't connect to Mailman",
+ content_type="text/plain", status=500)
+ mm_user = FakeMailmanUser()
+ mm_user.display_name = list(db_user.senders)[0].name
+ mm_user.addresses = db_user.addresses
fullname = mm_user.display_name
if not fullname:
fullname = store.get_sender_name(user_id)
@@ -291,11 +301,15 @@ def public_profile(request, user_id):
email = unicode(mm_user.addresses[0])
except KeyError:
email = None
+ if mm_user.created_on is not None:
+ creation = dateutil.parser.parse(mm_user.created_on)
+ else:
+ creation = None
context = {
"fullname": fullname,
"mm_user": mm_user,
"email": email,
- "creation": dateutil.parser.parse(mm_user.created_on),
+ "creation": creation,
"subscriptions": subscriptions,
"posts_count": sum([s["posts_count"] for s in subscriptions]),
"likes": likes,