Mercurial > kallithea
annotate rhodecode/model/comment.py @ 4116:ffd45b185016 rhodecode-2.2.5-gpl
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
This imports changes between changesets 21af6c4eab3d and 6177597791c2 in
RhodeCode's original repository, including only changes to Python files and HTML.
RhodeCode clearly licensed its changes to these files under GPLv3
in their /LICENSE file, which states the following:
The Python code and integrated HTML are licensed under the GPLv3 license.
(See:
https://code.rhodecode.com/rhodecode/files/v2.2.5/LICENSE
or
http://web.archive.org/web/20140512193334/https://code.rhodecode.com/rhodecode/files/f3b123159901f15426d18e3dc395e8369f70ebe0/LICENSE
for an online copy of that LICENSE file)
Conservancy reviewed these changes and confirmed that they can be licensed as
a whole to the Kallithea project under GPLv3-only.
While some of the contents committed herein are clearly licensed
GPLv3-or-later, on the whole we must assume the are GPLv3-only, since the
statement above from RhodeCode indicates that they intend GPLv3-only as their
license, per GPLv3ยง14 and other relevant sections of GPLv3.
author | Bradley M. Kuhn <bkuhn@sfconservancy.org> |
---|---|
date | Wed, 02 Jul 2014 19:03:13 -0400 |
parents | a5888ca796b5 |
children | 7e5f8c12a3fc |
rev | line source |
---|---|
1670 | 1 # -*- coding: utf-8 -*- |
2 # This program is free software: you can redistribute it and/or modify | |
3 # it under the terms of the GNU General Public License as published by | |
4 # the Free Software Foundation, either version 3 of the License, or | |
5 # (at your option) any later version. | |
6 # | |
7 # This program is distributed in the hope that it will be useful, | |
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
10 # GNU General Public License for more details. | |
11 # | |
12 # You should have received a copy of the GNU General Public License | |
13 # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
4116
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4089
diff
changeset
|
14 """ |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4089
diff
changeset
|
15 rhodecode.model.comment |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4089
diff
changeset
|
16 ~~~~~~~~~~~~~~~~~~~~~~~ |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4089
diff
changeset
|
17 |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4089
diff
changeset
|
18 comments model for RhodeCode |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4089
diff
changeset
|
19 |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4089
diff
changeset
|
20 :created_on: Nov 11, 2011 |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4089
diff
changeset
|
21 :author: marcink |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4089
diff
changeset
|
22 :copyright: (c) 2013 RhodeCode GmbH. |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4089
diff
changeset
|
23 :license: GPLv3, see LICENSE for more details. |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4089
diff
changeset
|
24 """ |
1670 | 25 |
26 import logging | |
27 import traceback | |
28 | |
1712
cac5109ac3b6
Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1703
diff
changeset
|
29 from pylons.i18n.translation import _ |
cac5109ac3b6
Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1703
diff
changeset
|
30 from sqlalchemy.util.compat import defaultdict |
cac5109ac3b6
Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1703
diff
changeset
|
31 |
2178
989c137f26eb
Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
2150
diff
changeset
|
32 from rhodecode.lib.utils2 import extract_mentioned_users, safe_unicode |
1712
cac5109ac3b6
Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1703
diff
changeset
|
33 from rhodecode.lib import helpers as h |
1670 | 34 from rhodecode.model import BaseModel |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2439
diff
changeset
|
35 from rhodecode.model.db import ChangesetComment, User, Repository, \ |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2439
diff
changeset
|
36 Notification, PullRequest |
1703
f23828b00b21
notification fixes and improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1681
diff
changeset
|
37 from rhodecode.model.notification import NotificationModel |
3430
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
38 from rhodecode.model.meta import Session |
1670 | 39 |
40 log = logging.getLogger(__name__) | |
41 | |
42 | |
43 class ChangesetCommentsModel(BaseModel): | |
44 | |
2522
17893d61792a
Added associated classes into child models
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
45 cls = ChangesetComment |
17893d61792a
Added associated classes into child models
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
46 |
1713
54687aa00724
Tests updates, Session refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1712
diff
changeset
|
47 def __get_changeset_comment(self, changeset_comment): |
1716
7d1fc253549e
notification to commit author + gardening
Marcin Kuzminski <marcin@python-works.com>
parents:
1713
diff
changeset
|
48 return self._get_instance(ChangesetComment, changeset_comment) |
1670 | 49 |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2439
diff
changeset
|
50 def __get_pull_request(self, pull_request): |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2439
diff
changeset
|
51 return self._get_instance(PullRequest, pull_request) |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2439
diff
changeset
|
52 |
1712
cac5109ac3b6
Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1703
diff
changeset
|
53 def _extract_mentions(self, s): |
1713
54687aa00724
Tests updates, Session refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1712
diff
changeset
|
54 user_objects = [] |
54687aa00724
Tests updates, Session refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1712
diff
changeset
|
55 for username in extract_mentioned_users(s): |
1712
cac5109ac3b6
Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1703
diff
changeset
|
56 user_obj = User.get_by_username(username, case_insensitive=True) |
cac5109ac3b6
Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1703
diff
changeset
|
57 if user_obj: |
1713
54687aa00724
Tests updates, Session refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1712
diff
changeset
|
58 user_objects.append(user_obj) |
54687aa00724
Tests updates, Session refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1712
diff
changeset
|
59 return user_objects |
1712
cac5109ac3b6
Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1703
diff
changeset
|
60 |
3430
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
61 def _get_notification_data(self, repo, comment, user, comment_text, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
62 line_no=None, revision=None, pull_request=None, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
63 status_change=None, closing_pr=False): |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
64 """ |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
65 Get notification data |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
66 |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
67 :param comment_text: |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
68 :param line: |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
69 :returns: tuple (subj,body,recipients,notification_type,email_kwargs) |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
70 """ |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
71 # make notification |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
72 body = comment_text # text of the comment |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
73 line = '' |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
74 if line_no: |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
75 line = _('on line %s') % line_no |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
76 |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
77 #changeset |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
78 if revision: |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
79 notification_type = Notification.TYPE_CHANGESET_COMMENT |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
80 cs = repo.scm_instance.get_changeset(revision) |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
81 desc = "%s" % (cs.short_id) |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
82 |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
83 _url = h.url('changeset_home', |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
84 repo_name=repo.repo_name, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
85 revision=revision, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
86 anchor='comment-%s' % comment.comment_id, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
87 qualified=True, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
88 ) |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
89 subj = safe_unicode( |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
90 h.link_to('Re changeset: %(desc)s %(line)s' % \ |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
91 {'desc': desc, 'line': line}, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
92 _url) |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
93 ) |
3780
1de8abd9a4e1
emails: try to improve wording and layout - 1st iteration
Mads Kiilerich <madski@unity3d.com>
parents:
3430
diff
changeset
|
94 email_subject = '%s commented on changeset %s' % \ |
3430
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
95 (user.username, h.short_id(revision)) |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
96 # get the current participants of this changeset |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
97 recipients = ChangesetComment.get_users(revision=revision) |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
98 # add changeset author if it's in rhodecode system |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
99 cs_author = User.get_from_cs_author(cs.author) |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
100 if not cs_author: |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
101 #use repo owner if we cannot extract the author correctly |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
102 cs_author = repo.user |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
103 recipients += [cs_author] |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
104 email_kwargs = { |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
105 'status_change': status_change, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
106 'cs_comment_user': h.person(user.email), |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
107 'cs_target_repo': h.url('summary_home', repo_name=repo.repo_name, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
108 qualified=True), |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
109 'cs_comment_url': _url, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
110 'raw_id': revision, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
111 'message': cs.message |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
112 } |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
113 #pull request |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
114 elif pull_request: |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
115 notification_type = Notification.TYPE_PULL_REQUEST_COMMENT |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
116 desc = comment.pull_request.title |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
117 _url = h.url('pullrequest_show', |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
118 repo_name=pull_request.other_repo.repo_name, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
119 pull_request_id=pull_request.pull_request_id, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
120 anchor='comment-%s' % comment.comment_id, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
121 qualified=True, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
122 ) |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
123 subj = safe_unicode( |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
124 h.link_to('Re pull request #%(pr_id)s: %(desc)s %(line)s' % \ |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
125 {'desc': desc, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
126 'pr_id': comment.pull_request.pull_request_id, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
127 'line': line}, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
128 _url) |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
129 ) |
3780
1de8abd9a4e1
emails: try to improve wording and layout - 1st iteration
Mads Kiilerich <madski@unity3d.com>
parents:
3430
diff
changeset
|
130 email_subject = '%s commented on pull request #%s' % \ |
3430
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
131 (user.username, comment.pull_request.pull_request_id) |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
132 # get the current participants of this pull request |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
133 recipients = ChangesetComment.get_users(pull_request_id= |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
134 pull_request.pull_request_id) |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
135 # add pull request author |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
136 recipients += [pull_request.author] |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
137 |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
138 # add the reviewers to notification |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
139 recipients += [x.user for x in pull_request.reviewers] |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
140 |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
141 #set some variables for email notification |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
142 email_kwargs = { |
3780
1de8abd9a4e1
emails: try to improve wording and layout - 1st iteration
Mads Kiilerich <madski@unity3d.com>
parents:
3430
diff
changeset
|
143 'pr_title': pull_request.title, |
3430
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
144 'pr_id': pull_request.pull_request_id, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
145 'status_change': status_change, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
146 'closing_pr': closing_pr, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
147 'pr_comment_url': _url, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
148 'pr_comment_user': h.person(user.email), |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
149 'pr_target_repo': h.url('summary_home', |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
150 repo_name=pull_request.other_repo.repo_name, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
151 qualified=True) |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
152 } |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
153 |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
154 return subj, body, recipients, notification_type, email_kwargs, email_subject |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
155 |
2541
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
156 def create(self, text, repo, user, revision=None, pull_request=None, |
3430
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
157 f_path=None, line_no=None, status_change=None, closing_pr=False, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
158 send_email=True): |
1670 | 159 """ |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
160 Creates new comment for changeset or pull request. |
2478
8eab81115660
white space cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
2443
diff
changeset
|
161 IF status_change is not none this comment is associated with a |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
162 status change of changeset or changesets associated with pull request |
1789
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1734
diff
changeset
|
163 |
1670 | 164 :param text: |
2541
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
165 :param repo: |
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
166 :param user: |
1675
7c487d2678c7
code refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1670
diff
changeset
|
167 :param revision: |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
168 :param pull_request: |
1670 | 169 :param f_path: |
170 :param line_no: | |
2296
e5c0f201ca0b
Add changeset status change into emails
Marcin Kuzminski <marcin@python-works.com>
parents:
2187
diff
changeset
|
171 :param status_change: |
3430
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
172 :param closing_pr: |
3257
32a283e5fd0d
Don't send notification email for auto-status changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3250
diff
changeset
|
173 :param send_email: |
1670 | 174 """ |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
175 if not text: |
3430
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
176 log.warning('Missing text for comment, skipping...') |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
177 return |
2150
a8c9c0094ddf
White space cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
178 |
2541
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
179 repo = self._get_repo(repo) |
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
180 user = self._get_user(user) |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
181 comment = ChangesetComment() |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
182 comment.repo = repo |
2541
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
183 comment.author = user |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
184 comment.text = text |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
185 comment.f_path = f_path |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
186 comment.line_no = line_no |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
187 |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
188 if revision: |
1677
7276b170ce8b
#71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents:
1675
diff
changeset
|
189 comment.revision = revision |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
190 elif pull_request: |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
191 pull_request = self.__get_pull_request(pull_request) |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
192 comment.pull_request = pull_request |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
193 else: |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
194 raise Exception('Please specify revision or pull_request_id') |
1670 | 195 |
3430
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
196 Session().add(comment) |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
197 Session().flush() |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
198 |
3257
32a283e5fd0d
Don't send notification email for auto-status changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3250
diff
changeset
|
199 if send_email: |
3430
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
200 (subj, body, recipients, notification_type, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
201 email_kwargs, email_subject) = self._get_notification_data( |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
202 repo, comment, user, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
203 comment_text=text, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
204 line_no=line_no, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
205 revision=revision, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
206 pull_request=pull_request, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
207 status_change=status_change, |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
208 closing_pr=closing_pr) |
3257
32a283e5fd0d
Don't send notification email for auto-status changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3250
diff
changeset
|
209 # create notification objects, and emails |
2077 | 210 NotificationModel().create( |
2541
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
211 created_by=user, subject=subj, body=body, |
3257
32a283e5fd0d
Don't send notification email for auto-status changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3250
diff
changeset
|
212 recipients=recipients, type_=notification_type, |
3430
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
213 email_kwargs=email_kwargs, email_subject=email_subject |
2077 | 214 ) |
1703
f23828b00b21
notification fixes and improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1681
diff
changeset
|
215 |
3257
32a283e5fd0d
Don't send notification email for auto-status changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3250
diff
changeset
|
216 mention_recipients = set(self._extract_mentions(body))\ |
32a283e5fd0d
Don't send notification email for auto-status changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3250
diff
changeset
|
217 .difference(recipients) |
32a283e5fd0d
Don't send notification email for auto-status changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3250
diff
changeset
|
218 if mention_recipients: |
32a283e5fd0d
Don't send notification email for auto-status changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3250
diff
changeset
|
219 email_kwargs.update({'pr_mention': True}) |
32a283e5fd0d
Don't send notification email for auto-status changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3250
diff
changeset
|
220 subj = _('[Mention]') + ' ' + subj |
32a283e5fd0d
Don't send notification email for auto-status changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3250
diff
changeset
|
221 NotificationModel().create( |
32a283e5fd0d
Don't send notification email for auto-status changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3250
diff
changeset
|
222 created_by=user, subject=subj, body=body, |
32a283e5fd0d
Don't send notification email for auto-status changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3250
diff
changeset
|
223 recipients=mention_recipients, |
32a283e5fd0d
Don't send notification email for auto-status changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3250
diff
changeset
|
224 type_=notification_type, |
32a283e5fd0d
Don't send notification email for auto-status changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3250
diff
changeset
|
225 email_kwargs=email_kwargs |
32a283e5fd0d
Don't send notification email for auto-status changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3250
diff
changeset
|
226 ) |
32a283e5fd0d
Don't send notification email for auto-status changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3250
diff
changeset
|
227 |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
228 return comment |
1670 | 229 |
1713
54687aa00724
Tests updates, Session refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1712
diff
changeset
|
230 def delete(self, comment): |
1670 | 231 """ |
232 Deletes given comment | |
1789
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1734
diff
changeset
|
233 |
1670 | 234 :param comment_id: |
235 """ | |
1713
54687aa00724
Tests updates, Session refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1712
diff
changeset
|
236 comment = self.__get_changeset_comment(comment) |
3430
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
237 Session().delete(comment) |
1713
54687aa00724
Tests updates, Session refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1712
diff
changeset
|
238 |
1670 | 239 return comment |
1675
7c487d2678c7
code refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1670
diff
changeset
|
240 |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2439
diff
changeset
|
241 def get_comments(self, repo_id, revision=None, pull_request=None): |
2439
ad19dfcdb1cc
Refactoring of changeset_file_comments for more generic usage. In both It enables sharing code between changeset, and pull requests discussions
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
242 """ |
4089
a5888ca796b5
Fixed spelling of get's to gets
Marcin Kuzminski <marcin@python-works.com>
parents:
3780
diff
changeset
|
243 Gets main comments based on revision or pull_request_id |
2439
ad19dfcdb1cc
Refactoring of changeset_file_comments for more generic usage. In both It enables sharing code between changeset, and pull requests discussions
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
244 |
ad19dfcdb1cc
Refactoring of changeset_file_comments for more generic usage. In both It enables sharing code between changeset, and pull requests discussions
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
245 :param repo_id: |
ad19dfcdb1cc
Refactoring of changeset_file_comments for more generic usage. In both It enables sharing code between changeset, and pull requests discussions
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
246 :param revision: |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2439
diff
changeset
|
247 :param pull_request: |
2439
ad19dfcdb1cc
Refactoring of changeset_file_comments for more generic usage. In both It enables sharing code between changeset, and pull requests discussions
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
248 """ |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2439
diff
changeset
|
249 |
2439
ad19dfcdb1cc
Refactoring of changeset_file_comments for more generic usage. In both It enables sharing code between changeset, and pull requests discussions
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
250 q = ChangesetComment.query()\ |
1675
7c487d2678c7
code refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1670
diff
changeset
|
251 .filter(ChangesetComment.repo_id == repo_id)\ |
7c487d2678c7
code refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1670
diff
changeset
|
252 .filter(ChangesetComment.line_no == None)\ |
2439
ad19dfcdb1cc
Refactoring of changeset_file_comments for more generic usage. In both It enables sharing code between changeset, and pull requests discussions
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
253 .filter(ChangesetComment.f_path == None) |
ad19dfcdb1cc
Refactoring of changeset_file_comments for more generic usage. In both It enables sharing code between changeset, and pull requests discussions
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
254 if revision: |
ad19dfcdb1cc
Refactoring of changeset_file_comments for more generic usage. In both It enables sharing code between changeset, and pull requests discussions
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
255 q = q.filter(ChangesetComment.revision == revision) |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2439
diff
changeset
|
256 elif pull_request: |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2439
diff
changeset
|
257 pull_request = self.__get_pull_request(pull_request) |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2439
diff
changeset
|
258 q = q.filter(ChangesetComment.pull_request == pull_request) |
2439
ad19dfcdb1cc
Refactoring of changeset_file_comments for more generic usage. In both It enables sharing code between changeset, and pull requests discussions
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
259 else: |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2439
diff
changeset
|
260 raise Exception('Please specify revision or pull_request') |
2639
f3e039e4dc49
Added created_on column to changeset comments for proper ordering.
Marcin Kuzminski <marcin@python-works.com>
parents:
2541
diff
changeset
|
261 q = q.order_by(ChangesetComment.created_on) |
2439
ad19dfcdb1cc
Refactoring of changeset_file_comments for more generic usage. In both It enables sharing code between changeset, and pull requests discussions
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
262 return q.all() |
1675
7c487d2678c7
code refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1670
diff
changeset
|
263 |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2439
diff
changeset
|
264 def get_inline_comments(self, repo_id, revision=None, pull_request=None): |
3430
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3257
diff
changeset
|
265 q = Session().query(ChangesetComment)\ |
1675
7c487d2678c7
code refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1670
diff
changeset
|
266 .filter(ChangesetComment.repo_id == repo_id)\ |
1681
1bf03daafaf0
fixes inline comments double entries
Marcin Kuzminski <marcin@python-works.com>
parents:
1677
diff
changeset
|
267 .filter(ChangesetComment.line_no != None)\ |
2187
b61e540122f2
#415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents:
2178
diff
changeset
|
268 .filter(ChangesetComment.f_path != None)\ |
b61e540122f2
#415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents:
2178
diff
changeset
|
269 .order_by(ChangesetComment.comment_id.asc())\ |
2439
ad19dfcdb1cc
Refactoring of changeset_file_comments for more generic usage. In both It enables sharing code between changeset, and pull requests discussions
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
270 |
ad19dfcdb1cc
Refactoring of changeset_file_comments for more generic usage. In both It enables sharing code between changeset, and pull requests discussions
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
271 if revision: |
ad19dfcdb1cc
Refactoring of changeset_file_comments for more generic usage. In both It enables sharing code between changeset, and pull requests discussions
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
272 q = q.filter(ChangesetComment.revision == revision) |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2439
diff
changeset
|
273 elif pull_request: |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2439
diff
changeset
|
274 pull_request = self.__get_pull_request(pull_request) |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2439
diff
changeset
|
275 q = q.filter(ChangesetComment.pull_request == pull_request) |
2439
ad19dfcdb1cc
Refactoring of changeset_file_comments for more generic usage. In both It enables sharing code between changeset, and pull requests discussions
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
276 else: |
ad19dfcdb1cc
Refactoring of changeset_file_comments for more generic usage. In both It enables sharing code between changeset, and pull requests discussions
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
277 raise Exception('Please specify revision or pull_request_id') |
ad19dfcdb1cc
Refactoring of changeset_file_comments for more generic usage. In both It enables sharing code between changeset, and pull requests discussions
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
278 |
ad19dfcdb1cc
Refactoring of changeset_file_comments for more generic usage. In both It enables sharing code between changeset, and pull requests discussions
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
279 comments = q.all() |
1677
7276b170ce8b
#71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents:
1675
diff
changeset
|
280 |
1789
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1734
diff
changeset
|
281 paths = defaultdict(lambda: defaultdict(list)) |
1675
7c487d2678c7
code refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1670
diff
changeset
|
282 |
7c487d2678c7
code refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1670
diff
changeset
|
283 for co in comments: |
1677
7276b170ce8b
#71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents:
1675
diff
changeset
|
284 paths[co.f_path][co.line_no].append(co) |
7276b170ce8b
#71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents:
1675
diff
changeset
|
285 return paths.items() |