diff options
author | Alban Gruin | 2017-09-28 21:57:54 +0200 |
---|---|---|
committer | Alban Gruin | 2017-09-28 21:57:54 +0200 |
commit | a1231e340dbb9236f3804679360c0ab7895ae903 (patch) | |
tree | 4d7cbd83b898983526b4b860c4c46aaae1384413 | |
parent | 1c3a7336ad48742da5da56b301496a10a38b92b0 (diff) |
Affichage seulement des groupes intéressants pour éviter des clics inutiles :
Si les enfants d’un groupe ont eux-mêmes des enfants, on n’affiche pas
ce groupe mais ces enfants.
-rw-r--r-- | models.py | 7 | ||||
-rw-r--r-- | views.py | 2 |
2 files changed, 8 insertions, 1 deletions
@@ -65,6 +65,13 @@ class Timetable(SlugModel): class GroupManager(Manager): + def get_relevant_children(self, group): + parent_in = self.get_queryset().filter(parent=group) + return self.get_queryset().filter(Q(parent=group) | Q(parent__in=parent_in)) \ + .annotate(children_count=Count("children")) \ + .filter(children_count=0) \ + .order_by("name") + def get_relevant_groups(self, *args, **criteria): return self.get_queryset().filter(*args, **criteria) \ .annotate(children_count=Count("children")) \ @@ -75,7 +75,7 @@ def timetable(request, year_slug, timetable_slug, group_slug, year=None, week=No group = get_object_or_404(Group, slug=group_slug, timetable=timetable) if group.children.count(): - return group_list_common(request, timetable, group.children.order_by("name")) + return group_list_common(request, timetable, Group.objects.get_relevant_children(group)) courses = Course.objects.get_courses_for_group(group, begin__gte=start, begin__lt=end) \ .annotate(Max("last_update")) |