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 2017/09/26 18:39:28 UTC

[1/3] allura git commit: [#8164] add activity stream entries for merge request actions

Repository: allura
Updated Branches:
  refs/heads/db/8164 [created] 6b662dfb3


[#8164] add activity stream entries for merge request actions


Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/6b662dfb
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/6b662dfb
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/6b662dfb

Branch: refs/heads/db/8164
Commit: 6b662dfb30fe87bf46da501fc7908704e7831b99
Parents: 6307d34
Author: Dave Brondsema <da...@brondsema.net>
Authored: Tue Sep 26 12:22:54 2017 -0400
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Tue Sep 26 14:37:18 2017 -0400

----------------------------------------------------------------------
 Allura/allura/controllers/repository.py | 7 +++++++
 Allura/allura/model/repository.py       | 6 ++++++
 Allura/allura/tasks/repo_tasks.py       | 2 ++
 Allura/allura/tests/model/test_repo.py  | 3 ++-
 Allura/allura/tests/test_tasks.py       | 3 ++-
 5 files changed, 19 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/6b662dfb/Allura/allura/controllers/repository.py
----------------------------------------------------------------------
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 @@ class RepoRootController(BaseController, FeedController):
                 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 @@ class MergeRequestController(object):
 
         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 @@ class MergeRequestController(object):
         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('.')
 

http://git-wip-us.apache.org/repos/asf/allura/blob/6b662dfb/Allura/allura/model/repository.py
----------------------------------------------------------------------
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 @@ class MergeRequest(VersionedArtifact, ActivityObject):
     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

http://git-wip-us.apache.org/repos/asf/allura/blob/6b662dfb/Allura/allura/tasks/repo_tasks.py
----------------------------------------------------------------------
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 @@ 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,
+                               related_nodes=[c.project], tags=['merge-request'])
     session(mr).flush(mr)
 
 

http://git-wip-us.apache.org/repos/asf/allura/blob/6b662dfb/Allura/allura/tests/model/test_repo.py
----------------------------------------------------------------------
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 @@ class TestMergeRequest(object):
         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()

http://git-wip-us.apache.org/repos/asf/allura/blob/6b662dfb/Allura/allura/tests/test_tasks.py
----------------------------------------------------------------------
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 @@ class TestRepoTasks(unittest.TestCase):
     @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)


