lists.py 876 B

123456789101112131415161718192021222324252627282930
  1. from misago.forums.models import Forum
  2. def get_forums_list(user, parent=None):
  3. if parent:
  4. queryset = parent.get_descendants().order_by('lft')
  5. else:
  6. queryset = Forum.objects.all_forums()
  7. queryset_with_acl = queryset.filter(id__in=user.acl['visible_forums'])
  8. forums_dict = {}
  9. forums_list = []
  10. parent_level = parent.level + 1 if parent else 1
  11. for forum in queryset_with_acl:
  12. forum.is_read = True
  13. forum.subforums = []
  14. forums_dict[forum.pk] = forum
  15. forums_list.append(forum)
  16. if forum.level > 1:
  17. forums_dict[forum.parent_id].subforums.append(forum)
  18. flat_list = []
  19. for forum in forums_list:
  20. has_content = (forum.role != "category" or forum.subforums)
  21. if forum.level == parent_level and has_content:
  22. flat_list.append(forum)
  23. return flat_list