diff options
| -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")) | 
