[#8164] add activity stream entries for merge request actions
diff --git a/Allura/allura/controllers/repository.py b/Allura/allura/controllers/repository.py
index 9518f89..17e3dfb 100644
--- a/Allura/allura/controllers/repository.py
+++ b/Allura/allura/controllers/repository.py
@@ -207,6 +207,8 @@
subject='Discussion for Merge Request #:%s: %s' % (
mr.request_number, mr.summary))
session(t).flush()
+ g.director.create_activity(c.user, 'created', mr,
+ related_nodes=[c.project], tags=['merge-request'])
redirect(mr.url())
@without_trailing_slash
@@ -466,6 +468,9 @@
if changes:
self.req.add_meta_post(changes=changes)
+ g.director.create_activity(c.user, 'updated', self.req,
+ related_nodes=[c.project], tags=['merge-request'])
+
redirect(self.req.url())
@expose()
@@ -475,6 +480,8 @@
if status and self.req.status != status and \
(has_access(self.req, 'write') or (self.req.creator == c.user and status == 'rejected')):
self.req.add_meta_post(changes={'Status': [self.req.status, status]})
+ g.director.create_activity(c.user, 'updated', self.req,
+ related_nodes=[c.project], tags=['merge-request'])
self.req.status = status
redirect('.')
diff --git a/Allura/allura/model/repository.py b/Allura/allura/model/repository.py
index 4c508b7..0a22230 100644
--- a/Allura/allura/model/repository.py
+++ b/Allura/allura/model/repository.py
@@ -807,6 +807,12 @@
def activity_name(self):
return 'merge request #%s' % self.request_number
+ @property
+ def activity_extras(self):
+ d = ActivityObject.activity_extras.fget(self)
+ d.update(summary=self.summary)
+ return d
+
@LazyProperty
def creator(self):
from allura import model as M
diff --git a/Allura/allura/tasks/repo_tasks.py b/Allura/allura/tasks/repo_tasks.py
index a9a89d7..f84de1a 100644
--- a/Allura/allura/tasks/repo_tasks.py
+++ b/Allura/allura/tasks/repo_tasks.py
@@ -158,6 +158,8 @@
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,
+ 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 fc30c43..3761821 100644
--- a/Allura/allura/tests/model/test_repo.py
+++ b/Allura/allura/tests/model/test_repo.py
@@ -691,8 +691,9 @@
self.mr = M.MergeRequest(
app_config=mock.Mock(_id=ObjectId()),
downstream={'commit_id': '12345'},
+ request_number=1,
)
- self.mr.app = mock.Mock(forkable=True)
+ self.mr.app = mock.Mock(forkable=True, url='/mock-app-url/')
self.mr.app.repo.commit.return_value = mock.Mock(_id='09876')
self.mr.merge_allowed = mock.Mock(return_value=True)
self.mr.discussion_thread = mock.Mock()
diff --git a/Allura/allura/tests/test_tasks.py b/Allura/allura/tests/test_tasks.py
index abfa021..2f4de42 100644
--- a/Allura/allura/tests/test_tasks.py
+++ b/Allura/allura/tests/test_tasks.py
@@ -67,7 +67,8 @@
@mock.patch('allura.tasks.repo_tasks.session', autospec=True)
@mock.patch.object(M, 'MergeRequest', autospec=True)
def test_merge(self, MR, session):
- mr = mock.Mock(_id='_id')
+ mr = mock.Mock(_id='_id',
+ activity_name='merge req', 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)