|
@@ -1,5 +1,7 @@
|
|
|
from __future__ import unicode_literals
|
|
|
|
|
|
+from calendar import timegm
|
|
|
+
|
|
|
from django.conf import settings
|
|
|
from django.contrib.sites.models import get_current_site
|
|
|
from django.core.exceptions import ImproperlyConfigured, ObjectDoesNotExist
|
|
@@ -8,6 +10,7 @@ from django.template import loader, TemplateDoesNotExist, RequestContext
|
|
|
from django.utils import feedgenerator, tzinfo
|
|
|
from django.utils.encoding import force_text, iri_to_uri, smart_text
|
|
|
from django.utils.html import escape
|
|
|
+from django.utils.http import http_date
|
|
|
from django.utils.timezone import is_naive
|
|
|
|
|
|
|
|
@@ -22,6 +25,7 @@ def add_domain(domain, url, secure=False):
|
|
|
url = iri_to_uri('%s://%s%s' % (protocol, domain, url))
|
|
|
return url
|
|
|
|
|
|
+
|
|
|
class FeedDoesNotExist(ObjectDoesNotExist):
|
|
|
pass
|
|
|
|
|
@@ -38,6 +42,11 @@ class Feed(object):
|
|
|
raise Http404('Feed object does not exist.')
|
|
|
feedgen = self.get_feed(obj, request)
|
|
|
response = HttpResponse(content_type=feedgen.mime_type)
|
|
|
+ if hasattr(self, 'item_pubdate'):
|
|
|
+ # if item_pubdate is defined for the feed, set header so as
|
|
|
+ # ConditionalGetMiddleware is able to send 304 NOT MODIFIED
|
|
|
+ response['Last-Modified'] = http_date(
|
|
|
+ timegm(feedgen.latest_post_date().utctimetuple()))
|
|
|
feedgen.write(response, 'utf-8')
|
|
|
return response
|
|
|
|