mirror of https://github.com/scrapy/scrapy.git
42 lines
1.2 KiB
Python
42 lines
1.2 KiB
Python
from django.contrib.syndication.feeds import FeedDoesNotExist
|
|
from django.core.exceptions import ObjectDoesNotExist
|
|
from django.contrib.sites.models import Site
|
|
from django.contrib.syndication.feeds import Feed
|
|
from django.core.urlresolvers import reverse
|
|
from scrapyorg.blog.models import Post, Category
|
|
|
|
|
|
class BlogPostsFeed(Feed):
|
|
_site = Site.objects.get_current()
|
|
title = '%s feed' % _site.name
|
|
description = '%s posts feed.' % _site.name
|
|
|
|
def link(self):
|
|
return reverse('blog_index')
|
|
|
|
def items(self):
|
|
return Post.objects.published()[:10]
|
|
|
|
def item_pubdate(self, obj):
|
|
return obj.publish
|
|
|
|
|
|
class BlogPostsByCategory(Feed):
|
|
_site = Site.objects.get_current()
|
|
title = '%s posts category feed' % _site.name
|
|
|
|
def get_object(self, bits):
|
|
if len(bits) != 1:
|
|
raise ObjectDoesNotExist
|
|
return Category.objects.get(slug__exact=bits[0])
|
|
|
|
def link(self, obj):
|
|
if not obj:
|
|
raise FeedDoesNotExist
|
|
return obj.get_absolute_url()
|
|
|
|
def description(self, obj):
|
|
return "Posts recently categorized as %s" % obj.title
|
|
|
|
def items(self, obj):
|
|
return obj.post_set.published()[:10] |