You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by di...@apache.org on 2022/03/18 18:27:13 UTC
[allura] branch dw/8421 created (now 4d94ca5)
This is an automated email from the ASF dual-hosted git repository.
dill0wn pushed a change to branch dw/8421
in repository https://gitbox.apache.org/repos/asf/allura.git.
at 4d94ca5 [#8421] SEO - omit Discussions from sitemap if no posts
This branch includes the following new commits:
new 4d94ca5 [#8421] SEO - omit Discussions from sitemap if no posts
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
[allura] 01/01: [#8421] SEO - omit Discussions from sitemap if no posts
Posted by di...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
dill0wn pushed a commit to branch dw/8421
in repository https://gitbox.apache.org/repos/asf/allura.git
commit 4d94ca52c9b453bc66bbee9e7867d4e947c6cb71
Author: Dillon Walls <di...@slashdotmedia.com>
AuthorDate: Fri Mar 18 18:27:07 2022 +0000
[#8421] SEO - omit Discussions from sitemap if no posts
---
ForgeDiscussion/forgediscussion/forum_main.py | 24 ++++++++++++++
ForgeDiscussion/forgediscussion/tests/test_app.py | 39 ++++++++++++++++++++++-
2 files changed, 62 insertions(+), 1 deletion(-)
diff --git a/ForgeDiscussion/forgediscussion/forum_main.py b/ForgeDiscussion/forgediscussion/forum_main.py
index caa19dd..bf64531 100644
--- a/ForgeDiscussion/forgediscussion/forum_main.py
+++ b/ForgeDiscussion/forgediscussion/forum_main.py
@@ -126,6 +126,30 @@ class ForgeDiscussionApp(Application):
return [
SitemapEntry(menu_id, '.')[self.sidebar_menu()]]
+ 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()
+
+ def should_noindex(self):
+ forums = self.forums
+ for forum in forums:
+ # post = forum.last_post
+ post = DM.ForumPost.query.get(
+ discussion_id=forum._id,
+ status='ok',
+ deleted=False,
+ )
+ if post:
+ return False
+ return True
+
@property
def forums(self):
return DM.Forum.query.find(dict(app_config_id=self.config._id)).all()
diff --git a/ForgeDiscussion/forgediscussion/tests/test_app.py b/ForgeDiscussion/forgediscussion/tests/test_app.py
index 29d6ee5..ea413b7 100644
--- a/ForgeDiscussion/forgediscussion/tests/test_app.py
+++ b/ForgeDiscussion/forgediscussion/tests/test_app.py
@@ -18,20 +18,25 @@
import tempfile
import json
import os
+import random
from operator import attrgetter
from cgi import FieldStorage
from io import BytesIO
+from alluratest.controller import setup_basic_test
from alluratest.tools import assert_equal
from tg import tmpl_context as c
from forgediscussion.site_stats import posts_24hr
from ming.orm import ThreadLocalORMSession
+from ming.orm.base import session
from allura import model as M
+from allura.lib import helpers as h
from allura.tests import decorators as td
from forgediscussion.tests.functional.test_rest import TestDiscussionApiBase
-from forgediscussion.model.forum import Forum, ForumPost
+from forgediscussion.model.forum import Forum, ForumThread, ForumPost
+from forgediscussion import utils
class TestApp(TestDiscussionApiBase): # creates some sample data
@@ -49,6 +54,38 @@ class TestApp(TestDiscussionApiBase): # creates some sample data
assert_equal(2, posts_24hr())
+class TestAppSitemap:
+
+ def setUp(self):
+ setup_basic_test()
+ self.user = M.User.query.get(username='root')
+
+ @td.with_discussion
+ def test_sitemap_xml(self):
+ assert_equal([], c.app.sitemap_xml())
+ forum = utils.create_forum(c.app, dict(
+ shortname='test-forum',
+ name="Test Forum",
+ description="Test Forum Description",
+ ))
+ ThreadLocalORMSession.flush_all()
+ assert_equal([], c.app.sitemap_xml())
+ thread = ForumThread(
+ subject='test-thread',
+ )
+ thread.set_forum(forum)
+ # session(thread).flush(thread)
+ ThreadLocalORMSession.flush_all()
+
+ assert_equal([], c.app.sitemap_xml())
+ thread.post(
+ subject='test-post',
+ text='this is a test post.',
+ )
+ ThreadLocalORMSession.flush_all()
+ assert_equal(1, len(c.app.sitemap_xml()))
+
+
class TestBulkExport(TestDiscussionApiBase):
def test_bulk_export(self):