datatracker/ietf/wgcharter/feeds.py
2012-01-24 17:17:24 +00:00

68 lines
2.6 KiB
Python

# Copyright The IETF Trust 2011, All Rights Reserved
from django.conf import settings
from django.contrib.syndication.feeds import Feed, FeedDoesNotExist
from django.utils.feedgenerator import Atom1Feed
from django.core.exceptions import ObjectDoesNotExist
from django.core.urlresolvers import reverse
from ietf.utils.history import find_history_active_at
from ietf.group.models import Group
from ietf.wgcharter.views import _get_history, _get_html
from wgcharter import markup_txt
import datetime
import re, os
class GroupComments(Feed):
feed_type = Atom1Feed
title_template = "feeds/wg_charter_title.html"
description_template = "feeds/wg_charter_description.html"
def get_object(self, bits):
if len(bits) != 1:
raise ObjectDoesNotExist
return Group.objects.get(acronym=bits[0])
def title(self, obj):
return "WG Record changes for %s" % obj.acronym
def link(self, obj):
if obj is None:
raise FeedDoesNotExist
return reverse('wg_view', kwargs={'name': obj.acronym})
def description(self, obj):
return self.title(obj)
def items(self, obj):
history = _get_history(obj)
for h in history:
gh = find_history_active_at(obj, h['date'])
if gh:
h['chairs'] = [x.person.plain_name() for x in gh.rolehistory_set.filter(name__slug="chair")]
h['secr'] = [x.person.plain_name() for x in gh.rolehistory_set.filter(name__slug="secr")]
h['techadv'] = [x.person.plain_name() for x in gh.rolehistory_set.filter(name__slug="techadv")]
else:
h['chairs'] = [x.person.plain_name() for x in obj.role_set.filter(name__slug="chair")]
h['secr'] = [x.person.plain_name() for x in obj.role_set.filter(name__slug="secr")]
h['techadv'] = [x.person.plain_name() for x in obj.role_set.filter(name__slug="techadv")]
dh = find_history_active_at(obj.charter, h['date'])
if dh:
h['rev'] = dh.rev
h['charter'] = _get_html(
str(dh.name)+"-"+str(dh.rev)+",html",
os.path.join(dh.get_file_path(), dh.name+"-"+dh.rev+".txt"))
else:
h['rev'] = obj.charter.rev
h['charter'] = _get_html(
"charter-ietf-"+str(obj.acronym)+"-"+str(obj.charter.rev)+",html",
os.path.join(obj.charter.get_file_path(), "charter-ietf-"+obj.acronym+"-"+obj.charter.rev+".txt"))
return history
def item_link(self, obj):
return reverse('wg_view', kwargs={'name': obj['group'].acronym})
def item_pubdate(self, obj):
return obj['date']