[3/3] allura git commit: [#8164] creator of merge requests gets subscribed to it

Posted by br...@apache.org.
[#8164] creator of merge requests gets subscribed to it


Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/63070c1c
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/63070c1c
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/63070c1c

Branch: refs/heads/db/8164
Commit: 63070c1cf2adacb048c69025db11d2dfedee8899
Parents: 17d8729
Author: Dave Brondsema <da...@brondsema.net>
Authored: Tue Sep 26 12:22:28 2017 -0400
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Tue Sep 26 14:37:18 2017 -0400

----------------------------------------------------------------------
 Allura/allura/controllers/repository.py         |  1 +
 Allura/allura/templates/mail/MergeRequest.txt   |  2 +-
 .../032-subscribe-merge-request-submitters.py   | 40 ++++++++++++++++++++
 3 files changed, 42 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/63070c1c/Allura/allura/controllers/repository.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/repository.py b/Allura/allura/controllers/repository.py
index 8a02905..7b4c703 100644
--- a/Allura/allura/controllers/repository.py
+++ b/Allura/allura/controllers/repository.py
@@ -197,6 +197,7 @@ class RepoRootController(BaseController, FeedController):
                 source_branch=kw['source_branch'],
                 summary=kw['summary'],
                 description=kw['description'])
+            mr.subscribe(user=c.user)
             M.Notification.post(
                 mr, 'merge_request',
                 subject='Merge request: ' + mr.summary)

http://git-wip-us.apache.org/repos/asf/allura/blob/63070c1c/Allura/allura/templates/mail/MergeRequest.txt
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/mail/MergeRequest.txt b/Allura/allura/templates/mail/MergeRequest.txt
index 34d0af5..3302aba 100644
--- a/Allura/allura/templates/mail/MergeRequest.txt
+++ b/Allura/allura/templates/mail/MergeRequest.txt
@@ -20,6 +20,6 @@
 
 ---
 
-{{ data.creator_name }} has requested that you merge changes from `{{ data.downstream_repo.clone_url_first(anon=False) }}` at commit `{{data.downstream_repo.shorthand_for_commit(data.downstream.commit_id)}}` into the branch `{{ data.target_branch }}`
+{{ data.creator_name }} has requested to merge changes from `{{ data.downstream_repo.clone_url_first(anon=False) }}` at commit `{{data.downstream_repo.shorthand_for_commit(data.downstream.commit_id)}}` into the branch `{{ data.target_branch }}`
 
 {{ data.description }}

http://git-wip-us.apache.org/repos/asf/allura/blob/63070c1c/scripts/migrations/032-subscribe-merge-request-submitters.py
----------------------------------------------------------------------
diff --git a/scripts/migrations/032-subscribe-merge-request-submitters.py b/scripts/migrations/032-subscribe-merge-request-submitters.py
new file mode 100644
index 0000000..3791dd7
--- /dev/null
+++ b/scripts/migrations/032-subscribe-merge-request-submitters.py
@@ -0,0 +1,40 @@
+#       Licensed to the Apache Software Foundation (ASF) under one
+#       or more contributor license agreements.  See the NOTICE file
+#       distributed with this work for additional information
+#       regarding copyright ownership.  The ASF licenses this file
+#       to you under the Apache License, Version 2.0 (the
+#       "License"); you may not use this file except in compliance
+#       with the License.  You may obtain a copy of the License at
+#
+#         http://www.apache.org/licenses/LICENSE-2.0
+#
+#       Unless required by applicable law or agreed to in writing,
+#       software distributed under the License is distributed on an
+#       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+#       KIND, either express or implied.  See the License for the
+#       specific language governing permissions and limitations
+#       under the License.
+
+import logging
+
+from ming.odm import ThreadLocalORMSession, state
+
+from allura.lib import utils
+from allura import model as M
+
+log = logging.getLogger(__name__)
+
+
+def main():
+    for chunk in utils.chunked_find(M.MergeRequest):
+        for mr in chunk:
+            try:
+                print 'Processing {0}'.format(mr.url())
+                mr.subscribe(user=mr.creator)
+                ThreadLocalORMSession.flush_all()
+            except:
+                log.exception('Error on %s', mr)
+
+
+if __name__ == '__main__':
+    main()


[2/3] allura git commit: [#8164] add subscribe icon in Merge Request action bar

Posted by br...@apache.org.
[#8164] add subscribe icon in Merge Request action bar


Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/6307d34f
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/6307d34f
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/6307d34f

Branch: refs/heads/db/8164
Commit: 6307d34f708ad5c000eb864ebf3e4d8147c4b9de
Parents: 63070c1
Author: Dave Brondsema <da...@brondsema.net>
Authored: Tue Sep 26 12:54:02 2017 -0400
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Tue Sep 26 14:37:18 2017 -0400

----------------------------------------------------------------------
 Allura/allura/controllers/repository.py         | 29 +++++++++++++++++++-
 Allura/allura/templates/repo/merge_request.html |  3 ++
 2 files changed, 31 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/6307d34f/Allura/allura/controllers/repository.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/repository.py b/Allura/allura/controllers/repository.py
index 7b4c703..9518f89 100644
--- a/Allura/allura/controllers/repository.py
+++ b/Allura/allura/controllers/repository.py
@@ -359,6 +359,7 @@ class MergeRequestController(object):
         page=None, limit=None, page_size=None, count=None,
         style='linear')
     mr_dispose_form = SCMMergeRequestDisposeWidget()
+    subscribe_form = SubscribeForm(thing='merge request')
 
     def __init__(self, num):
         self.req = M.MergeRequest.query.get(
@@ -373,9 +374,18 @@ class MergeRequestController(object):
         c.thread = self.thread_widget
         c.log_widget = self.log_widget
         c.mr_dispose_form = self.mr_dispose_form
+        c.subscribe_form = self.subscribe_form
+
         limit, page = h.paging_sanitizer(limit, page)
         with self.req.push_downstream_context():
             downstream_app = c.app
+
+        tool_subscribed = M.Mailbox.subscribed()
+        if tool_subscribed:
+            subscribed = False
+        else:
+            subscribed = M.Mailbox.subscribed(artifact=self.req)
+
         result = dict(
             downstream_app=downstream_app,
             req=self.req,
@@ -384,7 +394,9 @@ class MergeRequestController(object):
             merge_status=self.req.merge_task_status(),
             page=page,
             limit=limit,
-            count=self.req.discussion_thread.post_count)
+            count=self.req.discussion_thread.post_count,
+            subscribed=subscribed,
+        )
         try:
             result['commits'] = self.req.commits
         except Exception:
@@ -495,6 +507,21 @@ class MergeRequestController(object):
         """Return result from the cache. Used by js, after task was completed."""
         return {'can_merge': self.req.can_merge()}
 
+    @expose('json:')
+    @require_post()
+    @validate(subscribe_form)
+    def subscribe(self, subscribe=None, unsubscribe=None, **kw):
+        if subscribe:
+            self.req.subscribe()
+        elif unsubscribe:
+            self.req.unsubscribe()
+        return {
+            'status': 'ok',
+            'subscribed': M.Mailbox.subscribed(artifact=self.req),
+            'subscribed_to_tool': M.Mailbox.subscribed(),
+            'subscribed_to_entire_name': 'code repository',
+        }
+
 
 class RefsController(object):
 

http://git-wip-us.apache.org/repos/asf/allura/blob/6307d34f/Allura/allura/templates/repo/merge_request.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/repo/merge_request.html b/Allura/allura/templates/repo/merge_request.html
index c5517c1..fd3acdf 100644
--- a/Allura/allura/templates/repo/merge_request.html
+++ b/Allura/allura/templates/repo/merge_request.html
@@ -27,6 +27,9 @@ Merge Request #{{req.request_number}}: {{req.summary}} ({{req.status}})
 {% endblock %}
 
 {% block actions %}
+  {% if c.user and c.user != c.user.anonymous() %}
+    {{ c.subscribe_form.display(value=subscribed, action='subscribe', style='icon') }}
+  {% endif %}
   {% if h.has_access(req, 'write')() %}
     {{ g.icons['edit'].render(href='edit', show_title=True) }}
   {% endif %}