From 96a7614285325b693434f3fd011238000d75926d Mon Sep 17 00:00:00 2001 From: Dan McGee Date: Sat, 8 Nov 2014 16:31:38 -0600 Subject: Add a news-specific sitemap This follows the spec at https://support.google.com/news/publisher/answer/74288?hl=en#tagdefinitions Signed-off-by: Dan McGee --- sitemaps.py | 7 +++++++ templates/sitemaps/news_sitemap.xml.jinja | 14 ++++++++++++++ urls.py | 9 ++++++++- 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 templates/sitemaps/news_sitemap.xml.jinja diff --git a/sitemaps.py b/sitemaps.py index eb4e05d9..fb81357e 100644 --- a/sitemaps.py +++ b/sitemaps.py @@ -98,6 +98,13 @@ class NewsSitemap(Sitemap): return 'yearly' +class RecentNewsSitemap(NewsSitemap): + def items(self): + now = datetime.utcnow().replace(tzinfo=utc) + cutoff = now - timedelta(days=30) + return super(RecentNewsSitemap, self).items().filter(postdate__gte=cutoff) + + class ReleasesSitemap(Sitemap): changefreq = "monthly" diff --git a/templates/sitemaps/news_sitemap.xml.jinja b/templates/sitemaps/news_sitemap.xml.jinja new file mode 100644 index 00000000..97dd17b5 --- /dev/null +++ b/templates/sitemaps/news_sitemap.xml.jinja @@ -0,0 +1,14 @@ + + +{% for url in urlset %} +{{ url.location }} +{% if url.lastmod %}{{ url.lastmod|date("Y-m-d") }}{% endif %} +{% if url.changefreq %}{{ url.changefreq }}{% endif %} +{% if url.priority %}{{ url.priority }}{% endif %} + + Arch Linux Newsen + {% if url.item.postdate %}{{ url.item.postdate|date("c") }}{% endif %} + {% if url.item.title %}{{ url.item.title }}{% endif %} + +{% endfor %} + diff --git a/urls.py b/urls.py index 6d896b3c..c35baedf 100644 --- a/urls.py +++ b/urls.py @@ -18,6 +18,8 @@ our_sitemaps = { 'releases': sitemaps.ReleasesSitemap, } +news_sitemaps = { 'news': sitemaps.RecentNewsSitemap } + urlpatterns = [] # Public pages @@ -81,7 +83,12 @@ urlpatterns += patterns('', {'sitemaps': our_sitemaps, 'sitemap_url_name': 'sitemaps'}), (r'^sitemap-(?P
.+)\.xml$', cache_page(1831)(sitemap_views.sitemap), - {'sitemaps': our_sitemaps, 'template_name': 'sitemaps/sitemap.xml.jinja'}, 'sitemaps'), + {'sitemaps': our_sitemaps, 'template_name': 'sitemaps/sitemap.xml.jinja'}, + 'sitemaps'), + (r'^news-sitemap\.xml$', + cache_page(1831)(sitemap_views.sitemap), + {'sitemaps': news_sitemaps, 'template_name': 'sitemaps/news_sitemap.xml.jinja'}, + 'news-sitemap'), ) # Authentication / Admin -- cgit v1.2.3-55-g3dc8