This is an automated email from the ASF dual-hosted git repository. gcruz pushed a commit to branch gc/8443 in repository https://gitbox.apache.org/repos/asf/allura.git
commit 32e0963db13e8fc06167d8d6a1fc64b25c65e409 Author: Guillermo Cruz <[email protected]> AuthorDate: Mon Jun 27 11:11:47 2022 -0600 [#8443] nofollow on links that point to code tool repositories --- Allura/allura/model/project.py | 9 +++++++++ ForgeActivity/forgeactivity/main.py | 4 +++- ForgeActivity/forgeactivity/templates/macros.html | 4 +++- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/Allura/allura/model/project.py b/Allura/allura/model/project.py index 0e35ae309..0fc0e7529 100644 --- a/Allura/allura/model/project.py +++ b/Allura/allura/model/project.py @@ -337,6 +337,15 @@ class Project(SearchIndexable, MappedClass, ActivityNode, ActivityObject): def get_tool_data(self, tool, key, default=None): return self.tool_data.get(tool, {}).get(key, default) + def noindex_tool_name(self, activity_url, tools=None): + noindex_tool_names = ['git', 'svn', 'hg'] + tools = self.app_configs if tools is None else tools + for c in tools: + if hasattr(c, 'tool_name') and c.tool_name in noindex_tool_names: + if c.options.mount_point in activity_url: + return True + return False + def set_tool_data(self, tool, **kw): d = self.tool_data.setdefault(tool, {}) d.update(kw) diff --git a/ForgeActivity/forgeactivity/main.py b/ForgeActivity/forgeactivity/main.py index 9b6399301..986102fa3 100644 --- a/ForgeActivity/forgeactivity/main.py +++ b/ForgeActivity/forgeactivity/main.py @@ -148,6 +148,7 @@ class ForgeActivityController(BaseController): t.actor.activity_extras.icon_url = re.sub(r'([&?])d=[^&]*', r'\1d={}'.format(default_avatar), t.actor.activity_extras.icon_url) + t.obj.noindex = followee.noindex_tool_name(activity_obj.activity_url) session(t).expunge(t) # don't save back these changes if extra_limit == limit: @@ -329,7 +330,8 @@ class ForgeActivityProfileSection(ProfileSectionBase): session(activity).expunge(activity) activity_obj = get_activity_object(activity.obj) activity.obj.project = getattr(activity_obj, 'project', None) - + if hasattr(c, 'project'): + activity.obj.noindex = c.project.noindex_tool_name(activity.obj.activity_url) context.update({ 'follow_toggle': W.follow_toggle, 'following': g.director.is_connected(c.user, self.user), diff --git a/ForgeActivity/forgeactivity/templates/macros.html b/ForgeActivity/forgeactivity/templates/macros.html index 4f877324a..8b08adbf0 100644 --- a/ForgeActivity/forgeactivity/templates/macros.html +++ b/ForgeActivity/forgeactivity/templates/macros.html @@ -19,7 +19,9 @@ {% macro activity_obj(o) %} {% if o.activity_url %} - <a href="{{o.activity_url}}">{{o.activity_name}}</a> + <a href="{{o.activity_url}}" + {% if 'noindex' in o and o.noindex %} rel="nofollow" {% endif %} + >{{o.activity_name}}</a> {% else %} {{o.activity_name}} {% endif %}
