summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorJannis Leidel <jannis@leidel.info>2010-12-12 22:56:29 +0000
committerJannis Leidel <jannis@leidel.info>2010-12-12 22:56:29 +0000
commitd0257a1558524158379bc2bf6bef2bc2a8811840 (patch)
tree00db8cbe6d2254b1fbf8bae24b1561cfe7d1ee50 /django
parentb3520da9ac113ed435cb6aa135b0559780d9c530 (diff)
Fixed #14041 -- Added ability to override the template of the sitemaps views. Thanks, julien.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@14883 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django')
-rw-r--r--django/contrib/sitemaps/tests/basic.py41
-rw-r--r--django/contrib/sitemaps/tests/templates/custom_sitemap.xml14
-rw-r--r--django/contrib/sitemaps/tests/templates/custom_sitemap_index.xml5
-rw-r--r--django/contrib/sitemaps/tests/urls.py4
-rw-r--r--django/contrib/sitemaps/views.py8
5 files changed, 68 insertions, 4 deletions
diff --git a/django/contrib/sitemaps/tests/basic.py b/django/contrib/sitemaps/tests/basic.py
index 3070f21bc1..3874ac740f 100644
--- a/django/contrib/sitemaps/tests/basic.py
+++ b/django/contrib/sitemaps/tests/basic.py
@@ -1,3 +1,4 @@
+import os
from datetime import date
from django.conf import settings
from django.contrib.auth.models import User
@@ -16,12 +17,40 @@ class SitemapTests(TestCase):
def setUp(self):
self.old_USE_L10N = settings.USE_L10N
self.old_Site_meta_installed = Site._meta.installed
+ self.old_TEMPLATE_DIRS = settings.TEMPLATE_DIRS
+ settings.TEMPLATE_DIRS = (
+ os.path.join(os.path.dirname(__file__), 'templates'),
+ )
# Create a user that will double as sitemap content
User.objects.create_user('testuser', 'test@example.com', 's3krit')
def tearDown(self):
settings.USE_L10N = self.old_USE_L10N
Site._meta.installed = self.old_Site_meta_installed
+ settings.TEMPLATE_DIRS = self.old_TEMPLATE_DIRS
+
+ def test_simple_sitemap_index(self):
+ "A simple sitemap index can be rendered"
+ # Retrieve the sitemap.
+ response = self.client.get('/simple/index.xml')
+ # Check for all the important bits:
+ self.assertEquals(response.content, """<?xml version="1.0" encoding="UTF-8"?>
+<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
+<sitemap><loc>http://example.com/simple/sitemap-simple.xml</loc></sitemap>
+</sitemapindex>
+""")
+
+ def test_simple_sitemap_custom_index(self):
+ "A simple sitemap index can be rendered with a custom template"
+ # Retrieve the sitemap.
+ response = self.client.get('/simple/custom-index.xml')
+ # Check for all the important bits:
+ self.assertEquals(response.content, """<?xml version="1.0" encoding="UTF-8"?>
+<!-- This is a customised template -->
+<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
+<sitemap><loc>http://example.com/simple/sitemap-simple.xml</loc></sitemap>
+</sitemapindex>
+""")
def test_simple_sitemap(self):
"A simple sitemap can be rendered"
@@ -34,6 +63,18 @@ class SitemapTests(TestCase):
</urlset>
""" % date.today().strftime('%Y-%m-%d'))
+ def test_simple_custom_sitemap(self):
+ "A simple sitemap can be rendered with a custom template"
+ # Retrieve the sitemap.
+ response = self.client.get('/simple/custom-sitemap.xml')
+ # Check for all the important bits:
+ self.assertEquals(response.content, """<?xml version="1.0" encoding="UTF-8"?>
+<!-- This is a customised template -->
+<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
+<url><loc>http://example.com/location/</loc><lastmod>%s</lastmod><changefreq>never</changefreq><priority>0.5</priority></url>
+</urlset>
+""" % date.today().strftime('%Y-%m-%d'))
+
@skipUnless(settings.USE_I18N, "Internationalization is not enabled")
def test_localized_priority(self):
"The priority value should not be localized (Refs #14164)"
diff --git a/django/contrib/sitemaps/tests/templates/custom_sitemap.xml b/django/contrib/sitemaps/tests/templates/custom_sitemap.xml
new file mode 100644
index 0000000000..594aef1a3e
--- /dev/null
+++ b/django/contrib/sitemaps/tests/templates/custom_sitemap.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This is a customised template -->
+<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
+{% spaceless %}
+{% for url in urlset %}
+ <url>
+ <loc>{{ url.location }}</loc>
+ {% if url.lastmod %}<lastmod>{{ url.lastmod|date:"Y-m-d" }}</lastmod>{% endif %}
+ {% if url.changefreq %}<changefreq>{{ url.changefreq }}</changefreq>{% endif %}
+ {% if url.priority %}<priority>{{ url.priority }}</priority>{% endif %}
+ </url>
+{% endfor %}
+{% endspaceless %}
+</urlset>
diff --git a/django/contrib/sitemaps/tests/templates/custom_sitemap_index.xml b/django/contrib/sitemaps/tests/templates/custom_sitemap_index.xml
new file mode 100644
index 0000000000..406c6b7606
--- /dev/null
+++ b/django/contrib/sitemaps/tests/templates/custom_sitemap_index.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This is a customised template -->
+<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
+{% for location in sitemaps %}<sitemap><loc>{{ location }}</loc></sitemap>{% endfor %}
+</sitemapindex>
diff --git a/django/contrib/sitemaps/tests/urls.py b/django/contrib/sitemaps/tests/urls.py
index 6cdba36b02..03b060df7a 100644
--- a/django/contrib/sitemaps/tests/urls.py
+++ b/django/contrib/sitemaps/tests/urls.py
@@ -27,7 +27,11 @@ flatpage_sitemaps = {
}
urlpatterns = patterns('django.contrib.sitemaps.views',
+ (r'^simple/index\.xml$', 'index', {'sitemaps': simple_sitemaps}),
+ (r'^simple/custom-index\.xml$', 'index', {'sitemaps': simple_sitemaps, 'template_name': 'custom_sitemap_index.xml'}),
+ (r'^simple/sitemap-(?P<section>.+)\.xml$', 'sitemap', {'sitemaps': simple_sitemaps}),
(r'^simple/sitemap\.xml$', 'sitemap', {'sitemaps': simple_sitemaps}),
+ (r'^simple/custom-sitemap\.xml$', 'sitemap', {'sitemaps': simple_sitemaps, 'template_name': 'custom_sitemap.xml'}),
(r'^generic/sitemap\.xml$', 'sitemap', {'sitemaps': generic_sitemaps}),
(r'^flatpages/sitemap\.xml$', 'sitemap', {'sitemaps': flatpage_sitemaps}),
)
diff --git a/django/contrib/sitemaps/views.py b/django/contrib/sitemaps/views.py
index b7a96e12aa..83094402c6 100644
--- a/django/contrib/sitemaps/views.py
+++ b/django/contrib/sitemaps/views.py
@@ -5,7 +5,7 @@ from django.core import urlresolvers
from django.utils.encoding import smart_str
from django.core.paginator import EmptyPage, PageNotAnInteger
-def index(request, sitemaps):
+def index(request, sitemaps, template_name='sitemap_index.xml'):
current_site = get_current_site(request)
sites = []
protocol = request.is_secure() and 'https' or 'http'
@@ -20,10 +20,10 @@ def index(request, sitemaps):
if pages > 1:
for page in range(2, pages+1):
sites.append('%s://%s%s?p=%s' % (protocol, current_site.domain, sitemap_url, page))
- xml = loader.render_to_string('sitemap_index.xml', {'sitemaps': sites})
+ xml = loader.render_to_string(template_name, {'sitemaps': sites})
return HttpResponse(xml, mimetype='application/xml')
-def sitemap(request, sitemaps, section=None):
+def sitemap(request, sitemaps, section=None, template_name='sitemap.xml'):
maps, urls = [], []
if section is not None:
if section not in sitemaps:
@@ -43,5 +43,5 @@ def sitemap(request, sitemaps, section=None):
raise Http404("Page %s empty" % page)
except PageNotAnInteger:
raise Http404("No page '%s'" % page)
- xml = smart_str(loader.render_to_string('sitemap.xml', {'urlset': urls}))
+ xml = smart_str(loader.render_to_string(template_name, {'urlset': urls}))
return HttpResponse(xml, mimetype='application/xml')