#repertoire { border:1px solid #bbb; padding:20px; margin: 10px; width:95% }
#repertoire th, td { padding:5px }
+
.errorlist {color:red}
select { width:100%; overflow:hidden }
.publications_autre {border:1px solid #CCC; background:#FAFAFA; margin:10px; padding:10px; display:none;}
+
+#actualites {position: relative;}
+#rss-actualites {position: absolute; right: 26px; top: 10px;}
class ActualiteAdmin(admin.ModelAdmin):
list_filter = ('visible',)
- list_display = ('titre', 'date', 'visible')
+ list_display = ('titre', 'source', 'date', 'visible')
actions = ['rendre_visible', 'rendre_invisible']
# actions
from django.shortcuts import render_to_response
from datamaster_modeles.models import Thematique, Pays, Region
-from savoirs.models import Record, Discipline, Actualite
+from savoirs.models import Record, Discipline, Actualite, Serveur
# Dashboard
class RecordDashboard:
class SourceActualite(models.Model):
nom = models.CharField(max_length=255)
url = models.CharField(max_length=255)
+
+ def __unicode__(self,):
+ return u"%s" % self.nom
class Actualite(models.Model):
id = models.AutoField(primary_key=True, db_column='id_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)
def __unicode__ (self):
return "%s" % (self.titre)
--- /dev/null
+# -*- encoding: utf-8 -*-
+from django.contrib.syndication.feeds import Feed
+from savoirs.models import Actualite
+from datetime import datetime, time
+from BeautifulSoup import BeautifulStoneSoup
+
+class FilActualite(Feed):
+ title = "Dernières actualités du portail des ressources scientifiques et pédagogiques de l'AUF"
+ link = '/'
+ description = "Agrégateur de ressources scientifiques et pédagogiques de l'AUF"
+ limitation = 10
+
+ def items(self):
+ return Actualite.objects.filter(visible=True).order_by('-date')[:self.limitation]
+
+ def item_title(self, item):
+ return item.titre
+
+ def item_description(self, item):
+ return item.url
+
+ def item_link(self, item):
+ return item.url
+
+ def item_pubdate(self,item):
+ return datetime.combine(item.date, time())
+
+
+ def item_author_name(self,item):
+ if item.source:
+ return item.source.nom
+
from savoirs.models import SourceActualite, Actualite
import feedparser, datetime
-sources = [x.url for x in SourceActualite.objects.all()]
-for url in sources:
- d = feedparser.parse(url)
+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
url = entry.link,
date = date,
visible = False,
+ source = src,
ancienid = 0)
print a.save()
{% block contenu %}
<div class="demi-gauche clearfix">
- <div class="box">
+ <div id="actualites" class="box">
<h4>Actualités</h4>
+ <a id="rss-actualites" href="/rss/actualites"><img src="/media/img/feed.png" /></a>
<ul class="liste-de-l-accueil">
{% comment %}<!-- dans la vue, cloner avoirListeActualitesAccueil -->{% endcomment %}
<li class="clearfix">
<span class="la-date">{{ article.date|date:"d F Y" }}</span>
<a href="{{ article.url }}" class="le-titre">{{ article.titre }}</a>
+ {% if article.source %}
+ <span class="la-date">source: {{ article.source.nom }}</span>
+ {% endif %}
{% comment %}
<span class="le-resume">{{ article.texte }} - <a href="{{ article.url }}">Lire</a></span>
{% endcomment %}
from django.conf.urls.defaults import patterns, include, handler500, url
from django.conf import settings
from django.contrib import admin
+from savoirs.rss import FilActualite
admin.autodiscover()
handler500 # Pyflakes
+site_feeds = {'actualites': FilActualite }
+
+
urlpatterns = patterns(
'',
url(r'^admin_tools/', include('admin_tools.urls')),
(r'^sites/$', 'sitotheque.views.index'),
(r'^sites/(?P<id>\d+)/$', 'sitotheque.views.retrieve'),
+
+ (r'^rss/(.*)/$', 'django.contrib.syndication.views.feed', {'feed_dict':site_feeds}),
+
)
if settings.DEBUG: