import datetime from django.core.exceptions import ObjectDoesNotExist from django.core.urlresolvers import reverse from django.contrib.comments.models import Comment from django.contrib.sitemaps import Sitemap from blog.models import Post class BlogSitemap(Sitemap): """ Return sitemap entries for each blog post. """ def items(self): return Post.objects.public() def changefreq(self, obj): if not obj.comments_enabled: return "monthly" else: return "weekly" def lastmod(self, obj): # comments also update the modification date try: lastcomment = Comment.objects.for_model(obj).latest('submit_date') if lastcomment.submit_date > obj.mod_date: return lastcomment.submit_date return obj.mod_date except ObjectDoesNotExist: return obj.mod_date def priority(self, obj): return 0.7 class NamedURLSitemap(Sitemap): """ Given a set of named URLs, returns sitemap items for each. """ def __init__(self, names): self.names = names def items(self): return self.names def changefreq(self, obj): return "weekly" def lastmod(self, obj): return datetime.datetime.now() def location(self, obj): return reverse(obj) # vim: set ts=4 sw=4 et: