]> git.openstreetmap.org Git - osqa.git/blobdiff - forum/sitemap.py
Fix wrong arg in user_report url reverse
[osqa.git] / forum / sitemap.py
index e225d0066b37409ed921e5fa68873696cb6e2832..0ba045b7bb025e4ede91b6b6c097d74c266e79a8 100644 (file)
@@ -1,24 +1,31 @@
+import re
+
 from django.contrib.sitemaps import Sitemap
 from forum.models import Question
 from django.contrib.sitemaps import Sitemap
 from forum.models import Question
+from forum.settings import QUESTIONS_SITEMAP_LIMIT, QUESTIONS_SITEMAP_CHANGEFREQ
 from django.conf import settings
 from django.http import HttpResponse, Http404
 from django.template import loader
 from django.core import urlresolvers
 from django.conf import settings
 from django.http import HttpResponse, Http404
 from django.template import loader
 from django.core import urlresolvers
+from django.core.urlresolvers import get_script_prefix
 from django.utils.encoding import smart_str
 from django.core.paginator import EmptyPage, PageNotAnInteger
 
 def index(request, sitemaps):
     sites = []
 from django.utils.encoding import smart_str
 from django.core.paginator import EmptyPage, PageNotAnInteger
 
 def index(request, sitemaps):
     sites = []
-    for section, site in sitemaps.items():
-        if callable(site):
-            pages = site().paginator.num_pages
-        else:
-            pages = site.paginator.num_pages
-        sitemap_url = urlresolvers.reverse('sitemap_section_index', kwargs={'section': section})
-        sites.append('%s%s' % (settings.APP_URL, sitemap_url))
+    for section in sitemaps.keys():
+        sitemap_url = urlresolvers.reverse('sitemap_section_index', prefix='/', kwargs={'section': section})
+
+        # Replace double forward slashes with single ones
+        final_url = '%s%s' % (settings.APP_URL, sitemap_url)
+        final_url = re.sub("/+", "/", final_url)
+        final_url = final_url.replace('http:/', 'http://')
+        final_url = final_url.replace('https:/', 'https://')
+
+        sites.append(final_url)
 
     xml = loader.render_to_string('sitemap_index.xml', {'sitemaps': sites})
 
     xml = loader.render_to_string('sitemap_index.xml', {'sitemaps': sites})
-    return HttpResponse(xml, mimetype='application/xml')
+    return HttpResponse(xml, content_type='application/xml')
 
 def sitemap_section_index(request, section, sitemaps):
     try:
 
 def sitemap_section_index(request, section, sitemaps):
     try:
@@ -31,12 +38,15 @@ def sitemap_section_index(request, section, sitemaps):
     locations = []
 
     for page in paginator.page_range:
     locations = []
 
     for page in paginator.page_range:
-        location = urlresolvers.reverse('sitemap_section_page', kwargs={ 'page' : page, 'section' : section })
+        location = urlresolvers.reverse('sitemap_section_page', prefix='/', kwargs={ 'page' : page, 'section' : section })
         location = '%s%s' % (settings.APP_URL, location)
         location = '%s%s' % (settings.APP_URL, location)
+        location = re.sub("/+", "/", location)
+        location = location.replace('http:/', 'http://')
+        location = location.replace('https:/', 'https://')
         locations.append(location)
 
     xml = loader.render_to_string('sitemap_section_index.xml', { 'locations' : locations, })
         locations.append(location)
 
     xml = loader.render_to_string('sitemap_section_index.xml', { 'locations' : locations, })
-    return HttpResponse(xml, mimetype='application/xml')
+    return HttpResponse(xml, content_type='application/xml')
 
 def sitemap(request, sitemaps, section=None, page=1):
     maps, urls = [], []
 
 def sitemap(request, sitemaps, section=None, page=1):
     maps, urls = [], []
@@ -58,11 +68,11 @@ def sitemap(request, sitemaps, section=None, page=1):
         except PageNotAnInteger:
             raise Http404("No page '%s'" % page)
     xml = smart_str(loader.render_to_string('sitemap.xml', {'urlset': urls}))
         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')
+    return HttpResponse(xml, content_type='application/xml')
 
 class OsqaSitemap(Sitemap):
 
 class OsqaSitemap(Sitemap):
-    limit = 250
-    changefreq = 'daily'
+    limit = QUESTIONS_SITEMAP_LIMIT
+    changefreq = QUESTIONS_SITEMAP_CHANGEFREQ
     priority = 0.5
     def items(self):
         return Question.objects.filter_state(deleted=False).order_by('id')
     priority = 0.5
     def items(self):
         return Question.objects.filter_state(deleted=False).order_by('id')
@@ -85,7 +95,9 @@ class OsqaSitemap(Sitemap):
     def get_urls(self, page=1):
         urls = []
         for item in self.paginator.page(page).object_list:
     def get_urls(self, page=1):
         urls = []
         for item in self.paginator.page(page).object_list:
-            loc = "%s%s" % (settings.APP_URL, self.__get('location', item))
+            root_relative_url = self.__get('location', item)
+            relative_url = root_relative_url[len(get_script_prefix()):]
+            loc = "%s/%s" % (settings.APP_URL, relative_url)
             url_info = {
                 'location':   loc,
                 'lastmod':    self.__get('lastmod', item, None),
             url_info = {
                 'location':   loc,
                 'lastmod':    self.__get('lastmod', item, None),