diff options
-rw-r--r-- | feeds.py | 23 |
1 files changed, 21 insertions, 2 deletions
@@ -15,12 +15,14 @@ from django.core.exceptions import ObjectDoesNotExist from django.contrib.syndication.views import Feed -from django.utils.feedgenerator import SyndicationFeed +from django.db.models import Q +from django.utils.feedgenerator import Atom1Feed, SyndicationFeed from icalendar import Calendar, Event -from .models import Course, Group, Timetable, Year +from .models import Course, Group, LastUpdate, Timetable, Year from .templatetags.rooms import format_rooms +from .utils import get_current_or_next_week ICAL_NAMES = ["summary", "description", "location", "start", "dtstart", "dtend"] @@ -70,3 +72,20 @@ class IcalFeed(Feed): "dtend": item.end, "summary": item.name, "location": format_rooms(item.rooms.all())} + + +class AtomFeed(Feed): + feed_type = Atom1Feed + + def get_object(self, request, year_slug, timetable_slug, group_slug): + year, week = get_current_or_next_week() + try: + group = Group.objects.get(timetable__year__slug=year_slug, timetable__slug=timetable_slug, slug=group_slug) + updates = LastUpdate.objects.filter(Q(year=year, week__lte=week) | Q(year__lt=year), timetable__year__slug=year_slug, timetable__slug=timetable_slug).order_by("-year", "-week")[:5] + except: + raise ObjectDoesNotExist + else: + return group, updates + + def items(self, obj): + pass |