This is an automated email from the ASF dual-hosted git repository.
gcruz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/allura.git
The following commit(s) were added to refs/heads/master by this push:
new 2192ef8 [#8418] skip /tickets/ from sitemap if no tickets
2192ef8 is described below
commit 2192ef8761bdde210484c513572879ec1661a169
Author: Dillon Walls <[email protected]>
AuthorDate: Thu Mar 3 18:26:52 2022 +0000
[#8418] skip /tickets/ from sitemap if no tickets
---
ForgeTracker/forgetracker/tests/test_app.py | 15 +++++++++++++++
ForgeTracker/forgetracker/tracker_main.py | 15 +++++++++++++++
2 files changed, 30 insertions(+)
diff --git a/ForgeTracker/forgetracker/tests/test_app.py
b/ForgeTracker/forgetracker/tests/test_app.py
index 524b0ae..c9fe6af 100644
--- a/ForgeTracker/forgetracker/tests/test_app.py
+++ b/ForgeTracker/forgetracker/tests/test_app.py
@@ -84,6 +84,21 @@ class TestApp:
TM.Ticket.new()
assert_equal(2, tickets_stats_24hr())
+ @td.with_tracker
+ def test_sitemap_xml(self):
+ assert_equal([], c.app.sitemap_xml())
+ TM.Ticket.new()
+ assert_equal(1, len(c.app.sitemap_xml()))
+
+ @td.with_tracker
+ def test_sitemap_xml_ignored(self):
+ TM.Ticket.new(form_fields=dict(deleted=True))
+ assert_equal([], c.app.sitemap_xml())
+ # still add to sitemap even if only tickets are closed
+ TM.Ticket.new(form_fields=dict(
+ status=c.app.globals.closed_status_names[0]))
+ assert_equal(1, len(c.app.sitemap_xml()))
+
class TestBulkExport(TrackerTestController):
diff --git a/ForgeTracker/forgetracker/tracker_main.py
b/ForgeTracker/forgetracker/tracker_main.py
index d406f0b..ce39db4 100644
--- a/ForgeTracker/forgetracker/tracker_main.py
+++ b/ForgeTracker/forgetracker/tracker_main.py
@@ -298,6 +298,17 @@ class ForgeTrackerApp(Application):
self.config.options.mount_label,
'.')]
+ def sitemap_xml(self):
+ """
+ Used for generating sitemap.xml.
+ If the root page has default content, omit it from the sitemap.xml.
+ Assumes :attr:`main_menu` will return an entry pointing to the root
page.
+ :return: a list of :class:`SitemapEntries <allura.app.SitemapEntry>`
+ """
+ if self.should_noindex():
+ return []
+ return self.main_menu()
+
@property
@h.exceptionless([], log)
def sitemap(self):
@@ -306,6 +317,10 @@ class ForgeTrackerApp(Application):
return [
SitemapEntry(menu_id, '.')[self.sidebar_menu()]]
+ def should_noindex(self):
+ has_ticket = TM.Ticket.query.get(app_config_id=self.config._id,
deleted=False)
+ return has_ticket is None
+
def admin_menu(self):
admin_url = c.project.url() + 'admin/' + \
self.config.options.mount_point + '/'