views.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  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
  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(request, 'fragments/feed.html',
  33. {'feed_entries': entries})
  34. except:
  35. return HttpResponseServerError('')