Commit b216ed6cb67150b09c982969c49d13f7d1703e46

Authored by Carlos Coêlho
Committed by Charles Oliveira
1 parent 87e9e4a6

Updated to Mailman API v2 usage

Signed-off-by: Carlos Oliveira <carlospecter@gmail.com>
colab/accounts/utils/mailman.py
... ... @@ -91,7 +91,10 @@ def mailing_lists(**kwargs):
91 91  
92 92 def is_private_list(name):
93 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 98 except KeyError:
96 99 return []
97 100  
... ...
colab/super_archives/views.py
... ... @@ -33,17 +33,23 @@ class ThreadView(View):
33 33 thread = get_object_or_404(Thread, subject_token=thread_token,
34 34 mailinglist__name=mailinglist)
35 35  
36   - # TODO: Refactor this code
37   - # Use local flag is_private instead of always check the API!!
38   - all_privates = dict(mailman.all_lists(private=True))
39   - if all_privates[thread.mailinglist.name]:
  36 + all_privates = []
  37 + all_privates.extend(
  38 + [mlist.get('listname')
  39 + for mlist in mailman.all_lists()
  40 + if mlist.get('archive_private')]
  41 + )
  42 +
  43 + if all_privates.count(thread.mailinglist.name):
40 44 if not request.user.is_authenticated():
41 45 raise PermissionDenied
42 46 else:
43 47 user = User.objects.get(username=request.user)
44 48 emails = user.emails.values_list('address', flat=True)
45 49 lists_for_user = mailman.get_user_mailinglists(user)
46   - if thread.mailinglist.name not in lists_for_user:
  50 + listnames_for_user = [mlist.get("listname")
  51 + for mlist in lists_for_user]
  52 + if thread.mailinglist.name not in listnames_for_user:
47 53 raise PermissionDenied
48 54  
49 55 thread.hit(request)
... ...