diff options
| -rw-r--r-- | models.py | 15 | ||||
| -rw-r--r-- | views.py | 10 | 
2 files changed, 11 insertions, 14 deletions
| @@ -39,15 +39,16 @@ class Year(models.Model):  class Timetable(models.Model):      year = models.ForeignKey(Year, verbose_name="année") -    name = models.CharField(max_length=64, unique=True, verbose_name="nom") -    url = models.URLField(max_length=255, unique=True, verbose_name="URL") -    slug = models.SlugField(max_length=64, unique=True, default="") +    name = models.CharField(max_length=64, verbose_name="nom") +    url = models.URLField(max_length=255, verbose_name="URL") +    slug = models.SlugField(max_length=64, default="")      def __str__(self):          return self.year.name + " " + self.name      class Meta: +        unique_together = (("year", "name"), ("year", "slug"),)          verbose_name = "emploi du temps"          verbose_name_plural = "emplois du temps" @@ -71,8 +72,8 @@ class LastUpdate(models.Model):  class GroupManager(Manager): -    def get_relevant_groups(self, *args, **filters): -        return self.get_queryset().filter(*args, **filters).annotate(children_count=Count("children")).filter(children_count=0) +    def get_relevant_groups(self, *args, **criteria): +        return self.get_queryset().filter(*args, **criteria).annotate(children_count=Count("children")).filter(children_count=0)  class Group(models.Model): @@ -151,8 +152,8 @@ class Room(models.Model):  class CourseManager(Manager): -    def get_courses_for_group(self, group, **filters): -        return self.get_queryset().filter(Q(groups__td__isnull=True) | Q(groups__td=group.td), Q(groups__tp__isnull=True) | Q(groups__tp=group.tp), Q(groups__subgroup__isnull=True) | Q(groups__subgroup=group.subgroup), groups__mention=group.mention, timetable=group.timetable, **filters).order_by("begin") +    def get_courses_for_group(self, group, **criteria): +        return self.get_queryset().filter(Q(groups__td__isnull=True) | Q(groups__td=group.td), Q(groups__tp__isnull=True) | Q(groups__tp=group.tp), Q(groups__subgroup__isnull=True) | Q(groups__subgroup=group.subgroup), groups__mention=group.mention, timetable=group.timetable, **criteria).order_by("begin")      def get_weeks(self, **criteria):          return self.get_queryset().filter(**criteria).order_by("groups__name", "year", "week").annotate(_=Count(("groups", "year", "week", "begin")), year=ExtractYear("begin"), week=ExtractWeek("begin")) @@ -33,8 +33,7 @@ def mention_list(request, year_slug):      return render(request, "mention_list.html", {"year": year, "timetables": timetables})  def group_list(request, year_slug, timetable_slug): -    year_obj = get_object_or_404(Year, slug=year_slug) -    timetable = get_object_or_404(Timetable, year=year_obj, slug=timetable_slug) +    timetable = get_object_or_404(Timetable, year__slug=year_slug, slug=timetable_slug)      groups = Group.objects.get_relevant_groups(timetable=timetable).order_by("name")      year, week = get_current_week() @@ -62,8 +61,7 @@ def timetable(request, year_slug, timetable_slug, group_slug, year=None, week=No      start, end = get_week(int(year), int(week)) -    get_object_or_404(Year, slug=year_slug) -    timetable = get_object_or_404(Timetable, slug=timetable_slug) +    timetable = get_object_or_404(Timetable, year__slug=year_slug, slug=timetable_slug)      group = get_object_or_404(Group, slug=group_slug, timetable=timetable)      last_update = get_object_or_404(LastUpdate, timetable=timetable, week=week, year=year)      courses = Course.objects.get_courses_for_group(group, begin__gte=start, begin__lt=end) @@ -73,9 +71,7 @@ def timetable(request, year_slug, timetable_slug, group_slug, year=None, week=No      return render(request, "timetable.html", {"group": group, "courses": grouped_courses, "last_update": last_update.date, "year": year, "week": int(week)})  def subscribe(request, year_slug, timetable_slug, group_slug, year, week): -    year_obj = get_object_or_404(Year, slug=year_slug) -    timetable = get_object_or_404(Timetable, year=year_obj, slug=timetable_slug) -    group = get_object_or_404(Group, slug=group_slug, timetable=timetable) +    group = get_object_or_404(Group, slug=group_slug, timetable__slug=timetable_slug, timetable__year__slug=year_slug)      if request.method == "POST":          form = SubscribeForm(request.POST) | 
