summaryrefslogtreecommitdiff
path: root/feeds.py
diff options
context:
space:
mode:
Diffstat (limited to 'feeds.py')
-rw-r--r--feeds.py22
1 files changed, 15 insertions, 7 deletions
diff --git a/feeds.py b/feeds.py
index 6a17949c..a7b7120c 100644
--- a/feeds.py
+++ b/feeds.py
@@ -5,11 +5,11 @@ from pytz import utc
from django.conf import settings
from django.contrib.sites.models import Site
from django.contrib.syndication.views import Feed
+from django.db import connection
from django.db.models import Q
from django.utils.feedgenerator import Rss201rev2Feed
from django.views.decorators.http import condition
-from main.utils import retrieve_latest
from main.models import Arch, Repo, Package
from news.models import News
from releng.models import Release
@@ -65,20 +65,21 @@ class GuidNotPermalinkFeed(Rss201rev2Feed):
def package_etag(request, *args, **kwargs):
- latest = retrieve_latest(Package)
+ latest = package_last_modified(request)
if latest:
return hashlib.md5(str(kwargs) + str(latest)).hexdigest()
return None
def package_last_modified(request, *args, **kwargs):
- return retrieve_latest(Package)
+ cursor = connection.cursor()
+ cursor.execute("SELECT MAX(last_update) FROM packages")
+ return cursor.fetchone()[0]
class PackageFeed(Feed):
feed_type = GuidNotPermalinkFeed
link = '/packages/'
- title_template = 'feeds/packages_title.html'
def __call__(self, request, *args, **kwargs):
wrapper = condition(etag_func=package_etag, last_modified_func=package_last_modified)
@@ -141,6 +142,9 @@ class PackageFeed(Feed):
def item_pubdate(self, item):
return item.last_update
+ def item_title(self, item):
+ return '%s %s %s' % (item.pkgname, item.full_version, item.arch.name)
+
def item_description(self, item):
return item.pkgdesc
@@ -149,13 +153,15 @@ class PackageFeed(Feed):
def news_etag(request, *args, **kwargs):
- latest = retrieve_latest(News, 'last_modified')
+ latest = news_last_modified(request)
if latest:
return hashlib.md5(str(latest)).hexdigest()
return None
def news_last_modified(request, *args, **kwargs):
- return retrieve_latest(News, 'last_modified')
+ cursor = connection.cursor()
+ cursor.execute("SELECT MAX(last_modified) FROM news")
+ return cursor.fetchone()[0]
class NewsFeed(Feed):
@@ -165,7 +171,6 @@ class NewsFeed(Feed):
link = '/news/'
description = 'The latest and greatest news from the '+settings.BRANDING_DISTRONAME+' distribution.'
subtitle = description
- description_template = 'feeds/news_description.html'
def __call__(self, request, *args, **kwargs):
wrapper = condition(etag_func=news_etag, last_modified_func=news_last_modified)
@@ -189,6 +194,9 @@ class NewsFeed(Feed):
def item_title(self, item):
return item.title
+ def item_description(self, item):
+ return item.html()
+
class ReleaseFeed(Feed):
feed_type = GuidNotPermalinkFeed