from savoirs.globals import META
from savoirs.models import SourceActualite, Actualite, Discipline, Evenement, Record, ListSet, HarvestLog, Profile
-admin.site.register(SourceActualite)
-
class ListSetFilterSpec(RelatedFilterSpec):
"""
Filtre custom automatiquement lié à un field nommé 'listsets'. Il a pour but de s'afficher
admin.site.register(Actualite, ActualiteAdmin)
+class SourceActualiteAdmin(admin.ModelAdmin):
+ actions = ['update_sources']
+ list_display = ['nom', 'url']
+
+ def update_sources(self, request, queryset):
+ for source in queryset:
+ source.update()
+ update_sources.short_description = u'Mettre à jour les fils sélectionnés'
+
+admin.site.register(SourceActualite, SourceActualiteAdmin)
class EvenementAdminForm(forms.ModelForm):
mots_cles = forms.CharField(label='Mots-clés', required=False)
# -*- encoding: utf-8 -*-
import caldav
import datetime
+import feedparser
import operator
import os
import pytz
class SourceActualite(models.Model):
nom = models.CharField(max_length=255)
- url = models.CharField(max_length=255)
+ url = models.CharField(max_length=255, verbose_name='URL')
+ class Meta:
+ verbose_name = u'fil RSS syndiqué'
+ verbose_name_plural = u'fils RSS syndiqués'
+
def __unicode__(self,):
return u"%s" % self.nom
+ def update(self):
+ """Mise à jour du fil RSS."""
+ feed = feedparser.parse(self.url)
+ for entry in feed.entries:
+ if Actualite.all_objects.filter(url=entry.link).count() == 0:
+ ts = entry.updated_parsed
+ date = datetime.date(ts.tm_year, ts.tm_mon, ts.tm_mday)
+ a = self.actualites.create(titre=entry.title,
+ texte=entry.summary_detail.value,
+ url=entry.link, date=date)
+
class ActualiteQuerySet(SEPQuerySet):
def filter_date(self, min=None, max=None):
texte = models.TextField(db_column='texte_actualite')
url = models.CharField(max_length=765, db_column='url_actualite')
date = models.DateField(db_column='date_actualite')
- visible = models.BooleanField(db_column='visible_actualite', default = False)
- ancienid = models.IntegerField(db_column='ancienId_actualite', blank = True, null = True)
- source = models.ForeignKey(SourceActualite, blank = True, null = True)
+ visible = models.BooleanField(db_column='visible_actualite', default=False)
+ ancienid = models.IntegerField(db_column='ancienId_actualite', blank=True, null=True)
+ source = models.ForeignKey(SourceActualite, blank=True, null=True, related_name='actualites')
disciplines = models.ManyToManyField(Discipline, blank=True, related_name="actualites")
regions = models.ManyToManyField(Region, blank=True, related_name="actualites", verbose_name='régions')
for d in glob.glob("%(directory)s/parts/*"):
sys.path[0:0] = [d,]
-from django.conf import settings
-from savoirs.models import SourceActualite, Actualite
-import feedparser, datetime
+from savoirs.models import SourceActualite
sources = SourceActualite.objects.all()
for src in sources:
- d = feedparser.parse(src.url)
- for entry in d.entries:
- if len(Actualite.objects.filter(url = entry.link)) == 0:
- print entry.updated_parsed
- ts = entry.updated_parsed
- date = datetime.date(ts.tm_year, ts.tm_mon, ts.tm_mday)
- print date
- a = Actualite(titre = entry.title,
- texte = entry.summary_detail.value,
- url = entry.link,
- date = date,
- visible = False,
- source = src,
- ancienid = 0)
- print a.save()
+ src.update()