views.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. # -*- coding: utf-8 -*-
  2. from __future__ import unicode_literals
  3. import feedparser
  4. import HTMLParser
  5. from django.views.decorators.cache import cache_page
  6. from django.template import RequestContext
  7. from django.shortcuts import render_to_response
  8. from django.http import HttpResponse, HttpResponseNotFound, HttpResponseServerError
  9. from django.conf import settings
  10. @cache_page(60 * 60 * 24) # Cache 24h
  11. def feed(request, feed_name):
  12. feeds = settings.FEEDS
  13. feed = None
  14. # Recherce le flux passé en paramètre dans les flux définis dans settings
  15. for feed_search in feeds:
  16. if (feed_search[0] == feed_name):
  17. feed = feed_search
  18. break
  19. # Si le flux n'a pas été trouvé ou qu'il n'y a pas d'URL donnée, renvoi 404
  20. if not feed or len(feed)<2 or not feed[1]:
  21. return HttpResponseNotFound('')
  22. # Sinon récupère les informations (url et limit)
  23. else:
  24. feed_url = feed[1]
  25. if len(feed) >=3:
  26. limit = feed[2]
  27. else:
  28. limit = 3
  29. try:
  30. feed = feedparser.parse(feed_url)
  31. entries = feed.entries[:limit]
  32. return render_to_response('fragments/feed.html',
  33. {'feed_entries': entries},
  34. context_instance=RequestContext(request))
  35. except:
  36. return HttpResponseServerError('')