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

91 lines
3.3 KiB
Python

import re, os
from django.contrib.syndication.feeds import Feed
from django.utils.feedgenerator import Atom1Feed
from django.conf import settings
from ietf.proceedings.models import WgProceedingsActivities
from ietf.proceedings.models import Slide, WgAgenda, Proceeding
from datetime import datetime, time
class LatestWgProceedingsActivity(Feed):
feed_type = Atom1Feed
link = "/foo"
description = "foobar"
language = "en"
feed_url = "/feed/wg-proceedings/"
base_url = "http://www3.ietf.org/proceedings/"
def items(self):
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
objs = []
from ietf.doc.models import Document
for doc in Document.objects.filter(type__in=("agenda", "minutes", "slides")).order_by('-time')[:60]:
obj = dict(
title=doc.type_id,
group_acronym=doc.name.split("-")[2],
date=doc.time,
link=self.base_url + os.path.join(doc.get_file_path(), doc.external_url)[len(settings.AGENDA_PATH):],
author=""
)
objs.append(obj)
return objs
objs = []
for act in WgProceedingsActivities.objects.order_by('-act_date')[:60]:
obj = {}
m = re.match("^slide, '(.*)', was uploaded$", act.activity)
if m:
obj['title'] = m.group(1)
obj['title'] = re.sub("[^ -~]+", "", obj['title'])
slides = Slide.objects.filter(meeting=act.meeting).filter(slide_name=m.group(1)).filter(group_acronym_id=act.group_acronym_id)
if len(slides) == 1:
obj['link'] = self.base_url + slides[0].file_loc()
m = re.match("^agenda was uploaded$", act.activity)
if m:
obj['title'] = "agenda";
agendas = WgAgenda.objects.filter(meeting=act.meeting).filter(group_acronym_id=act.group_acronym_id)
if len(agendas) == 1:
dir = Proceeding.objects.get(meeting_num=act.meeting).dir_name
obj['link'] = self.base_url + dir + "/agenda/" + agendas[0].filename
if len(obj) > 0:
try:
act.irtf = False
obj['group_acronym'] = act.acronym()
except:
act.irtf = True
try:
obj['group_acronym'] = act.acronym()
except:
obj['group_acronym'] = "?"
obj['date'] = datetime.combine(act.act_date, time(int(act.act_time[0:2]), int(act.act_time[3:5]), int(act.act_time[6:8])))
obj['author'] = str(act.act_by)
objs.append(obj)
return objs
def get_object(self, bits):
obj = {}
obj['title'] = "This is the title";
return obj
def title(self, obj):
return "Meeting Materials Activity"
def item_link(self, item):
if 'link' in item:
return item['link']
else:
return ""
def item_pubdate(self, item):
return item['date']
def item_author_name(self, item):
return item['author']
def item_author_email(self, item):
return None;