summaryrefslogtreecommitdiffstats
path: root/hyperkitty
diff options
context:
space:
mode:
Diffstat (limited to 'hyperkitty')
-rw-r--r--hyperkitty/middleware.py12
1 files changed, 9 insertions, 3 deletions
diff --git a/hyperkitty/middleware.py b/hyperkitty/middleware.py
index 59bd3af..2a8fb77 100644
--- a/hyperkitty/middleware.py
+++ b/hyperkitty/middleware.py
@@ -156,7 +156,7 @@ class MailmanUserMetadata(object):
return
if not request.user.email:
return # Can this really happen?
- if self.session_key in request.session:
+ if "subscribed" in request.session and "user_id" in request.session:
return # Already set
client = MailmanClient('%s/3.0' %
settings.MAILMAN_REST_SERVER,
@@ -164,7 +164,13 @@ class MailmanUserMetadata(object):
settings.MAILMAN_API_PASS)
try:
user = client.get_user(request.user.email)
- except (MailmanConnectionError, HTTPError):
+ except MailmanConnectionError:
return
- request.session[self.session_key] = \
+ except HTTPError, err:
+ if err.code == 404:
+ user = client.create_user(request.user.email,"")
+ else:
+ return
+ request.session["user_id"] = user.user_id
+ request.session["subscribed"] = \
[ s.address for s in user.subscriptions ]