+
+ # Raise a 404 on an incorrect slug.
+ found_slugs = [tag.slug for tag in tags]
+ for slug in tag_slugs:
+ if slug and slug not in found_slugs:
+ raise Http404
+
+ entries = self.get_item_queryset()
+ for tag in tags:
+ entries = entries.filter(tags=tag)
+
+ context = extra_context or {}
+ context.update({'tags': tags})
+
+ return entries, context
+
+ def add_item(self, feed, obj, kwargs=None):
+ title = loader.get_template("penfield/feeds/blog_entry/title.html")
+ description = loader.get_template("penfield/feeds/blog_entry/description.html")
+ defaults = {
+ 'title': title.render(Context({'entry': obj})),
+ 'description': description.render(Context({'entry': obj})),
+ 'author_name': obj.author.get_full_name(),
+ 'pubdate': obj.date
+ }
+ defaults.update(kwargs or {})
+ super(BlogView, self).add_item(feed, obj, defaults)
+
+ def get_feed(self, feed_type, extra_context, kwargs=None):
+ tags = (extra_context or {}).get('tags', None)
+ title = self.blog.title
+
+ if tags is not None:
+ title += " - %s" % ', '.join([tag.name for tag in tags])
+
+ defaults = {
+ 'title': title
+ }
+ defaults.update(kwargs or {})
+ return super(BlogView, self).get_feed(feed_type, extra_context, defaults)
+
+ def entry_view(self, request, slug, year=None, month=None, day=None, extra_context=None):
+ entries = self.get_item_queryset()