From 14504aa581ca93dcbb32342c2b541b685f136aee Mon Sep 17 00:00:00 2001 From: jordan Date: Tue, 4 Jan 2011 19:52:51 +0000 Subject: [PATCH] #OSQA-385, fixing the links of sitemaps when site is running using SCRIPT_ALIAS. git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@668 0cfe37f9-358a-4d5e-be75-b63607b5c754 --- forum/sitemap.py | 28 +++++++++++++++++++++++++++- forum/urls.py | 2 +- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/forum/sitemap.py b/forum/sitemap.py index b53cb16..43d0934 100644 --- a/forum/sitemap.py +++ b/forum/sitemap.py @@ -4,6 +4,9 @@ from django.conf import settings from django.http import HttpResponse from django.template import loader from django.core import urlresolvers +from django.contrib.sites.models import get_current_site +from django.utils.encoding import smart_str +from django.core.paginator import EmptyPage, PageNotAnInteger def index(request, sitemaps): sites = [] @@ -12,7 +15,7 @@ def index(request, sitemaps): pages = site().paginator.num_pages else: pages = site.paginator.num_pages - sitemap_url = urlresolvers.reverse('django.contrib.sitemaps.views.sitemap', kwargs={'section': section}) + sitemap_url = urlresolvers.reverse('forum.sitemap.sitemap', kwargs={'section': section}) sites.append('%s%s' % (settings.APP_URL, sitemap_url)) if pages > 1: for page in range(2, pages+1): @@ -20,6 +23,29 @@ def index(request, sitemaps): xml = loader.render_to_string('sitemap_index.xml', {'sitemaps': sites}) return HttpResponse(xml, mimetype='application/xml') +def sitemap(request, sitemaps, section=None): + maps, urls = [], [] + if section is not None: + if section not in sitemaps: + raise Http404("No sitemap available for section: %r" % section) + maps.append(sitemaps[section]) + else: + maps = sitemaps.values() + page = request.GET.get("p", 1) + + for site in maps: + try: + if callable(site): + urls.extend(site().get_urls(page=page)) + else: + urls.extend(site.get_urls(page=page)) + except EmptyPage: + 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})) + return HttpResponse(xml, mimetype='application/xml') + class OsqaSitemap(Sitemap): changefreq = 'daily' priority = 0.5 diff --git a/forum/urls.py b/forum/urls.py index e964bc4..1771e2c 100644 --- a/forum/urls.py +++ b/forum/urls.py @@ -34,7 +34,7 @@ urlpatterns += patterns('', url(r'^%s(.*)' % _('nimda/'), admin.site.root), url(r'^sitemap.xml$', 'forum.sitemap.index', {'sitemaps': sitemaps}), - url(r'^sitemap-(?P
.+)\.xml$', 'django.contrib.sitemaps.views.sitemap', {'sitemaps': sitemaps}), + url(r'^sitemap-(?P
.+)\.xml$', 'forum.sitemap.sitemap', {'sitemaps': sitemaps}), (r'^favicon\.ico$', app.meta.favicon), url(r'^cstyle\.css$', app.meta.custom_css, name="custom_css"), -- 2.39.5