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: