From 2de2128b0ca43381d8d4d8b155d01cc1ce929e6e Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Tue, 17 Sep 2013 17:52:20 +0200 Subject: [PATCH] views: add recursive list members when computing list limitations --- docbow_project/docbow/views.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docbow_project/docbow/views.py b/docbow_project/docbow/views.py index 3bbe0ff..8aab2d1 100644 --- a/docbow_project/docbow/views.py +++ b/docbow_project/docbow/views.py @@ -73,6 +73,16 @@ def get_mailbox(request, mailbox_id, back='inbox'): def user_mailing_list_names(user): return user.mailing_lists.values_list('name', flat=True) +def recursive_lists(lists): + lists = set(lists) + count = len(lists) + while True: + lists |= set(MailingList.objects.filter(members_lists__in=lists)) + if len(lists) == count: + break + count = len(lists) + return lists + def get_file_form_kwargs(request): user = request.user kwargs = {} @@ -83,6 +93,7 @@ def get_file_form_kwargs(request): .filter(lists_limitation__mailing_list__in=user_lists) \ .distinct() \ .order_by('name') + lists = recursive_lists(lists) users = User.objects.filter(mailing_lists__in=lists, is_active=True) \ .distinct() if lists: