This is an automated email from the ASF dual-hosted git repository. dill0wn pushed a commit to branch dw/8418 in repository https://gitbox.apache.org/repos/asf/allura.git
commit 824ef60cb245c0222b23df9bc5449ddd2d15a196 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 + '/'
