Mercurial > kallithea
annotate rhodecode/model/comment.py @ 3420:a6bef3e8a361 beta
Update changeset cache should use non-cache version of repo if given attribute is empty, it's easier to controll how changesets are udpated
The quick update logic in base controller get's cached version and updates, while any other call will use non-cached version
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Fri, 01 Mar 2013 17:56:31 +0100 |
parents | 32a283e5fd0d |
children | bbe21df7ad48 |
rev | line source |
---|---|
1670 | 1 # -*- coding: utf-8 -*- |
2 """ | |
3 rhodecode.model.comment | |
4 ~~~~~~~~~~~~~~~~~~~~~~~ | |
5 | |
6 comments model for RhodeCode | |
1789
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1734
diff
changeset
|
7 |
1670 | 8 :created_on: Nov 11, 2011 |
9 :author: marcink | |
1824
89efedac4e6c
2012 copyrights
Marcin Kuzminski <marcin@python-works.com>
parents:
1789
diff
changeset
|
10 :copyright: (C) 2011-2012 Marcin Kuzminski <marcin@python-works.com> |
1670 | 11 :license: GPLv3, see COPYING for more details. |
12 """ | |
13 # This program is free software: you can redistribute it and/or modify | |
14 # it under the terms of the GNU General Public License as published by | |
15 # the Free Software Foundation, either version 3 of the License, or | |
16 # (at your option) any later version. | |
17 # | |
18 # This program is distributed in the hope that it will be useful, | |
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
21 # GNU General Public License for more details. | |
22 # | |
23 # You should have received a copy of the GNU General Public License | |
24 # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
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 |
1670 | 38 |
39 log = logging.getLogger(__name__) | |
40 | |
41 | |
42 class ChangesetCommentsModel(BaseModel): | |
43 | |
2522
17893d61792a
Added associated classes into child models
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
44 cls = ChangesetComment |
17893d61792a
Added associated classes into child models
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
45 |
1713
54687aa00724
Tests updates, Session refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1712
diff
changeset
|
46 def __get_changeset_comment(self, changeset_comment): |
1716
7d1fc253549e
notification to commit author + gardening
Marcin Kuzminski <marcin@python-works.com>
parents:
1713
diff
changeset
|
47 return self._get_instance(ChangesetComment, changeset_comment) |
1670 | 48 |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2439
diff
changeset
|
49 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
|
50 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
|
51 |
1712
cac5109ac3b6
Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1703
diff
changeset
|
52 def _extract_mentions(self, s): |
1713
54687aa00724
Tests updates, Session refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1712
diff
changeset
|
53 user_objects = [] |
54687aa00724
Tests updates, Session refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1712
diff
changeset
|
54 for username in extract_mentioned_users(s): |
1712
cac5109ac3b6
Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1703
diff
changeset
|
55 user_obj = User.get_by_username(username, case_insensitive=True) |
cac5109ac3b6
Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1703
diff
changeset
|
56 if user_obj: |
1713
54687aa00724
Tests updates, Session refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1712
diff
changeset
|
57 user_objects.append(user_obj) |
54687aa00724
Tests updates, Session refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1712
diff
changeset
|
58 return user_objects |
1712
cac5109ac3b6
Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1703
diff
changeset
|
59 |
2541
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
60 def create(self, text, repo, user, revision=None, pull_request=None, |
3257
32a283e5fd0d
Don't send notification email for auto-status changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3250
diff
changeset
|
61 f_path=None, line_no=None, status_change=None, send_email=True): |
1670 | 62 """ |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
63 Creates new comment for changeset or pull request. |
2478
8eab81115660
white space cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
2443
diff
changeset
|
64 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
|
65 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
|
66 |
1670 | 67 :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
|
68 :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
|
69 :param user: |
1675
7c487d2678c7
code refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1670
diff
changeset
|
70 :param revision: |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
71 :param pull_request: |
1670 | 72 :param f_path: |
73 :param line_no: | |
2296
e5c0f201ca0b
Add changeset status change into emails
Marcin Kuzminski <marcin@python-works.com>
parents:
2187
diff
changeset
|
74 :param status_change: |
3257
32a283e5fd0d
Don't send notification email for auto-status changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3250
diff
changeset
|
75 :param send_email: |
1670 | 76 """ |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
77 if not text: |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
78 return |
2150
a8c9c0094ddf
White space cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
79 |
2541
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
80 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
|
81 user = self._get_user(user) |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
82 comment = ChangesetComment() |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
83 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
|
84 comment.author = user |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
85 comment.text = text |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
86 comment.f_path = f_path |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
87 comment.line_no = line_no |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
88 |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
89 if revision: |
1716
7d1fc253549e
notification to commit author + gardening
Marcin Kuzminski <marcin@python-works.com>
parents:
1713
diff
changeset
|
90 cs = repo.scm_instance.get_changeset(revision) |
2178
989c137f26eb
Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
2150
diff
changeset
|
91 desc = "%s - %s" % (cs.short_id, h.shorter(cs.message, 256)) |
1677
7276b170ce8b
#71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents:
1675
diff
changeset
|
92 comment.revision = revision |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
93 elif pull_request: |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
94 pull_request = self.__get_pull_request(pull_request) |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
95 comment.pull_request = pull_request |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
96 else: |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
97 raise Exception('Please specify revision or pull_request_id') |
1670 | 98 |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
99 self.sa.add(comment) |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
100 self.sa.flush() |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
101 |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
102 # make notification |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
103 line = '' |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
104 body = text |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
105 |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
106 #changeset |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
107 if revision: |
1712
cac5109ac3b6
Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1703
diff
changeset
|
108 if line_no: |
cac5109ac3b6
Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1703
diff
changeset
|
109 line = _('on line %s') % line_no |
2178
989c137f26eb
Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
2150
diff
changeset
|
110 subj = safe_unicode( |
2541
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
111 h.link_to('Re commit: %(desc)s %(line)s' % \ |
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
112 {'desc': desc, 'line': line}, |
2178
989c137f26eb
Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
2150
diff
changeset
|
113 h.url('changeset_home', repo_name=repo.repo_name, |
989c137f26eb
Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
2150
diff
changeset
|
114 revision=revision, |
989c137f26eb
Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
2150
diff
changeset
|
115 anchor='comment-%s' % comment.comment_id, |
989c137f26eb
Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
2150
diff
changeset
|
116 qualified=True, |
989c137f26eb
Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
2150
diff
changeset
|
117 ) |
989c137f26eb
Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
2150
diff
changeset
|
118 ) |
989c137f26eb
Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents:
2150
diff
changeset
|
119 ) |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
120 notification_type = Notification.TYPE_CHANGESET_COMMENT |
2077 | 121 # get the current participants of this changeset |
1703
f23828b00b21
notification fixes and improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1681
diff
changeset
|
122 recipients = ChangesetComment.get_users(revision=revision) |
2082 | 123 # add changeset author if it's in rhodecode system |
3185
a665d8cdd351
improved extraction of user from changeset when sending notification.
Marcin Kuzminski <marcin@python-works.com>
parents:
2814
diff
changeset
|
124 cs_author = User.get_from_cs_author(cs.author) |
a665d8cdd351
improved extraction of user from changeset when sending notification.
Marcin Kuzminski <marcin@python-works.com>
parents:
2814
diff
changeset
|
125 if not cs_author: |
a665d8cdd351
improved extraction of user from changeset when sending notification.
Marcin Kuzminski <marcin@python-works.com>
parents:
2814
diff
changeset
|
126 #use repo owner if we cannot extract the author correctly |
a665d8cdd351
improved extraction of user from changeset when sending notification.
Marcin Kuzminski <marcin@python-works.com>
parents:
2814
diff
changeset
|
127 cs_author = repo.user |
a665d8cdd351
improved extraction of user from changeset when sending notification.
Marcin Kuzminski <marcin@python-works.com>
parents:
2814
diff
changeset
|
128 recipients += [cs_author] |
2805
2454ed7f0c21
fix missing email_kwargs
Marcin Kuzminski <marcin@python-works.com>
parents:
2802
diff
changeset
|
129 email_kwargs = { |
2454ed7f0c21
fix missing email_kwargs
Marcin Kuzminski <marcin@python-works.com>
parents:
2802
diff
changeset
|
130 'status_change': status_change, |
2454ed7f0c21
fix missing email_kwargs
Marcin Kuzminski <marcin@python-works.com>
parents:
2802
diff
changeset
|
131 } |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
132 #pull request |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
133 elif pull_request: |
2802
0a623ec24b62
part2 of pull-request notification improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
2639
diff
changeset
|
134 _url = h.url('pullrequest_show', |
0a623ec24b62
part2 of pull-request notification improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
2639
diff
changeset
|
135 repo_name=pull_request.other_repo.repo_name, |
0a623ec24b62
part2 of pull-request notification improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
2639
diff
changeset
|
136 pull_request_id=pull_request.pull_request_id, |
0a623ec24b62
part2 of pull-request notification improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
2639
diff
changeset
|
137 anchor='comment-%s' % comment.comment_id, |
0a623ec24b62
part2 of pull-request notification improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
2639
diff
changeset
|
138 qualified=True, |
0a623ec24b62
part2 of pull-request notification improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
2639
diff
changeset
|
139 ) |
2541
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
140 subj = safe_unicode( |
3250
e7daa6a752ce
pull requeset: use #pr and title in comment notifications
Mads Kiilerich <madski@unity3d.com>
parents:
3185
diff
changeset
|
141 h.link_to('Re pull request #%(pr_id)s: %(desc)s %(line)s' % \ |
e7daa6a752ce
pull requeset: use #pr and title in comment notifications
Mads Kiilerich <madski@unity3d.com>
parents:
3185
diff
changeset
|
142 {'desc': comment.pull_request.title, |
e7daa6a752ce
pull requeset: use #pr and title in comment notifications
Mads Kiilerich <madski@unity3d.com>
parents:
3185
diff
changeset
|
143 'pr_id': comment.pull_request.pull_request_id, |
e7daa6a752ce
pull requeset: use #pr and title in comment notifications
Mads Kiilerich <madski@unity3d.com>
parents:
3185
diff
changeset
|
144 'line': line}, |
e7daa6a752ce
pull requeset: use #pr and title in comment notifications
Mads Kiilerich <madski@unity3d.com>
parents:
3185
diff
changeset
|
145 _url) |
2541
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
146 ) |
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2522
diff
changeset
|
147 |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
148 notification_type = Notification.TYPE_PULL_REQUEST_COMMENT |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
149 # get the current participants of this pull request |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
150 recipients = ChangesetComment.get_users(pull_request_id= |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
151 pull_request.pull_request_id) |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
152 # add pull request author |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
153 recipients += [pull_request.author] |
1716
7d1fc253549e
notification to commit author + gardening
Marcin Kuzminski <marcin@python-works.com>
parents:
1713
diff
changeset
|
154 |
2802
0a623ec24b62
part2 of pull-request notification improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
2639
diff
changeset
|
155 # add the reviewers to notification |
0a623ec24b62
part2 of pull-request notification improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
2639
diff
changeset
|
156 recipients += [x.user for x in pull_request.reviewers] |
0a623ec24b62
part2 of pull-request notification improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
2639
diff
changeset
|
157 |
0a623ec24b62
part2 of pull-request notification improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
2639
diff
changeset
|
158 #set some variables for email notification |
2805
2454ed7f0c21
fix missing email_kwargs
Marcin Kuzminski <marcin@python-works.com>
parents:
2802
diff
changeset
|
159 email_kwargs = { |
2802
0a623ec24b62
part2 of pull-request notification improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
2639
diff
changeset
|
160 'pr_id': pull_request.pull_request_id, |
0a623ec24b62
part2 of pull-request notification improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
2639
diff
changeset
|
161 'status_change': status_change, |
0a623ec24b62
part2 of pull-request notification improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
2639
diff
changeset
|
162 'pr_comment_url': _url, |
0a623ec24b62
part2 of pull-request notification improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
2639
diff
changeset
|
163 'pr_comment_user': h.person(user.email), |
0a623ec24b62
part2 of pull-request notification improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
2639
diff
changeset
|
164 'pr_target_repo': h.url('summary_home', |
0a623ec24b62
part2 of pull-request notification improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
2639
diff
changeset
|
165 repo_name=pull_request.other_repo.repo_name, |
0a623ec24b62
part2 of pull-request notification improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
2639
diff
changeset
|
166 qualified=True) |
0a623ec24b62
part2 of pull-request notification improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
2639
diff
changeset
|
167 } |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
168 |
3257
32a283e5fd0d
Don't send notification email for auto-status changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3250
diff
changeset
|
169 if send_email: |
32a283e5fd0d
Don't send notification email for auto-status changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3250
diff
changeset
|
170 # create notification objects, and emails |
2077 | 171 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
|
172 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
|
173 recipients=recipients, type_=notification_type, |
2814
5acab31448d1
fixed kwargs ->email_kwargs
Marcin Kuzminski <marcin@python-works.com>
parents:
2805
diff
changeset
|
174 email_kwargs=email_kwargs |
2077 | 175 ) |
1703
f23828b00b21
notification fixes and improvements
Marcin Kuzminski <marcin@python-works.com>
parents:
1681
diff
changeset
|
176 |
3257
32a283e5fd0d
Don't send notification email for auto-status changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3250
diff
changeset
|
177 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
|
178 .difference(recipients) |
32a283e5fd0d
Don't send notification email for auto-status changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3250
diff
changeset
|
179 if mention_recipients: |
32a283e5fd0d
Don't send notification email for auto-status changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3250
diff
changeset
|
180 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
|
181 subj = _('[Mention]') + ' ' + subj |
32a283e5fd0d
Don't send notification email for auto-status changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3250
diff
changeset
|
182 NotificationModel().create( |
32a283e5fd0d
Don't send notification email for auto-status changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3250
diff
changeset
|
183 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
|
184 recipients=mention_recipients, |
32a283e5fd0d
Don't send notification email for auto-status changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3250
diff
changeset
|
185 type_=notification_type, |
32a283e5fd0d
Don't send notification email for auto-status changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3250
diff
changeset
|
186 email_kwargs=email_kwargs |
32a283e5fd0d
Don't send notification email for auto-status changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3250
diff
changeset
|
187 ) |
32a283e5fd0d
Don't send notification email for auto-status changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3250
diff
changeset
|
188 |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
189 return comment |
1670 | 190 |
1713
54687aa00724
Tests updates, Session refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1712
diff
changeset
|
191 def delete(self, comment): |
1670 | 192 """ |
193 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
|
194 |
1670 | 195 :param comment_id: |
196 """ | |
1713
54687aa00724
Tests updates, Session refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1712
diff
changeset
|
197 comment = self.__get_changeset_comment(comment) |
1670 | 198 self.sa.delete(comment) |
1713
54687aa00724
Tests updates, Session refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1712
diff
changeset
|
199 |
1670 | 200 return comment |
1675
7c487d2678c7
code refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1670
diff
changeset
|
201 |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2439
diff
changeset
|
202 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
|
203 """ |
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
|
204 Get's main comments based on 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
|
205 |
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
|
206 :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
|
207 :type 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
|
208 :param 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
|
209 :type revision: |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2439
diff
changeset
|
210 :param pull_request: |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2439
diff
changeset
|
211 :type 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
|
212 """ |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2439
diff
changeset
|
213 |
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
|
214 q = ChangesetComment.query()\ |
1675
7c487d2678c7
code refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1670
diff
changeset
|
215 .filter(ChangesetComment.repo_id == repo_id)\ |
7c487d2678c7
code refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1670
diff
changeset
|
216 .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
|
217 .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
|
218 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
|
219 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
|
220 elif pull_request: |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2439
diff
changeset
|
221 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
|
222 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
|
223 else: |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2439
diff
changeset
|
224 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
|
225 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
|
226 return q.all() |
1675
7c487d2678c7
code refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1670
diff
changeset
|
227 |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2439
diff
changeset
|
228 def get_inline_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
|
229 q = self.sa.query(ChangesetComment)\ |
1675
7c487d2678c7
code refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1670
diff
changeset
|
230 .filter(ChangesetComment.repo_id == repo_id)\ |
1681
1bf03daafaf0
fixes inline comments double entries
Marcin Kuzminski <marcin@python-works.com>
parents:
1677
diff
changeset
|
231 .filter(ChangesetComment.line_no != None)\ |
2187
b61e540122f2
#415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents:
2178
diff
changeset
|
232 .filter(ChangesetComment.f_path != None)\ |
b61e540122f2
#415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents:
2178
diff
changeset
|
233 .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
|
234 |
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
|
235 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
|
236 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
|
237 elif pull_request: |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2439
diff
changeset
|
238 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
|
239 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
|
240 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
|
241 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
|
242 |
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
|
243 comments = q.all() |
1677
7276b170ce8b
#71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents:
1675
diff
changeset
|
244 |
1789
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1734
diff
changeset
|
245 paths = defaultdict(lambda: defaultdict(list)) |
1675
7c487d2678c7
code refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1670
diff
changeset
|
246 |
7c487d2678c7
code refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1670
diff
changeset
|
247 for co in comments: |
1677
7276b170ce8b
#71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents:
1675
diff
changeset
|
248 paths[co.f_path][co.line_no].append(co) |
7276b170ce8b
#71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents:
1675
diff
changeset
|
249 return paths.items() |