From 7cd99abd4816cf826bb236681864d999a74789df Mon Sep 17 00:00:00 2001 From: Thomas NOEL Date: Thu, 21 Apr 2011 22:07:25 +0200 Subject: [PATCH] add output feeds --- base/models.py | 39 +++++++++++++++++++++++---------------- feeds.py | 32 ++++++++++++++++++++++++++++++++ urls.py | 3 +++ 3 files changed, 58 insertions(+), 16 deletions(-) create mode 100644 feeds.py diff --git a/base/models.py b/base/models.py index 7e86597..66648e8 100644 --- a/base/models.py +++ b/base/models.py @@ -8,20 +8,29 @@ UNKNOWN_DATE = datetime.datetime(1970,1,1) class Feed(models.Model): url = models.URLField() name = models.CharField(max_length=200) + shortname = models.CharField(max_length=20, blank=True) regex = models.CharField(max_length=500, default='.*(web|internet|logiciel|informati|grc|citoyen)') regex_exclude = models.CharField(max_length=500, default='', blank=True) add_date = models.DateTimeField(auto_now_add=True) parsed_date = models.DateTimeField(default=UNKNOWN_DATE) + duration = models.IntegerField(help_text='in minutes', default=30) def __unicode__(self): - return u'%s' % self.name + if self.shortname != '': + return u'%s' % self.shortname + else: + return u'%s' % self.name - def read(self): + def read(self, force=False): + if not force: + # abort if last read is recent (%s' % (self.link, self.title) diff --git a/feeds.py b/feeds.py new file mode 100644 index 0000000..9ef0fb3 --- /dev/null +++ b/feeds.py @@ -0,0 +1,32 @@ +# -*- encoding: utf-8 -*- + +from django.contrib.syndication.views import Feed +from base.models import Item + +class AoFeed(Feed): + title = "Appels d'offres pour EO" + link = "http://www.entrouvert.com/" + description = "Aggregation de flux RSS filtrés (relatifs à des AO)" + + def items(self): + return Item.objects.order_by('-add_date')[:300] + + def item_title(self, item): + if item.mark: + return '[!] ' + item.title + else: + return item.title + + def item_description(self, item): + return item.description + + def item_link(self, item): + return item.link + + +class AoFeedMark(AoFeed): + title = "Appels d'offres MARQUÉS" + + def items(self): + return Item.objects.filter(mark=True).order_by('-add_date')[:300] + diff --git a/urls.py b/urls.py index aacc978..b54842c 100644 --- a/urls.py +++ b/urls.py @@ -1,4 +1,5 @@ from django.conf.urls.defaults import * +from surveillao.feeds import AoFeed, AoFeedMark # enable the admin: from django.contrib import admin @@ -11,4 +12,6 @@ urlpatterns = patterns('', # (r'^admin/doc/', include('django.contrib.admindocs.urls')), (r'^admin/', include(admin.site.urls)), + (r'^all.atom$', AoFeed()), + (r'^mark.atom$', AoFeedMark()), )