datatracker/ietf/group/feeds.py
Henrik Levkowetz 726fcbf27d Removed all __future__ imports.
- Legacy-Id: 17391
2020-03-05 23:53:42 +00:00

56 lines
1.7 KiB
Python

# Copyright The IETF Trust 2011-2020, All Rights Reserved
# -*- coding: utf-8 -*-
from django.contrib.syndication.views import Feed, FeedDoesNotExist
from django.utils.feedgenerator import Atom1Feed
from django.urls import reverse as urlreverse
from django.utils.html import strip_tags
from django.template.defaultfilters import truncatewords
from ietf.group.models import Group, GroupEvent
from ietf.doc.models import DocEvent
class GroupChangesFeed(Feed):
feed_type = Atom1Feed
description_template = "group/feed_item_description.html"
def get_object(self, request, acronym):
return Group.objects.get(acronym=acronym)
def title(self, obj):
return "Changes for %s %s" % (obj.acronym, obj.type)
def link(self, obj):
if not obj:
raise FeedDoesNotExist
return obj.about_url()
def description(self, obj):
return self.title(obj)
def items(self, obj):
events = list(obj.groupevent_set.all().select_related("group"))
if obj.charter:
events += list(obj.charter.docevent_set.all())
events.sort(key=lambda e: (e.time, e.id), reverse=True)
return events
def item_link(self, obj):
if isinstance(obj, DocEvent):
return urlreverse("ietf.doc.views_doc.document_main", kwargs={'name': obj.doc.name })
elif isinstance(obj, GroupEvent):
return obj.group.about_url()
def item_pubdate(self, obj):
return obj.time
def item_title(self, obj):
title = "%s - %s" % (truncatewords(strip_tags(obj.desc), 10), obj.by)
if isinstance(obj, DocEvent):
title = "Chartering: %s" % title
return title