diff options
| author | Luke Plant <L.Plant.98@cantab.net> | 2010-10-05 19:41:48 +0000 |
|---|---|---|
| committer | Luke Plant <L.Plant.98@cantab.net> | 2010-10-05 19:41:48 +0000 |
| commit | cb0018185465c8aa22092fd887cfd4b25e6544ab (patch) | |
| tree | 871de1e733144bb640219336e49cf9a633afae34 | |
| parent | 826692568427328400492f899a315b628b18f877 (diff) | |
[1.2.X] Fixed #11358: Don't include private flatpages in sitemap. Thanks dburke and mlavin.
Backport of [13734] from trunk
git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@13985 bcc190cf-cafb-0310-a4f2-bffc1f526a37
| -rw-r--r-- | django/contrib/sitemaps/__init__.py | 2 | ||||
| -rw-r--r-- | django/contrib/sitemaps/tests/basic.py | 24 | ||||
| -rw-r--r-- | django/contrib/sitemaps/tests/urls.py | 7 | ||||
| -rw-r--r-- | docs/ref/contrib/sitemaps.txt | 4 |
4 files changed, 33 insertions, 4 deletions
diff --git a/django/contrib/sitemaps/__init__.py b/django/contrib/sitemaps/__init__.py index d31a9d7d2e..eaa7f85de9 100644 --- a/django/contrib/sitemaps/__init__.py +++ b/django/contrib/sitemaps/__init__.py @@ -79,7 +79,7 @@ class FlatPageSitemap(Sitemap): def items(self): from django.contrib.sites.models import Site current_site = Site.objects.get_current() - return current_site.flatpage_set.all() + return current_site.flatpage_set.filter(registration_required=False) class GenericSitemap(Sitemap): priority = None diff --git a/django/contrib/sitemaps/tests/basic.py b/django/contrib/sitemaps/tests/basic.py index 5dd2aa2010..ad04db258f 100644 --- a/django/contrib/sitemaps/tests/basic.py +++ b/django/contrib/sitemaps/tests/basic.py @@ -1,6 +1,7 @@ from datetime import date from django.conf import settings from django.contrib.auth.models import User +from django.contrib.flatpages.models import FlatPage from django.test import TestCase from django.utils.formats import localize from django.utils.translation import activate @@ -51,3 +52,26 @@ class SitemapTests(TestCase): <url><loc>http://example.com/users/testuser/</loc></url> </urlset> """) + + def test_flatpage_sitemap(self): + "Basic FlatPage sitemap test" + public = FlatPage.objects.create( + url=u'/public/', + title=u'Public Page', + enable_comments=True, + registration_required=False, + ) + public.sites.add(settings.SITE_ID) + private = FlatPage.objects.create( + url=u'/private/', + title=u'Public Page', + enable_comments=True, + registration_required=True + ) + private.sites.add(settings.SITE_ID) + response = self.client.get('/flatpages/sitemap.xml') + # Public flatpage should be in the sitemap + self.assertContains(response, '<loc>http://example.com%s</loc>' % public.url) + # Private flatpage should not be in the sitemap + self.assertNotContains(response, '<loc>http://example.com%s</loc>' % private.url) + diff --git a/django/contrib/sitemaps/tests/urls.py b/django/contrib/sitemaps/tests/urls.py index 0fb2a7214e..6cdba36b02 100644 --- a/django/contrib/sitemaps/tests/urls.py +++ b/django/contrib/sitemaps/tests/urls.py @@ -1,6 +1,6 @@ from datetime import datetime from django.conf.urls.defaults import * -from django.contrib.sitemaps import Sitemap, GenericSitemap +from django.contrib.sitemaps import Sitemap, GenericSitemap, FlatPageSitemap from django.contrib.auth.models import User class SimpleSitemap(Sitemap): @@ -22,7 +22,12 @@ generic_sitemaps = { }), } +flatpage_sitemaps = { + 'flatpages': FlatPageSitemap, +} + urlpatterns = patterns('django.contrib.sitemaps.views', (r'^simple/sitemap\.xml$', 'sitemap', {'sitemaps': simple_sitemaps}), (r'^generic/sitemap\.xml$', 'sitemap', {'sitemaps': generic_sitemaps}), + (r'^flatpages/sitemap\.xml$', 'sitemap', {'sitemaps': flatpage_sitemaps}), ) diff --git a/docs/ref/contrib/sitemaps.txt b/docs/ref/contrib/sitemaps.txt index 113d4d3531..7a66cbe9a9 100644 --- a/docs/ref/contrib/sitemaps.txt +++ b/docs/ref/contrib/sitemaps.txt @@ -215,8 +215,8 @@ The sitemap framework provides a couple convenience classes for common cases: .. class:: FlatPageSitemap The :class:`django.contrib.sitemaps.FlatPageSitemap` class looks at all - :mod:`flatpages <django.contrib.flatpages>` defined for the current - :setting:`SITE_ID` (see the + publicly visible :mod:`flatpages <django.contrib.flatpages>` + defined for the current :setting:`SITE_ID` (see the :mod:`sites documentation <django.contrib.sites>`) and creates an entry in the sitemap. These entries include only the :attr:`~Sitemap.location` attribute -- not :attr:`~Sitemap.lastmod`, |
