summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorJannis Leidel <jannis@leidel.info>2011-06-28 10:16:34 +0000
committerJannis Leidel <jannis@leidel.info>2011-06-28 10:16:34 +0000
commit3fe0c69332299dc1d518cc3a4f84bf435deecc1d (patch)
tree2c473e6a2e71c4335140f6bd4f20d2b825f79a37 /django
parentdbffffa7dc95fc62cbecfd00284bde62ee796f48 (diff)
Fixed #10907, #14190 and #15829 -- Pass item to sitemaps template to allow further customization like Google News enabled sitemaps. Thanks, manfre and lakinwecker.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@16474 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django')
-rw-r--r--django/contrib/sitemaps/__init__.py3
-rw-r--r--django/contrib/sitemaps/tests/basic.py13
-rw-r--r--django/contrib/sitemaps/views.py5
3 files changed, 16 insertions, 5 deletions
diff --git a/django/contrib/sitemaps/__init__.py b/django/contrib/sitemaps/__init__.py
index 6b8d5a03d1..98ab353606 100644
--- a/django/contrib/sitemaps/__init__.py
+++ b/django/contrib/sitemaps/__init__.py
@@ -76,10 +76,11 @@ class Sitemap(object):
loc = "http://%s%s" % (site.domain, self.__get('location', item))
priority = self.__get('priority', item, None)
url_info = {
+ 'item': item,
'location': loc,
'lastmod': self.__get('lastmod', item, None),
'changefreq': self.__get('changefreq', item, None),
- 'priority': str(priority is not None and priority or '')
+ 'priority': str(priority is not None and priority or ''),
}
urls.append(url_info)
return urls
diff --git a/django/contrib/sitemaps/tests/basic.py b/django/contrib/sitemaps/tests/basic.py
index cbc5c49872..2b02b78741 100644
--- a/django/contrib/sitemaps/tests/basic.py
+++ b/django/contrib/sitemaps/tests/basic.py
@@ -2,7 +2,7 @@ import os
from datetime import date
from django.conf import settings
from django.contrib.auth.models import User
-from django.contrib.sitemaps import Sitemap
+from django.contrib.sitemaps import Sitemap, GenericSitemap
from django.contrib.sites.models import Site
from django.core.exceptions import ImproperlyConfigured
from django.test import TestCase
@@ -171,3 +171,14 @@ class SitemapTests(TestCase):
"""
Site._meta.installed = False
self.assertRaises(ImproperlyConfigured, Sitemap().get_urls)
+
+ def test_sitemap_item(self):
+ """
+ Check to make sure that the raw item is included with each
+ Sitemap.get_url() url result.
+ """
+ user_sitemap = GenericSitemap({'queryset': User.objects.all()})
+ def is_user(url):
+ return isinstance(url['item'], User)
+ item_in_url_info = all(map(is_user, user_sitemap.get_urls()))
+ self.assertTrue(item_in_url_info)
diff --git a/django/contrib/sitemaps/views.py b/django/contrib/sitemaps/views.py
index 83094402c6..454db40420 100644
--- a/django/contrib/sitemaps/views.py
+++ b/django/contrib/sitemaps/views.py
@@ -36,9 +36,8 @@ def sitemap(request, sitemaps, section=None, template_name='sitemap.xml'):
for site in maps:
try:
if callable(site):
- urls.extend(site().get_urls(page=page, site=current_site))
- else:
- urls.extend(site.get_urls(page=page, site=current_site))
+ site = site()
+ urls.extend(site.get_urls(page=page, site=current_site))
except EmptyPage:
raise Http404("Page %s empty" % page)
except PageNotAnInteger: