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 + '/'

Reply via email to