diff options
| author | Alban Gruin | 2018-04-25 21:18:25 +0200 | 
|---|---|---|
| committer | Alban Gruin | 2018-04-25 21:18:25 +0200 | 
| commit | 1789cbf1dcf555b35785e47237fb0a1f95720a45 (patch) | |
| tree | e1645a307ee790bdd50751c8bde5694890e0257b /feeds.py | |
| parent | 81046d1e44380fd961efbc308a85d134f33d2bab (diff) | |
| parent | 4c82869e3a590c982c43958e3e4b0f9fad440678 (diff) | |
Merge branch 'futur'
Diffstat (limited to 'feeds.py')
| -rw-r--r-- | feeds.py | 56 | 
1 files changed, 26 insertions, 30 deletions
| @@ -25,7 +25,7 @@ from django.utils.timezone import get_current_timezone_name  from icalendar import Calendar, Event -from .models import Course, Group +from .models import Course, Group, Timetable  from .templatetags.rooms import format_rooms  from .utils import get_current_or_next_week, get_week, group_courses @@ -64,8 +64,9 @@ class IcalFeed(Feed):      def get_object(self, request, year_slug, timetable_slug, group_slug):          try: -            group = Group.objects.get(timetable__year__slug=year_slug, -                                      timetable__slug=timetable_slug, +            timetable = Timetable.objects.get(year__slug=year_slug, +                                              slug=timetable_slug) +            group = Group.objects.get(source=timetable.source,                                        slug=group_slug)          except:              raise ObjectDoesNotExist @@ -87,7 +88,7 @@ class IcalFeed(Feed):          return item.name      def items(self, obj): -        return Course.objects.get_courses_for_group(obj) +        return Course.objects.get_courses(obj)      def item_extra_kwargs(self, item):          return {"uid": "{0}@celcatsanitizer".format(item.id), @@ -112,39 +113,37 @@ class RSSFeed(Feed):          _, end = get_week(year, week)          try: -            group = Group.objects.get(timetable__year__slug=year_slug, -                                      timetable__slug=timetable_slug, -                                      slug=group_slug) +            self.timetable = Timetable.objects.get(year__slug=year_slug, +                                                   slug=timetable_slug) +            self.group = Group.objects.get(source=self.timetable.source, +                                           slug=group_slug)          except:              raise ObjectDoesNotExist          else: -            updates = Course.objects.get_courses_for_group(group, -                                                           begin__lt=end) \ +            updates = Course.objects.get_courses(self.group, begin__lt=end) \                                      .annotate(year=ExtractYear("begin"),                                                week=ExtractWeek("begin")) \                                      .values("year", "week") \                                      .annotate(Count("year", distinct=True),                                                Max("last_update")) \                                      .order_by("-year", "-week")[:5] -            return group, updates +            return updates      def link(self, obj): -        group = obj[0]          link = reverse("timetable", -                       kwargs={"year_slug": group.timetable.year.slug, -                               "timetable_slug": group.timetable.slug, -                               "group_slug": group.slug}) +                       kwargs={"year_slug": self.timetable.year.slug, +                               "timetable_slug": self.timetable.slug, +                               "group_slug": self.group.slug})          return link      def title(self, obj): -        return "Emploi du temps du groupe {0}".format(obj[0]) +        return "Emploi du temps du groupe {0}".format(self.group)      def item_link(self, item): -        group = item["group"]          return reverse("timetable", -                       kwargs={"year_slug": group.timetable.year.slug, -                               "timetable_slug": group.timetable.slug, -                               "group_slug": group.slug, +                       kwargs={"year_slug": self.timetable.year.slug, +                               "timetable_slug": self.timetable.slug, +                               "group_slug": self.group.slug,                                 "year": item["year"],                                 "week": item["week"]}) @@ -152,7 +151,7 @@ class RSSFeed(Feed):          return item["description"]      def item_title(self, item): -        return "{0}, semaine {1} de {2}".format(item["group"], +        return "{0}, semaine {1} de {2}".format(self.group,                                                  item["week"],                                                  item["year"]) @@ -161,23 +160,20 @@ class RSSFeed(Feed):      def items(self, obj):          template = loader.get_template("timetable_common.html") -        group = obj[0] -        for update in obj[1]: +        for update in obj:              start, end = get_week(update["year"], update["week"]) -            courses = Course.objects.get_courses_for_group(group, -                                                           begin__gte=start, -                                                           begin__lt=end) -            context = {"group": group, -                       "courses": group_courses(courses), +            courses = Course.objects.get_courses(self.group, begin__gte=start, +                                                 begin__lt=end) +            context = {"courses": group_courses(courses),                         "last_update": update["last_update__max"],                         "year": update["year"], -                       "week": update["week"]} +                       "week": update["week"], +                       "group_mode": True} -            update["group"] = group              update["description"] = template.render(context) -        return obj[1] +        return obj  class AtomFeed(RSSFeed): | 
