|
@@ -1,52 +1,43 @@
|
|
|
+# -*- coding: utf-8 -*-
|
|
|
+from __future__ import unicode_literals
|
|
|
+
|
|
|
import feedparser
|
|
|
import HTMLParser
|
|
|
|
|
|
from django.views.decorators.cache import cache_page
|
|
|
from django.template import RequestContext
|
|
|
from django.shortcuts import render_to_response
|
|
|
-from django.http import HttpResponse
|
|
|
+from django.http import HttpResponse, HttpResponseNotFound, HttpResponseServerError
|
|
|
from django.conf import settings
|
|
|
|
|
|
|
|
|
-def feed_provider(request):
|
|
|
- feed_url = ''
|
|
|
- limit = 3
|
|
|
- try:
|
|
|
- if settings.FEED_PROVIDER_URL:
|
|
|
- feed_url = settings.FEED_PROVIDER_URL
|
|
|
- if settings.FEED_PROVIDER_MAX_ENTRIES:
|
|
|
- limit = settings.FEED_PROVIDER_MAX_ENTRIES
|
|
|
- except:
|
|
|
- pass
|
|
|
-
|
|
|
- return feed(request, feed_url, limit)
|
|
|
-
|
|
|
-
|
|
|
-def feed_ffdn(request):
|
|
|
- feed_url = ''
|
|
|
- limit = 3
|
|
|
- try:
|
|
|
- if settings.FEED_FFDN_URL:
|
|
|
- feed_url = settings.FEED_FFDN_URL
|
|
|
- if settings.FEED_FFDN_MAX_ENTRIES:
|
|
|
- limit = settings.FEED_FFDN_MAX_ENTRIES
|
|
|
- except:
|
|
|
- pass
|
|
|
-
|
|
|
- return feed(request, feed_url, limit)
|
|
|
-
|
|
|
-
|
|
|
@cache_page(60 * 60 * 24) # Cache 24h
|
|
|
-def feed(request, feed_url, limit):
|
|
|
+def feed(request, feed_name):
|
|
|
+ feeds = settings.FEEDS
|
|
|
+ feed = None
|
|
|
+ # Recherce le flux passé en paramètre dans les flux définis dans settings
|
|
|
+ for feed_search in feeds:
|
|
|
+ if (feed_search[0] == feed_name):
|
|
|
+ feed = feed_search
|
|
|
+ break
|
|
|
+
|
|
|
+ # Si le flux n'a pas été trouvé ou qu'il n'y a pas d'URL donnée, renvoi 404
|
|
|
+ if not feed or len(feed)<2 or not feed[1]:
|
|
|
+ return HttpResponseNotFound('')
|
|
|
+ # Sinon récupère les informations (url et limit)
|
|
|
+ else:
|
|
|
+ feed_url = feed[1]
|
|
|
+ if len(feed) >=3:
|
|
|
+ limit = feed[2]
|
|
|
+ else:
|
|
|
+ limit = 3
|
|
|
+
|
|
|
try:
|
|
|
- if feed_url:
|
|
|
- feed = feedparser.parse(feed_url)
|
|
|
- entries = feed.entries[:limit]
|
|
|
+ feed = feedparser.parse(feed_url)
|
|
|
+ entries = feed.entries[:limit]
|
|
|
|
|
|
- return render_to_response('fragments/feed.html',
|
|
|
- {'feed_entries': entries},
|
|
|
- context_instance=RequestContext(request))
|
|
|
+ return render_to_response('fragments/feed.html',
|
|
|
+ {'feed_entries': entries},
|
|
|
+ context_instance=RequestContext(request))
|
|
|
except:
|
|
|
- pass
|
|
|
-
|
|
|
- return HttpResponse('')
|
|
|
+ return HttpResponseServerError('')
|