You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by br...@apache.org on 2022/11/30 20:21:56 UTC

[allura] branch master updated: [#8481] added target attributes to repository activity

This is an automated email from the ASF dual-hosted git repository.

brondsem 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 eea5822eb [#8481] added target attributes to repository activity
eea5822eb is described below

commit eea5822ebbe85fbf33527e91c3ce34bc57e39a83
Author: Guillermo Cruz <gu...@slashdotmedia.com>
AuthorDate: Mon Nov 28 14:30:29 2022 -0600

    [#8481] added target attributes to repository activity
---
 Allura/allura/app.py                    | 15 ++++++++++++++-
 Allura/allura/controllers/repository.py |  2 +-
 Allura/allura/lib/helpers.py            |  2 +-
 Allura/allura/model/repo_refresh.py     |  2 +-
 Allura/allura/tasks/repo_tasks.py       |  2 +-
 Allura/allura/tests/model/test_repo.py  |  3 ++-
 Allura/allura/tests/test_tasks.py       |  4 ++--
 7 files changed, 22 insertions(+), 8 deletions(-)

diff --git a/Allura/allura/app.py b/Allura/allura/app.py
index 81ccd13e5..b278720f4 100644
--- a/Allura/allura/app.py
+++ b/Allura/allura/app.py
@@ -49,6 +49,7 @@ from allura import model as M
 from allura.tasks import index_tasks
 import six
 from io import BytesIO
+from allura.model.timeline import ActivityObject
 
 log = logging.getLogger(__name__)
 
@@ -218,7 +219,7 @@ class SitemapEntry:
         )
 
 
-class Application:
+class Application(ActivityObject):
 
     """
     The base Allura pluggable application
@@ -820,6 +821,18 @@ class Application:
         """
         return None
 
+    @property
+    def activity_name(self):
+        return self.config.options.mount_label
+
+    @property
+    def activity_url(self):
+        return self.url
+
+    @property
+    def activity_extras(self):
+        return {}
+
 
 class AdminControllerMixin:
     """Provides common functionality admin controllers need"""
diff --git a/Allura/allura/controllers/repository.py b/Allura/allura/controllers/repository.py
index cb9cad866..96f77d0e9 100644
--- a/Allura/allura/controllers/repository.py
+++ b/Allura/allura/controllers/repository.py
@@ -219,7 +219,7 @@ class RepoRootController(BaseController, FeedController):
             )
             session(t).flush()
             allura.tasks.notification_tasks.send_usermentions_notification.post(mr.index_id(), kw['description'])
-            g.director.create_activity(c.user, 'created', mr,
+            g.director.create_activity(c.user, 'created', mr, target=mr.app,
                                        related_nodes=[c.project], tags=['merge-request'])
             redirect(mr.url())
 
diff --git a/Allura/allura/lib/helpers.py b/Allura/allura/lib/helpers.py
index 51d867ebc..6aefc5627 100644
--- a/Allura/allura/lib/helpers.py
+++ b/Allura/allura/lib/helpers.py
@@ -814,7 +814,7 @@ def get_tool_packages(tool_name):
     app = g.entry_points['tool'].get(tool_name.lower())
     if not app:
         return []
-    classes = [c for c in app.mro() if c not in (Application, object)]
+    classes = [c for c in app.mro() if c not in Application.mro()]
     return [cls.__module__.split('.')[0] for cls in classes]
 
 
diff --git a/Allura/allura/model/repo_refresh.py b/Allura/allura/model/repo_refresh.py
index da7d81651..f352a17c0 100644
--- a/Allura/allura/model/repo_refresh.py
+++ b/Allura/allura/model/repo_refresh.py
@@ -93,7 +93,7 @@ def refresh_repo(repo, all_commits=False, notify=True, new_clone=False, commits_
                 g.statsUpdater.newCommit(new, repo.app_config.project, user)
             actor = user or TransientActor(
                     activity_name=new.committed.name or new.committed.email)
-            g.director.create_activity(actor, 'committed', new,
+            g.director.create_activity(actor, 'committed', new, target=repo.app,
                                        related_nodes=[repo.app_config.project],
                                        tags=['commit', repo.tool.lower()])
 
diff --git a/Allura/allura/tasks/repo_tasks.py b/Allura/allura/tasks/repo_tasks.py
index 17f26788c..42eb6b914 100644
--- a/Allura/allura/tasks/repo_tasks.py
+++ b/Allura/allura/tasks/repo_tasks.py
@@ -160,7 +160,7 @@ def merge(merge_request_id):
     mr.app.repo.merge(mr)
     mr.add_meta_post(changes={'Status': [mr.status, 'merged']})
     mr.status = 'merged'
-    g.director.create_activity(c.user, 'merged', mr,
+    g.director.create_activity(c.user, 'merged', mr, target=mr.app,
                                related_nodes=[c.project], tags=['merge-request'])
     session(mr).flush(mr)
 
diff --git a/Allura/allura/tests/model/test_repo.py b/Allura/allura/tests/model/test_repo.py
index 85fa9b9fb..b1fab59d6 100644
--- a/Allura/allura/tests/model/test_repo.py
+++ b/Allura/allura/tests/model/test_repo.py
@@ -686,11 +686,12 @@ class TestMergeRequest:
             app_config=mock.Mock(_id=ObjectId()),
             downstream={'commit_id': '12345'},
             request_number=1,
+
         )
         self._set_mr_mock_attrs(self.mr)
 
     def _set_mr_mock_attrs(self, mr):
-        mr.app = mock.Mock(forkable=True, url='/mock-app-url/')
+        mr.app = mock.Mock(forkable=True, url='/mock-app-url/', activity_name='code merge', activity_url='/fake/url', activity_extras={}, node_id=None)
         mr.app.repo.commit.return_value = mock.Mock(_id='09876')
         mr.merge_allowed = mock.Mock(return_value=True)
         mr.discussion_thread = mock.Mock()
diff --git a/Allura/allura/tests/test_tasks.py b/Allura/allura/tests/test_tasks.py
index bb61cb95a..275c36455 100644
--- a/Allura/allura/tests/test_tasks.py
+++ b/Allura/allura/tests/test_tasks.py
@@ -72,8 +72,8 @@ class TestRepoTasks(unittest.TestCase):
     @mock.patch('allura.tasks.repo_tasks.session', autospec=True)
     @mock.patch.object(M, 'MergeRequest')
     def test_merge(self, MR, session):
-        mr = mock.Mock(_id='_id',
-                       activity_name='merge req', activity_url='/fake/url', activity_extras={}, node_id=None)
+        mr = mock.Mock(_id='_id', activity_name='merge req', activity_url='/fake/url', activity_extras={}, node_id=None,
+                       app=mock.Mock(activity_name='code merge', activity_url='/fake/url', activity_extras={}, node_id=None))
         MR.query.get.return_value = mr
         repo_tasks.merge(mr._id)
         mr.app.repo.merge.assert_called_once_with(mr)