Commit c2179e5c46677ed5d2952a564ef13edb756c3773
1 parent
731470ba
Updated to Mailman API v2 usage
Signed-off-by: Carlos Oliveira <carlospecter@gmail.com>
Showing
2 changed files
with
15 additions
and
4 deletions
Show diff stats
colab/accounts/utils/mailman.py
| @@ -91,7 +91,10 @@ def mailing_lists(**kwargs): | @@ -91,7 +91,10 @@ def mailing_lists(**kwargs): | ||
| 91 | 91 | ||
| 92 | def is_private_list(name): | 92 | def is_private_list(name): |
| 93 | try: | 93 | try: |
| 94 | - return dict(all_lists(private=True))[name] | 94 | + privacy = {} |
| 95 | + privacy.update({mlist.get('listname'): mlist.get('archive_private') | ||
| 96 | + for mlist in all_lists()}) | ||
| 97 | + return privacy[name] | ||
| 95 | except KeyError: | 98 | except KeyError: |
| 96 | return [] | 99 | return [] |
| 97 | 100 |
colab/super_archives/views.py
| @@ -32,15 +32,23 @@ class ThreadView(View): | @@ -32,15 +32,23 @@ class ThreadView(View): | ||
| 32 | thread = get_object_or_404(Thread, subject_token=thread_token, | 32 | thread = get_object_or_404(Thread, subject_token=thread_token, |
| 33 | mailinglist__name=mailinglist) | 33 | mailinglist__name=mailinglist) |
| 34 | 34 | ||
| 35 | - all_privates = dict(mailman.all_lists(private=True)) | ||
| 36 | - if all_privates[thread.mailinglist.name]: | 35 | + all_privates = [] |
| 36 | + all_privates.extend( | ||
| 37 | + [mlist.get('listname') | ||
| 38 | + for mlist in mailman.all_lists() | ||
| 39 | + if mlist.get('archive_private')] | ||
| 40 | + ) | ||
| 41 | + | ||
| 42 | + if all_privates.count(thread.mailinglist.name): | ||
| 37 | if not request.user.is_authenticated(): | 43 | if not request.user.is_authenticated(): |
| 38 | raise PermissionDenied | 44 | raise PermissionDenied |
| 39 | else: | 45 | else: |
| 40 | user = User.objects.get(username=request.user) | 46 | user = User.objects.get(username=request.user) |
| 41 | emails = user.emails.values_list('address', flat=True) | 47 | emails = user.emails.values_list('address', flat=True) |
| 42 | lists_for_user = mailman.get_user_mailinglists(user) | 48 | lists_for_user = mailman.get_user_mailinglists(user) |
| 43 | - if thread.mailinglist.name not in lists_for_user: | 49 | + listnames_for_user = [mlist.get("listname") |
| 50 | + for mlist in lists_for_user] | ||
| 51 | + if thread.mailinglist.name not in listnames_for_user: | ||
| 44 | raise PermissionDenied | 52 | raise PermissionDenied |
| 45 | 53 | ||
| 46 | thread.hit(request) | 54 | thread.hit(request) |