Mercurial > kallithea
annotate rhodecode/controllers/pullrequests.py @ 2929:f3b913b76be1 beta
Calculate file history always from latest changeset to always show full history.
When doing the calculation from a particular changeset git doesn't any records from parent changesets
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Wed, 17 Oct 2012 20:32:25 +0200 |
parents | eb180eb16c18 |
children | 07d620f6db2e |
rev | line source |
---|---|
2244
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
1 # -*- coding: utf-8 -*- |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
2 """ |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
3 rhodecode.controllers.pullrequests |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
5 |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
6 pull requests controller for rhodecode for initializing pull requests |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
7 |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
8 :created_on: May 7, 2012 |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
9 :author: marcink |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
10 :copyright: (C) 2010-2012 Marcin Kuzminski <marcin@python-works.com> |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
11 :license: GPLv3, see COPYING for more details. |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
12 """ |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
13 # This program is free software: you can redistribute it and/or modify |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
14 # it under the terms of the GNU General Public License as published by |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
15 # the Free Software Foundation, either version 3 of the License, or |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
16 # (at your option) any later version. |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
17 # |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
18 # This program is distributed in the hope that it will be useful, |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
21 # GNU General Public License for more details. |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
22 # |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
23 # You should have received a copy of the GNU General Public License |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
24 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
25 import logging |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
26 import traceback |
2711
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
27 import formencode |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
28 |
2489
a0adf8db1416
Enabled inline comments in pull-requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2487
diff
changeset
|
29 from webob.exc import HTTPNotFound, HTTPForbidden |
2481
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
30 from collections import defaultdict |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
31 from itertools import groupby |
2244
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
32 |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
33 from pylons import request, response, session, tmpl_context as c, url |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
34 from pylons.controllers.util import abort, redirect |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
35 from pylons.i18n.translation import _ |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
36 from pylons.decorators import jsonify |
2244
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
37 |
2541
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2533
diff
changeset
|
38 from rhodecode.lib.compat import json |
2244
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
39 from rhodecode.lib.base import BaseRepoController, render |
2612
9364776d1331
Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents:
2608
diff
changeset
|
40 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator,\ |
9364776d1331
Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents:
2608
diff
changeset
|
41 NotAnonymous |
2434
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2395
diff
changeset
|
42 from rhodecode.lib import helpers as h |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
43 from rhodecode.lib import diffs |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
44 from rhodecode.lib.utils import action_logger |
2489
a0adf8db1416
Enabled inline comments in pull-requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2487
diff
changeset
|
45 from rhodecode.model.db import User, PullRequest, ChangesetStatus,\ |
a0adf8db1416
Enabled inline comments in pull-requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2487
diff
changeset
|
46 ChangesetComment |
2434
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2395
diff
changeset
|
47 from rhodecode.model.pull_request import PullRequestModel |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2395
diff
changeset
|
48 from rhodecode.model.meta import Session |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
49 from rhodecode.model.repo import RepoModel |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
50 from rhodecode.model.comment import ChangesetCommentsModel |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
51 from rhodecode.model.changeset_status import ChangesetStatusModel |
2711
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
52 from rhodecode.model.forms import PullRequestForm |
2874
95923493de9a
protect agains pull requests on empty repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2849
diff
changeset
|
53 from rhodecode.lib.vcs.exceptions import EmptyRepositoryError |
2244
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
54 |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
55 log = logging.getLogger(__name__) |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
56 |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
57 |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
58 class PullrequestsController(BaseRepoController): |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
59 |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
60 @LoginRequired() |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
61 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
62 'repository.admin') |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
63 def __before__(self): |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
64 super(PullrequestsController, self).__before__() |
2612
9364776d1331
Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents:
2608
diff
changeset
|
65 repo_model = RepoModel() |
9364776d1331
Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents:
2608
diff
changeset
|
66 c.users_array = repo_model.get_users_js() |
9364776d1331
Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents:
2608
diff
changeset
|
67 c.users_groups_array = repo_model.get_users_groups_js() |
2244
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
68 |
2395
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2244
diff
changeset
|
69 def _get_repo_refs(self, repo): |
2244
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
70 hist_l = [] |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
71 |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
72 branches_group = ([('branch:%s:%s' % (k, v), k) for |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
73 k, v in repo.branches.iteritems()], _("Branches")) |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
74 bookmarks_group = ([('book:%s:%s' % (k, v), k) for |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
75 k, v in repo.bookmarks.iteritems()], _("Bookmarks")) |
2478
8eab81115660
white space cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
2444
diff
changeset
|
76 tags_group = ([('tag:%s:%s' % (k, v), k) for |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
77 k, v in repo.tags.iteritems()], _("Tags")) |
2244
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
78 |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
79 hist_l.append(bookmarks_group) |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
80 hist_l.append(branches_group) |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
81 hist_l.append(tags_group) |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
82 |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
83 return hist_l |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
84 |
2849
2b672f04bfd9
fixed few issues with autoselection of revisions on pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2803
diff
changeset
|
85 def _get_default_rev(self, repo): |
2b672f04bfd9
fixed few issues with autoselection of revisions on pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2803
diff
changeset
|
86 """ |
2b672f04bfd9
fixed few issues with autoselection of revisions on pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2803
diff
changeset
|
87 Get's default revision to do compare on pull request |
2b672f04bfd9
fixed few issues with autoselection of revisions on pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2803
diff
changeset
|
88 |
2b672f04bfd9
fixed few issues with autoselection of revisions on pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2803
diff
changeset
|
89 :param repo: |
2b672f04bfd9
fixed few issues with autoselection of revisions on pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2803
diff
changeset
|
90 """ |
2b672f04bfd9
fixed few issues with autoselection of revisions on pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2803
diff
changeset
|
91 repo = repo.scm_instance |
2b672f04bfd9
fixed few issues with autoselection of revisions on pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2803
diff
changeset
|
92 if 'default' in repo.branches: |
2b672f04bfd9
fixed few issues with autoselection of revisions on pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2803
diff
changeset
|
93 return 'default' |
2b672f04bfd9
fixed few issues with autoselection of revisions on pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2803
diff
changeset
|
94 else: |
2b672f04bfd9
fixed few issues with autoselection of revisions on pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2803
diff
changeset
|
95 #if repo doesn't have default branch return first found |
2b672f04bfd9
fixed few issues with autoselection of revisions on pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2803
diff
changeset
|
96 return repo.branches.keys()[0] |
2b672f04bfd9
fixed few issues with autoselection of revisions on pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2803
diff
changeset
|
97 |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
98 def show_all(self, repo_name): |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
99 c.pull_requests = PullRequestModel().get_all(repo_name) |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
100 c.repo_name = repo_name |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
101 return render('/pullrequests/pullrequest_show_all.html') |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
102 |
2627
6bd62617b99f
Opening pull request shouldn't be accessible by anonymous users
Marcin Kuzminski <marcin@python-works.com>
parents:
2614
diff
changeset
|
103 @NotAnonymous() |
2244
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
104 def index(self): |
2395
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2244
diff
changeset
|
105 org_repo = c.rhodecode_db_repo |
2444 | 106 |
107 if org_repo.scm_instance.alias != 'hg': | |
108 log.error('Review not available for GIT REPOS') | |
109 raise HTTPNotFound | |
110 | |
2874
95923493de9a
protect agains pull requests on empty repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2849
diff
changeset
|
111 try: |
95923493de9a
protect agains pull requests on empty repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2849
diff
changeset
|
112 org_repo.scm_instance.get_changeset() |
95923493de9a
protect agains pull requests on empty repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2849
diff
changeset
|
113 except EmptyRepositoryError, e: |
95923493de9a
protect agains pull requests on empty repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2849
diff
changeset
|
114 h.flash(h.literal(_('There are no changesets yet')), |
95923493de9a
protect agains pull requests on empty repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2849
diff
changeset
|
115 category='warning') |
95923493de9a
protect agains pull requests on empty repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2849
diff
changeset
|
116 redirect(url('summary_home', repo_name=org_repo.repo_name)) |
95923493de9a
protect agains pull requests on empty repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2849
diff
changeset
|
117 |
2541
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2533
diff
changeset
|
118 other_repos_info = {} |
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2533
diff
changeset
|
119 |
2244
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
120 c.org_refs = self._get_repo_refs(c.rhodecode_repo) |
2395
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2244
diff
changeset
|
121 c.org_repos = [] |
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2244
diff
changeset
|
122 c.other_repos = [] |
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2244
diff
changeset
|
123 c.org_repos.append((org_repo.repo_name, '%s/%s' % ( |
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2244
diff
changeset
|
124 org_repo.user.username, c.repo_name)) |
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2244
diff
changeset
|
125 ) |
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2244
diff
changeset
|
126 |
2720
0f7355d3c196
Load generated revs while switching to other sources of pull-requests.
Marcin Kuzminski <marcin@python-works.com>
parents:
2712
diff
changeset
|
127 # add org repo to other so we can open pull request agains itself |
2395
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2244
diff
changeset
|
128 c.other_repos.extend(c.org_repos) |
2541
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2533
diff
changeset
|
129 |
2849
2b672f04bfd9
fixed few issues with autoselection of revisions on pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2803
diff
changeset
|
130 c.default_pull_request = org_repo.repo_name # repo name pre-selected |
2b672f04bfd9
fixed few issues with autoselection of revisions on pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2803
diff
changeset
|
131 c.default_pull_request_rev = self._get_default_rev(org_repo) # revision pre-selected |
2720
0f7355d3c196
Load generated revs while switching to other sources of pull-requests.
Marcin Kuzminski <marcin@python-works.com>
parents:
2712
diff
changeset
|
132 c.default_revs = self._get_repo_refs(org_repo.scm_instance) |
2541
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2533
diff
changeset
|
133 #add orginal repo |
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2533
diff
changeset
|
134 other_repos_info[org_repo.repo_name] = { |
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2533
diff
changeset
|
135 'gravatar': h.gravatar_url(org_repo.user.email, 24), |
2720
0f7355d3c196
Load generated revs while switching to other sources of pull-requests.
Marcin Kuzminski <marcin@python-works.com>
parents:
2712
diff
changeset
|
136 'description': org_repo.description, |
0f7355d3c196
Load generated revs while switching to other sources of pull-requests.
Marcin Kuzminski <marcin@python-works.com>
parents:
2712
diff
changeset
|
137 'revs': h.select('other_ref', '', c.default_revs, class_='refs') |
2541
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2533
diff
changeset
|
138 } |
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2533
diff
changeset
|
139 |
2395
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2244
diff
changeset
|
140 #gather forks and add to this list |
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2244
diff
changeset
|
141 for fork in org_repo.forks: |
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2244
diff
changeset
|
142 c.other_repos.append((fork.repo_name, '%s/%s' % ( |
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2244
diff
changeset
|
143 fork.user.username, fork.repo_name)) |
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2244
diff
changeset
|
144 ) |
2541
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2533
diff
changeset
|
145 other_repos_info[fork.repo_name] = { |
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2533
diff
changeset
|
146 'gravatar': h.gravatar_url(fork.user.email, 24), |
2720
0f7355d3c196
Load generated revs while switching to other sources of pull-requests.
Marcin Kuzminski <marcin@python-works.com>
parents:
2712
diff
changeset
|
147 'description': fork.description, |
0f7355d3c196
Load generated revs while switching to other sources of pull-requests.
Marcin Kuzminski <marcin@python-works.com>
parents:
2712
diff
changeset
|
148 'revs': h.select('other_ref', '', |
0f7355d3c196
Load generated revs while switching to other sources of pull-requests.
Marcin Kuzminski <marcin@python-works.com>
parents:
2712
diff
changeset
|
149 self._get_repo_refs(fork.scm_instance), |
0f7355d3c196
Load generated revs while switching to other sources of pull-requests.
Marcin Kuzminski <marcin@python-works.com>
parents:
2712
diff
changeset
|
150 class_='refs') |
2541
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2533
diff
changeset
|
151 } |
2395
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2244
diff
changeset
|
152 #add parents of this fork also |
2434
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2395
diff
changeset
|
153 if org_repo.parent: |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2395
diff
changeset
|
154 c.default_pull_request = org_repo.parent.repo_name |
2849
2b672f04bfd9
fixed few issues with autoselection of revisions on pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2803
diff
changeset
|
155 c.default_pull_request_rev = self._get_default_rev(org_repo.parent) |
2b672f04bfd9
fixed few issues with autoselection of revisions on pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2803
diff
changeset
|
156 c.default_revs = self._get_repo_refs(org_repo.parent.scm_instance) |
2434
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2395
diff
changeset
|
157 c.other_repos.append((org_repo.parent.repo_name, '%s/%s' % ( |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2395
diff
changeset
|
158 org_repo.parent.user.username, |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2395
diff
changeset
|
159 org_repo.parent.repo_name)) |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2395
diff
changeset
|
160 ) |
2541
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2533
diff
changeset
|
161 other_repos_info[org_repo.parent.repo_name] = { |
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2533
diff
changeset
|
162 'gravatar': h.gravatar_url(org_repo.parent.user.email, 24), |
2720
0f7355d3c196
Load generated revs while switching to other sources of pull-requests.
Marcin Kuzminski <marcin@python-works.com>
parents:
2712
diff
changeset
|
163 'description': org_repo.parent.description, |
0f7355d3c196
Load generated revs while switching to other sources of pull-requests.
Marcin Kuzminski <marcin@python-works.com>
parents:
2712
diff
changeset
|
164 'revs': h.select('other_ref', '', |
0f7355d3c196
Load generated revs while switching to other sources of pull-requests.
Marcin Kuzminski <marcin@python-works.com>
parents:
2712
diff
changeset
|
165 self._get_repo_refs(org_repo.parent.scm_instance), |
0f7355d3c196
Load generated revs while switching to other sources of pull-requests.
Marcin Kuzminski <marcin@python-works.com>
parents:
2712
diff
changeset
|
166 class_='refs') |
2541
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2533
diff
changeset
|
167 } |
2395
b262e349a7a5
created pull-request overview
Marcin Kuzminski <marcin@python-works.com>
parents:
2244
diff
changeset
|
168 |
2541
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2533
diff
changeset
|
169 c.other_repos_info = json.dumps(other_repos_info) |
2612
9364776d1331
Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents:
2608
diff
changeset
|
170 c.review_members = [org_repo.user] |
2244
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
171 return render('/pullrequests/pullrequest.html') |
2434
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2395
diff
changeset
|
172 |
2612
9364776d1331
Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents:
2608
diff
changeset
|
173 @NotAnonymous() |
2434
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2395
diff
changeset
|
174 def create(self, repo_name): |
2893
eb180eb16c18
Fixed #585, checks for status of revision where to strict, and made opening pull request with those revision impossible due to previosly set status.
Marcin Kuzminski <marcin@python-works.com>
parents:
2892
diff
changeset
|
175 repo = RepoModel()._get_repo(repo_name) |
2711
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
176 try: |
2893
eb180eb16c18
Fixed #585, checks for status of revision where to strict, and made opening pull request with those revision impossible due to previosly set status.
Marcin Kuzminski <marcin@python-works.com>
parents:
2892
diff
changeset
|
177 _form = PullRequestForm(repo.repo_id)().to_python(request.POST) |
2711
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
178 except formencode.Invalid, errors: |
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
179 log.error(traceback.format_exc()) |
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
180 if errors.error_dict.get('revisions'): |
2720
0f7355d3c196
Load generated revs while switching to other sources of pull-requests.
Marcin Kuzminski <marcin@python-works.com>
parents:
2712
diff
changeset
|
181 msg = 'Revisions: %s' % errors.error_dict['revisions'] |
2711
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
182 elif errors.error_dict.get('pullrequest_title'): |
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
183 msg = _('Pull request requires a title with min. 3 chars') |
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
184 else: |
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
185 msg = _('error during creation of pull request') |
2612
9364776d1331
Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents:
2608
diff
changeset
|
186 |
2711
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
187 h.flash(msg, 'error') |
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
188 return redirect(url('pullrequest_home', repo_name=repo_name)) |
2434
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2395
diff
changeset
|
189 |
2711
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
190 org_repo = _form['org_repo'] |
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
191 org_ref = _form['org_ref'] |
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
192 other_repo = _form['other_repo'] |
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
193 other_ref = _form['other_ref'] |
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
194 revisions = _form['revisions'] |
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
195 reviewers = _form['review_members'] |
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
196 |
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
197 title = _form['pullrequest_title'] |
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
198 description = _form['pullrequest_desc'] |
2434
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2395
diff
changeset
|
199 |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2395
diff
changeset
|
200 try: |
2541
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2533
diff
changeset
|
201 pull_request = PullRequestModel().create( |
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2533
diff
changeset
|
202 self.rhodecode_user.user_id, org_repo, org_ref, other_repo, |
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2533
diff
changeset
|
203 other_ref, revisions, reviewers, title, description |
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2533
diff
changeset
|
204 ) |
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2533
diff
changeset
|
205 Session().commit() |
2533
5a826060251f
redirect to pull-request overview after creation
Marcin Kuzminski <marcin@python-works.com>
parents:
2496
diff
changeset
|
206 h.flash(_('Successfully opened new pull request'), |
5a826060251f
redirect to pull-request overview after creation
Marcin Kuzminski <marcin@python-works.com>
parents:
2496
diff
changeset
|
207 category='success') |
2434
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2395
diff
changeset
|
208 except Exception: |
2533
5a826060251f
redirect to pull-request overview after creation
Marcin Kuzminski <marcin@python-works.com>
parents:
2496
diff
changeset
|
209 h.flash(_('Error occurred during sending pull request'), |
2434
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2395
diff
changeset
|
210 category='error') |
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2395
diff
changeset
|
211 log.error(traceback.format_exc()) |
2711
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
212 return redirect(url('pullrequest_home', repo_name=repo_name)) |
2434
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2395
diff
changeset
|
213 |
2533
5a826060251f
redirect to pull-request overview after creation
Marcin Kuzminski <marcin@python-works.com>
parents:
2496
diff
changeset
|
214 return redirect(url('pullrequest_show', repo_name=other_repo, |
5a826060251f
redirect to pull-request overview after creation
Marcin Kuzminski <marcin@python-works.com>
parents:
2496
diff
changeset
|
215 pull_request_id=pull_request.pull_request_id)) |
2434
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2395
diff
changeset
|
216 |
2614
3f50a5e8fc4d
Added editing of pull-request reviewers.
Marcin Kuzminski <marcin@python-works.com>
parents:
2612
diff
changeset
|
217 @NotAnonymous() |
3f50a5e8fc4d
Added editing of pull-request reviewers.
Marcin Kuzminski <marcin@python-works.com>
parents:
2612
diff
changeset
|
218 @jsonify |
3f50a5e8fc4d
Added editing of pull-request reviewers.
Marcin Kuzminski <marcin@python-works.com>
parents:
2612
diff
changeset
|
219 def update(self, repo_name, pull_request_id): |
3f50a5e8fc4d
Added editing of pull-request reviewers.
Marcin Kuzminski <marcin@python-works.com>
parents:
2612
diff
changeset
|
220 pull_request = PullRequest.get_or_404(pull_request_id) |
3f50a5e8fc4d
Added editing of pull-request reviewers.
Marcin Kuzminski <marcin@python-works.com>
parents:
2612
diff
changeset
|
221 if pull_request.is_closed(): |
3f50a5e8fc4d
Added editing of pull-request reviewers.
Marcin Kuzminski <marcin@python-works.com>
parents:
2612
diff
changeset
|
222 raise HTTPForbidden() |
2769 | 223 #only owner or admin can update it |
224 owner = pull_request.author.user_id == c.rhodecode_user.user_id | |
225 if h.HasPermissionAny('hg.admin', 'repository.admin')() or owner: | |
226 reviewers_ids = map(int, filter(lambda v: v not in [None, ''], | |
227 request.POST.get('reviewers_ids', '').split(','))) | |
2712
7224882c4059
new summary for opened pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2711
diff
changeset
|
228 |
2769 | 229 PullRequestModel().update_reviewers(pull_request_id, reviewers_ids) |
230 Session.commit() | |
231 return True | |
232 raise HTTPForbidden() | |
2614
3f50a5e8fc4d
Added editing of pull-request reviewers.
Marcin Kuzminski <marcin@python-works.com>
parents:
2612
diff
changeset
|
233 |
2746
49a4864b11c1
Authors of pull-requests can now delete them
Marcin Kuzminski <marcin@python-works.com>
parents:
2720
diff
changeset
|
234 @NotAnonymous() |
49a4864b11c1
Authors of pull-requests can now delete them
Marcin Kuzminski <marcin@python-works.com>
parents:
2720
diff
changeset
|
235 @jsonify |
49a4864b11c1
Authors of pull-requests can now delete them
Marcin Kuzminski <marcin@python-works.com>
parents:
2720
diff
changeset
|
236 def delete(self, repo_name, pull_request_id): |
49a4864b11c1
Authors of pull-requests can now delete them
Marcin Kuzminski <marcin@python-works.com>
parents:
2720
diff
changeset
|
237 pull_request = PullRequest.get_or_404(pull_request_id) |
49a4864b11c1
Authors of pull-requests can now delete them
Marcin Kuzminski <marcin@python-works.com>
parents:
2720
diff
changeset
|
238 #only owner can delete it ! |
49a4864b11c1
Authors of pull-requests can now delete them
Marcin Kuzminski <marcin@python-works.com>
parents:
2720
diff
changeset
|
239 if pull_request.author.user_id == c.rhodecode_user.user_id: |
49a4864b11c1
Authors of pull-requests can now delete them
Marcin Kuzminski <marcin@python-works.com>
parents:
2720
diff
changeset
|
240 PullRequestModel().delete(pull_request) |
49a4864b11c1
Authors of pull-requests can now delete them
Marcin Kuzminski <marcin@python-works.com>
parents:
2720
diff
changeset
|
241 Session().commit() |
49a4864b11c1
Authors of pull-requests can now delete them
Marcin Kuzminski <marcin@python-works.com>
parents:
2720
diff
changeset
|
242 h.flash(_('Successfully deleted pull request'), |
49a4864b11c1
Authors of pull-requests can now delete them
Marcin Kuzminski <marcin@python-works.com>
parents:
2720
diff
changeset
|
243 category='success') |
49a4864b11c1
Authors of pull-requests can now delete them
Marcin Kuzminski <marcin@python-works.com>
parents:
2720
diff
changeset
|
244 return redirect(url('admin_settings_my_account')) |
2769 | 245 raise HTTPForbidden() |
2746
49a4864b11c1
Authors of pull-requests can now delete them
Marcin Kuzminski <marcin@python-works.com>
parents:
2720
diff
changeset
|
246 |
2608
58c529332e7e
Added option to close pull requests, in future that will be close & merge
Marcin Kuzminski <marcin@python-works.com>
parents:
2570
diff
changeset
|
247 def _load_compare_data(self, pull_request, enable_comments=True): |
2442
3bf057a7f7e8
small refactoring, moved shared for diff generation of code into pull-request model
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
248 """ |
3bf057a7f7e8
small refactoring, moved shared for diff generation of code into pull-request model
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
249 Load context data needed for generating compare diff |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
250 |
2442
3bf057a7f7e8
small refactoring, moved shared for diff generation of code into pull-request model
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
251 :param pull_request: |
3bf057a7f7e8
small refactoring, moved shared for diff generation of code into pull-request model
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
252 :type pull_request: |
3bf057a7f7e8
small refactoring, moved shared for diff generation of code into pull-request model
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
253 """ |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
254 |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
255 org_repo = pull_request.org_repo |
2711
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
256 (org_ref_type, |
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
257 org_ref_name, |
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
258 org_ref_rev) = pull_request.org_ref.split(':') |
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
259 |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
260 other_repo = pull_request.other_repo |
2711
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
261 (other_ref_type, |
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
262 other_ref_name, |
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
263 other_ref_rev) = pull_request.other_ref.split(':') |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
264 |
2720
0f7355d3c196
Load generated revs while switching to other sources of pull-requests.
Marcin Kuzminski <marcin@python-works.com>
parents:
2712
diff
changeset
|
265 # despite opening revisions for bookmarks/branches/tags, we always |
2711
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
266 # convert this to rev to prevent changes after book or branch change |
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
267 org_ref = ('rev', org_ref_rev) |
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
268 other_ref = ('rev', other_ref_rev) |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
269 |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
270 c.org_repo = org_repo |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
271 c.other_repo = other_repo |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
272 |
2442
3bf057a7f7e8
small refactoring, moved shared for diff generation of code into pull-request model
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
273 c.cs_ranges, discovery_data = PullRequestModel().get_compare_data( |
3bf057a7f7e8
small refactoring, moved shared for diff generation of code into pull-request model
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
274 org_repo, org_ref, other_repo, other_ref |
3bf057a7f7e8
small refactoring, moved shared for diff generation of code into pull-request model
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
275 ) |
2892
5fba3778431c
#590 Add GET flag that controls the way the diff are generated, for pull requests we want to use non-bundle based diffs,
Marcin Kuzminski <marcin@python-works.com>
parents:
2874
diff
changeset
|
276 if c.cs_ranges: |
5fba3778431c
#590 Add GET flag that controls the way the diff are generated, for pull requests we want to use non-bundle based diffs,
Marcin Kuzminski <marcin@python-works.com>
parents:
2874
diff
changeset
|
277 # case we want a simple diff without incoming changesets, just |
5fba3778431c
#590 Add GET flag that controls the way the diff are generated, for pull requests we want to use non-bundle based diffs,
Marcin Kuzminski <marcin@python-works.com>
parents:
2874
diff
changeset
|
278 # for review purposes. Make the diff on the forked repo, with |
5fba3778431c
#590 Add GET flag that controls the way the diff are generated, for pull requests we want to use non-bundle based diffs,
Marcin Kuzminski <marcin@python-works.com>
parents:
2874
diff
changeset
|
279 # revision that is common ancestor |
5fba3778431c
#590 Add GET flag that controls the way the diff are generated, for pull requests we want to use non-bundle based diffs,
Marcin Kuzminski <marcin@python-works.com>
parents:
2874
diff
changeset
|
280 other_ref = ('rev', c.cs_ranges[-1].parents[0].raw_id) |
5fba3778431c
#590 Add GET flag that controls the way the diff are generated, for pull requests we want to use non-bundle based diffs,
Marcin Kuzminski <marcin@python-works.com>
parents:
2874
diff
changeset
|
281 other_repo = org_repo |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
282 |
2803
0b2214604c74
Fixed status of changesets in preview windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2796
diff
changeset
|
283 c.statuses = org_repo.statuses([x.raw_id for x in c.cs_ranges]) |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
284 # defines that we need hidden inputs with changesets |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
285 c.as_form = request.GET.get('as_form', False) |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
286 |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
287 c.org_ref = org_ref[1] |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
288 c.other_ref = other_ref[1] |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
289 # diff needs to have swapped org with other to generate proper diff |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
290 _diff = diffs.differ(other_repo, other_ref, org_repo, org_ref, |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
291 discovery_data) |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
292 diff_processor = diffs.DiffProcessor(_diff, format='gitdiff') |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
293 _parsed = diff_processor.prepare() |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
294 |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
295 c.files = [] |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
296 c.changes = {} |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
297 |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
298 for f in _parsed: |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
299 fid = h.FID('', f['filename']) |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
300 c.files.append([fid, f['operation'], f['filename'], f['stats']]) |
2608
58c529332e7e
Added option to close pull requests, in future that will be close & merge
Marcin Kuzminski <marcin@python-works.com>
parents:
2570
diff
changeset
|
301 diff = diff_processor.as_html(enable_comments=enable_comments, |
2489
a0adf8db1416
Enabled inline comments in pull-requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2487
diff
changeset
|
302 diff_lines=[f]) |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
303 c.changes[fid] = [f['operation'], f['filename'], diff] |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
304 |
2434
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2395
diff
changeset
|
305 def show(self, repo_name, pull_request_id): |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
306 repo_model = RepoModel() |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
307 c.users_array = repo_model.get_users_js() |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
308 c.users_groups_array = repo_model.get_users_groups_js() |
2496
fddd8e3fc157
use get_or_404 where possible
Marcin Kuzminski <marcin@python-works.com>
parents:
2489
diff
changeset
|
309 c.pull_request = PullRequest.get_or_404(pull_request_id) |
2803
0b2214604c74
Fixed status of changesets in preview windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2796
diff
changeset
|
310 c.target_repo = c.pull_request.org_repo.repo_name |
2442
3bf057a7f7e8
small refactoring, moved shared for diff generation of code into pull-request model
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
311 |
2481
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
312 cc_model = ChangesetCommentsModel() |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
313 cs_model = ChangesetStatusModel() |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
314 _cs_statuses = cs_model.get_statuses(c.pull_request.org_repo, |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
315 pull_request=c.pull_request, |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
316 with_revisions=True) |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
317 |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
318 cs_statuses = defaultdict(list) |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
319 for st in _cs_statuses: |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
320 cs_statuses[st.author.username] += [st] |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
321 |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
322 c.pull_request_reviewers = [] |
2712
7224882c4059
new summary for opened pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2711
diff
changeset
|
323 c.pull_request_pending_reviewers = [] |
2481
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
324 for o in c.pull_request.reviewers: |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
325 st = cs_statuses.get(o.user.username, None) |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
326 if st: |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
327 sorter = lambda k: k.version |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
328 st = [(x, list(y)[0]) |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
329 for x, y in (groupby(sorted(st, key=sorter), sorter))] |
2712
7224882c4059
new summary for opened pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2711
diff
changeset
|
330 else: |
7224882c4059
new summary for opened pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2711
diff
changeset
|
331 c.pull_request_pending_reviewers.append(o.user) |
2481
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
332 c.pull_request_reviewers.append([o.user, st]) |
2444 | 333 |
334 # pull_requests repo_name we opened it against | |
335 # ie. other_repo must match | |
336 if repo_name != c.pull_request.other_repo.repo_name: | |
337 raise HTTPNotFound | |
338 | |
2442
3bf057a7f7e8
small refactoring, moved shared for diff generation of code into pull-request model
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
339 # load compare data into template context |
2608
58c529332e7e
Added option to close pull requests, in future that will be close & merge
Marcin Kuzminski <marcin@python-works.com>
parents:
2570
diff
changeset
|
340 enable_comments = not c.pull_request.is_closed() |
58c529332e7e
Added option to close pull requests, in future that will be close & merge
Marcin Kuzminski <marcin@python-works.com>
parents:
2570
diff
changeset
|
341 self._load_compare_data(c.pull_request, enable_comments=enable_comments) |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
342 |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
343 # inline comments |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
344 c.inline_cnt = 0 |
2481
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
345 c.inline_comments = cc_model.get_inline_comments( |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
346 c.rhodecode_db_repo.repo_id, |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
347 pull_request=pull_request_id) |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
348 # count inline comments |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
349 for __, lines in c.inline_comments: |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
350 for comments in lines.values(): |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
351 c.inline_cnt += len(comments) |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
352 # comments |
2481
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
353 c.comments = cc_model.get_comments(c.rhodecode_db_repo.repo_id, |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
354 pull_request=pull_request_id) |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
355 |
2803
0b2214604c74
Fixed status of changesets in preview windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2796
diff
changeset
|
356 try: |
0b2214604c74
Fixed status of changesets in preview windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2796
diff
changeset
|
357 cur_status = c.statuses[c.pull_request.revisions[0]][0] |
0b2214604c74
Fixed status of changesets in preview windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2796
diff
changeset
|
358 except: |
0b2214604c74
Fixed status of changesets in preview windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2796
diff
changeset
|
359 log.error(traceback.format_exc()) |
0b2214604c74
Fixed status of changesets in preview windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2796
diff
changeset
|
360 cur_status = 'undefined' |
0b2214604c74
Fixed status of changesets in preview windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2796
diff
changeset
|
361 if c.pull_request.is_closed() and 0: |
0b2214604c74
Fixed status of changesets in preview windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2796
diff
changeset
|
362 c.current_changeset_status = cur_status |
0b2214604c74
Fixed status of changesets in preview windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2796
diff
changeset
|
363 else: |
0b2214604c74
Fixed status of changesets in preview windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2796
diff
changeset
|
364 # changeset(pull-request) status calulation based on reviewers |
0b2214604c74
Fixed status of changesets in preview windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2796
diff
changeset
|
365 c.current_changeset_status = cs_model.calculate_status( |
0b2214604c74
Fixed status of changesets in preview windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2796
diff
changeset
|
366 c.pull_request_reviewers, |
0b2214604c74
Fixed status of changesets in preview windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2796
diff
changeset
|
367 ) |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
368 c.changeset_statuses = ChangesetStatus.STATUSES |
2803
0b2214604c74
Fixed status of changesets in preview windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2796
diff
changeset
|
369 |
2434
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2395
diff
changeset
|
370 return render('/pullrequests/pullrequest_show.html') |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
371 |
2627
6bd62617b99f
Opening pull request shouldn't be accessible by anonymous users
Marcin Kuzminski <marcin@python-works.com>
parents:
2614
diff
changeset
|
372 @NotAnonymous() |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
373 @jsonify |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
374 def comment(self, repo_name, pull_request_id): |
2608
58c529332e7e
Added option to close pull requests, in future that will be close & merge
Marcin Kuzminski <marcin@python-works.com>
parents:
2570
diff
changeset
|
375 pull_request = PullRequest.get_or_404(pull_request_id) |
58c529332e7e
Added option to close pull requests, in future that will be close & merge
Marcin Kuzminski <marcin@python-works.com>
parents:
2570
diff
changeset
|
376 if pull_request.is_closed(): |
58c529332e7e
Added option to close pull requests, in future that will be close & merge
Marcin Kuzminski <marcin@python-works.com>
parents:
2570
diff
changeset
|
377 raise HTTPForbidden() |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
378 |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
379 status = request.POST.get('changeset_status') |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
380 change_status = request.POST.get('change_changeset_status') |
2796
bf3c976d02ec
always post text about status changes of code-review
Marcin Kuzminski <marcin@python-works.com>
parents:
2769
diff
changeset
|
381 text = request.POST.get('text') |
bf3c976d02ec
always post text about status changes of code-review
Marcin Kuzminski <marcin@python-works.com>
parents:
2769
diff
changeset
|
382 if status and change_status: |
bf3c976d02ec
always post text about status changes of code-review
Marcin Kuzminski <marcin@python-works.com>
parents:
2769
diff
changeset
|
383 text = text or (_('Status change -> %s') |
bf3c976d02ec
always post text about status changes of code-review
Marcin Kuzminski <marcin@python-works.com>
parents:
2769
diff
changeset
|
384 % ChangesetStatus.get_status_lbl(status)) |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
385 comm = ChangesetCommentsModel().create( |
2796
bf3c976d02ec
always post text about status changes of code-review
Marcin Kuzminski <marcin@python-works.com>
parents:
2769
diff
changeset
|
386 text=text, |
2541
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2533
diff
changeset
|
387 repo=c.rhodecode_db_repo.repo_id, |
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2533
diff
changeset
|
388 user=c.rhodecode_user.user_id, |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
389 pull_request=pull_request_id, |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
390 f_path=request.POST.get('f_path'), |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
391 line_no=request.POST.get('line'), |
2478
8eab81115660
white space cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
2444
diff
changeset
|
392 status_change=(ChangesetStatus.get_status_lbl(status) |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
393 if status and change_status else None) |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
394 ) |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
395 |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
396 # get status if set ! |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
397 if status and change_status: |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
398 ChangesetStatusModel().set_status( |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
399 c.rhodecode_db_repo.repo_id, |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
400 status, |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
401 c.rhodecode_user.user_id, |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
402 comm, |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
403 pull_request=pull_request_id |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
404 ) |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
405 action_logger(self.rhodecode_user, |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
406 'user_commented_pull_request:%s' % pull_request_id, |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
407 c.rhodecode_db_repo, self.ip_addr, self.sa) |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
408 |
2608
58c529332e7e
Added option to close pull requests, in future that will be close & merge
Marcin Kuzminski <marcin@python-works.com>
parents:
2570
diff
changeset
|
409 if request.POST.get('save_close'): |
58c529332e7e
Added option to close pull requests, in future that will be close & merge
Marcin Kuzminski <marcin@python-works.com>
parents:
2570
diff
changeset
|
410 PullRequestModel().close_pull_request(pull_request_id) |
58c529332e7e
Added option to close pull requests, in future that will be close & merge
Marcin Kuzminski <marcin@python-works.com>
parents:
2570
diff
changeset
|
411 action_logger(self.rhodecode_user, |
58c529332e7e
Added option to close pull requests, in future that will be close & merge
Marcin Kuzminski <marcin@python-works.com>
parents:
2570
diff
changeset
|
412 'user_closed_pull_request:%s' % pull_request_id, |
58c529332e7e
Added option to close pull requests, in future that will be close & merge
Marcin Kuzminski <marcin@python-works.com>
parents:
2570
diff
changeset
|
413 c.rhodecode_db_repo, self.ip_addr, self.sa) |
58c529332e7e
Added option to close pull requests, in future that will be close & merge
Marcin Kuzminski <marcin@python-works.com>
parents:
2570
diff
changeset
|
414 |
2541
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2533
diff
changeset
|
415 Session().commit() |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
416 |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
417 if not request.environ.get('HTTP_X_PARTIAL_XHR'): |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
418 return redirect(h.url('pullrequest_show', repo_name=repo_name, |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
419 pull_request_id=pull_request_id)) |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
420 |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
421 data = { |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
422 'target_id': h.safeid(h.safe_unicode(request.POST.get('f_path'))), |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
423 } |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
424 if comm: |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
425 c.co = comm |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
426 data.update(comm.get_dict()) |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
427 data.update({'rendered_text': |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
428 render('changeset/changeset_comment_block.html')}) |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
429 |
2444 | 430 return data |
2489
a0adf8db1416
Enabled inline comments in pull-requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2487
diff
changeset
|
431 |
2627
6bd62617b99f
Opening pull request shouldn't be accessible by anonymous users
Marcin Kuzminski <marcin@python-works.com>
parents:
2614
diff
changeset
|
432 @NotAnonymous() |
2489
a0adf8db1416
Enabled inline comments in pull-requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2487
diff
changeset
|
433 @jsonify |
a0adf8db1416
Enabled inline comments in pull-requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2487
diff
changeset
|
434 def delete_comment(self, repo_name, comment_id): |
a0adf8db1416
Enabled inline comments in pull-requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2487
diff
changeset
|
435 co = ChangesetComment.get(comment_id) |
2608
58c529332e7e
Added option to close pull requests, in future that will be close & merge
Marcin Kuzminski <marcin@python-works.com>
parents:
2570
diff
changeset
|
436 if co.pull_request.is_closed(): |
58c529332e7e
Added option to close pull requests, in future that will be close & merge
Marcin Kuzminski <marcin@python-works.com>
parents:
2570
diff
changeset
|
437 #don't allow deleting comments on closed pull request |
58c529332e7e
Added option to close pull requests, in future that will be close & merge
Marcin Kuzminski <marcin@python-works.com>
parents:
2570
diff
changeset
|
438 raise HTTPForbidden() |
58c529332e7e
Added option to close pull requests, in future that will be close & merge
Marcin Kuzminski <marcin@python-works.com>
parents:
2570
diff
changeset
|
439 |
2489
a0adf8db1416
Enabled inline comments in pull-requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2487
diff
changeset
|
440 owner = lambda: co.author.user_id == c.rhodecode_user.user_id |
a0adf8db1416
Enabled inline comments in pull-requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2487
diff
changeset
|
441 if h.HasPermissionAny('hg.admin', 'repository.admin')() or owner: |
a0adf8db1416
Enabled inline comments in pull-requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2487
diff
changeset
|
442 ChangesetCommentsModel().delete(comment=co) |
2541
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2533
diff
changeset
|
443 Session().commit() |
2489
a0adf8db1416
Enabled inline comments in pull-requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2487
diff
changeset
|
444 return True |
a0adf8db1416
Enabled inline comments in pull-requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2487
diff
changeset
|
445 else: |
2614
3f50a5e8fc4d
Added editing of pull-request reviewers.
Marcin Kuzminski <marcin@python-works.com>
parents:
2612
diff
changeset
|
446 raise HTTPForbidden() |