@@ -133,51 +133,48 @@ class OmnibusFeed(ConservancyFeedBase):
bb.omnibus_type = "blog"
bb.omnibus_feed_description_template = "feeds/blog_description.html"
bb.omnibus_feed_title_template = "feeds/blog_title.html"
news = PressRelease.objects.filter(pub_date__lte=datetime.now(),
sites__id__exact=settings.SITE_ID).order_by('-pub_date')[:25]
for nn in news:
nn.omnibus_type = "news"
nn.omnibus_feed_description_template = "feeds/news_description.html"
nn.omnibus_feed_title_template = "feeds/news_title.html"
a = [ ii for ii in itertools.chain(blogs, news)]
a.sort(key=operator.attrgetter('pub_date'), reverse=True)
return a
def item_extra_kwargs(self, item):
return super(OmnibusFeed, self).item_extra_kwargs(item)
class BlogFeed(ConservancyFeedBase):
link = "/blog/"
get_absolute_url = '/feeds/blog/'
def get_object(self, request):
# This is a hack: keep GET object handy so I always have it in all methods.
if not hasattr(self, 'GET') and request and hasattr(request, 'GET'):
self.GET = request.GET
return request
def title(self, obj):
answer = "The Software Freedom Conservancy Blog"
GET = obj.GET
tags = []
if 'author' in GET:
tags = GET.getlist('author')
if 'tag' in GET:
tags += GET.getlist('tag')
if len(tags) == 1:
answer += " (" + tags[0] + ")"
elif len(tags) > 1:
firstTime = True
done = {}
for tag in tags:
if done.has_key(tag): continue
if firstTime:
answer += " ("
firstTime = False
else:
answer += ", "
@@ -205,71 +202,55 @@ class BlogFeed(ConservancyFeedBase):
answer += " tagged with "
answer += " or "
answer += tag
done[tag] = tag
answer = "All blogs at the Software Freedom Conservancy"
answer += "."
return answer
def item_title(self, item):
return item.headline
def item_description(self, item):
return item.summary
def item_author_name(self, item):
return item.author.formal_name
def item_author_email(self, item):
GET = self.GET
if not 'author' in GET:
return "%s@sfconservancy.org" % item.author
answer = ""
authors = GET.getlist('author')
for author in authors:
if not firstTime:
answer = "%s@sfconservancy.org" % author
answer += ",%s@sfconservancy.org" % author
def item_pubdate(self, item):
return item.pub_date
def items(self, obj):
def OR_filter(field_name, subfield_name, objs):
from django.db.models import Q
return reduce(lambda x, y: x | y,
[Q(**{'%s__%s' % (field_name, subfield_name): x})
for x in objs])
queryset = BlogEntry.objects.filter(pub_date__lte=datetime.now())
queryset = queryset.filter(OR_filter('author', 'username', authors))
tags = GET.getlist('tag')
queryset = queryset.filter(OR_filter('tags', 'slug', tags))
return queryset.order_by('-pub_date')[:10]
def view(request):
"""Listing of all available feeds
"""