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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1670
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
2 # This program is free software: you can redistribute it and/or modify
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
3 # it under the terms of the GNU General Public License as published by
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
4 # the Free Software Foundation, either version 3 of the License, or
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
5 # (at your option) any later version.
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
6 #
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
7 # This program is distributed in the hope that it will be useful,
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
10 # GNU General Public License for more details.
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
11 #
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
12 # You should have received a copy of the GNU General Public License
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
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
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
25
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
26 import logging
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
27 import traceback
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
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
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
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
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
39
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
40 log = logging.getLogger(__name__)
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
41
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
42
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
43 class ChangesetCommentsModel(BaseModel):
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
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
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
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
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
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
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
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
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
169 :param f_path:
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
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
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
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
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
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
179604334d98 code garden
Marcin Kuzminski <marcin@python-works.com>
parents: 1824
diff changeset
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
179604334d98 code garden
Marcin Kuzminski <marcin@python-works.com>
parents: 1824
diff changeset
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
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
229
1713
54687aa00724 Tests updates, Session refactoring
Marcin Kuzminski <marcin@python-works.com>
parents: 1712
diff changeset
230 def delete(self, comment):
1670
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
231 """
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
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
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
234 :param comment_id:
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
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
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
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()