summaryrefslogtreecommitdiffstats
path: root/hyperkitty/middleware.py
diff options
context:
space:
mode:
authorAurélien Bompard <aurelien@bompard.org>2013-10-18 16:15:40 +0200
committerAurélien Bompard <aurelien@bompard.org>2013-10-18 16:15:40 +0200
commitf1a0a71d971ffa4c01a88b92aa4869dd3a12a3fa (patch)
tree8289deaa33daafde6572e5e6abc6a8df11475ab1 /hyperkitty/middleware.py
parent5b0796d955930ff953f503c9f1966dfbbe876fec (diff)
downloadhyperkitty-f1a0a71d971ffa4c01a88b92aa4869dd3a12a3fa.tar.gz
hyperkitty-f1a0a71d971ffa4c01a88b92aa4869dd3a12a3fa.tar.xz
hyperkitty-f1a0a71d971ffa4c01a88b92aa4869dd3a12a3fa.zip
Handle permissions on private mailing-lists
Diffstat (limited to 'hyperkitty/middleware.py')
-rw-r--r--hyperkitty/middleware.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/hyperkitty/middleware.py b/hyperkitty/middleware.py
index 2b59744..823dd88 100644
--- a/hyperkitty/middleware.py
+++ b/hyperkitty/middleware.py
@@ -90,3 +90,33 @@ class TimezoneMiddleware(object):
return
if user_profile.timezone:
timezone.activate(user_profile.timezone)
+
+
+
+# Cache some metadata from Mailman about the logged in user
+
+from mailmanclient import Client as MailmanClient
+from mailmanclient import MailmanConnectionError
+from django.conf import settings
+
+class MailmanUserMetadata(object):
+
+ session_key = "subscribed"
+
+ def process_view(self, request, view_func, view_args, view_kwargs):
+ if not request.user.is_authenticated():
+ return
+ if not request.user.email:
+ return # Can this really happen?
+ if self.session_key in request.session:
+ return # Already set
+ client = MailmanClient('%s/3.0' %
+ settings.MAILMAN_REST_SERVER,
+ settings.MAILMAN_API_USER,
+ settings.MAILMAN_API_PASS)
+ try:
+ user = client.get_user(request.user.email)
+ except MailmanConnectionError:
+ return
+ request.session[self.session_key] = \
+ [ s.address for s in user.subscriptions ]