added new app.sitemap_xml() that is used when generating sitemap.xml
diff --git a/Allura/allura/app.py b/Allura/allura/app.py
index fb59e52..fdd1fca 100644
--- a/Allura/allura/app.py
+++ b/Allura/allura/app.py
@@ -595,6 +595,15 @@
sitemap_without_children.append(sm_copy)
return sitemap_without_children
+ def sitemap_xml(self):
+ """Return a list of :class:`SitemapEntries <allura.app.SitemapEntry>`
+ to add to the sitemap.xml for this Application.
+
+ Default implementation returns the contents of :attr:`main_menu`
+ :return:
+ """
+ return self.main_menu()
+
def sidebar_menu(self):
"""Return a list of :class:`SitemapEntries <allura.app.SitemapEntry>`
to render in the left sidebar for this Application.
diff --git a/Allura/allura/model/project.py b/Allura/allura/model/project.py
index 5819a8f..1ce3e9d 100644
--- a/Allura/allura/model/project.py
+++ b/Allura/allura/model/project.py
@@ -524,7 +524,7 @@
return result
def sitemap(self, excluded_tools=None, included_tools=None,
- tools_only=False, per_tool_limit=SITEMAP_PER_TOOL_LIMIT):
+ tools_only=False, per_tool_limit=SITEMAP_PER_TOOL_LIMIT, xml=False):
"""
Return the project sitemap.
@@ -542,6 +542,10 @@
Max number of entries included in the sitemap for a single tool
type. Use `None` to include all.
+ :param bool xml:
+ If True, return sitemap entries for use in the sitemap.xml
+ instead of site navigation.
+
"""
from allura.app import SitemapEntry
entries = []
@@ -596,7 +600,11 @@
else:
app = App(self, ac)
if app.is_visible_to(c.user):
- for sm in app.main_menu():
+ if xml:
+ sms = app.sitemap_xml()
+ else:
+ sms = app.main_menu()
+ for sm in sms:
entry = sm.bind_app(app)
entry.tool_name = ac.tool_name
entry.ui_icon = 'tool-%s' % entry.tool_name.lower()
diff --git a/Allura/allura/scripts/create_sitemap_files.py b/Allura/allura/scripts/create_sitemap_files.py
index 1eaeb07..d99914d 100644
--- a/Allura/allura/scripts/create_sitemap_files.py
+++ b/Allura/allura/scripts/create_sitemap_files.py
@@ -116,7 +116,7 @@
for p in chunk:
c.project = p
try:
- for s in p.sitemap(excluded_tools=options.exclude_tools):
+ for s in p.sitemap(excluded_tools=options.exclude_tools, xml=True):
url = config['base_url'] + s.url if s.url[0] == '/' else s.url
locs.append({'url': url,
'date': p.last_updated.strftime("%Y-%m-%d")})