diff options
author | Aurélien Bompard <aurelien@bompard.org> | 2013-10-18 16:15:40 +0200 |
---|---|---|
committer | Aurélien Bompard <aurelien@bompard.org> | 2013-10-18 16:15:40 +0200 |
commit | f1a0a71d971ffa4c01a88b92aa4869dd3a12a3fa (patch) | |
tree | 8289deaa33daafde6572e5e6abc6a8df11475ab1 /hyperkitty/middleware.py | |
parent | 5b0796d955930ff953f503c9f1966dfbbe876fec (diff) | |
download | hyperkitty-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.py | 30 |
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 ] |