diff options
| author | Jannis Leidel <jannis@leidel.info> | 2011-06-28 10:16:34 +0000 |
|---|---|---|
| committer | Jannis Leidel <jannis@leidel.info> | 2011-06-28 10:16:34 +0000 |
| commit | 3fe0c69332299dc1d518cc3a4f84bf435deecc1d (patch) | |
| tree | 2c473e6a2e71c4335140f6bd4f20d2b825f79a37 /django | |
| parent | dbffffa7dc95fc62cbecfd00284bde62ee796f48 (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__.py | 3 | ||||
| -rw-r--r-- | django/contrib/sitemaps/tests/basic.py | 13 | ||||
| -rw-r--r-- | django/contrib/sitemaps/views.py | 5 |
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: |
