diff options
author | Aurélien Bompard <aurelien@bompard.org> | 2014-01-06 19:26:10 +0100 |
---|---|---|
committer | Aurélien Bompard <aurelien@bompard.org> | 2014-01-06 19:26:10 +0100 |
commit | b78e4f39cce3db553f856f293f2660c87a007e9e (patch) | |
tree | 08650f1c321765aef2c2db68f44ac6ab349d2eee | |
parent | 47108988eb3bffaafae6b1ee8d275a0a2311d419 (diff) | |
download | hyperkitty-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.py | 22 |
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, |