Mercurial > kallithea
annotate rhodecode/controllers/pullrequests.py @ 4053:3625fd19b201
pull requests: add a 'Calculated' comment on current_changeset_status
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Wed, 12 Jun 2013 02:13:05 +0200 |
parents | a7b7526c7f7c |
children | a2218bdbf45d |
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 |
3941
3208aaefc9ca
Moved all Mercurial imports into hgcompat from vcs
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
33 from pylons import request, tmpl_context as c, url |
3208aaefc9ca
Moved all Mercurial imports into hgcompat from vcs
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
34 from pylons.controllers.util import redirect |
2244
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
35 from pylons.i18n.translation import _ |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
36 |
2541
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2533
diff
changeset
|
37 from rhodecode.lib.compat import json |
2244
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
38 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
|
39 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
|
40 NotAnonymous |
3676
9d2db665ef31
pagination in pull-requests page + UI
Marcin Kuzminski <marcin@python-works.com>
parents:
3654
diff
changeset
|
41 from rhodecode.lib.helpers import Page |
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 |
3061
7727faad5baf
fixed issue #671 commenting on pull requests sometimes used old JSON encoder and broke. This changeset replaces it's with RhodeCode json encoder to ensure all data is properly serializable
Marcin Kuzminski <marcin@python-works.com>
parents:
3023
diff
changeset
|
44 from rhodecode.lib.utils import action_logger, jsonify |
3718
b2575bdb847c
diffs: drop diffs.differ
Mads Kiilerich <madski@unity3d.com>
parents:
3676
diff
changeset
|
45 from rhodecode.lib.vcs.utils import safe_str |
3061
7727faad5baf
fixed issue #671 commenting on pull requests sometimes used old JSON encoder and broke. This changeset replaces it's with RhodeCode json encoder to ensure all data is properly serializable
Marcin Kuzminski <marcin@python-works.com>
parents:
3023
diff
changeset
|
46 from rhodecode.lib.vcs.exceptions import EmptyRepositoryError |
7727faad5baf
fixed issue #671 commenting on pull requests sometimes used old JSON encoder and broke. This changeset replaces it's with RhodeCode json encoder to ensure all data is properly serializable
Marcin Kuzminski <marcin@python-works.com>
parents:
3023
diff
changeset
|
47 from rhodecode.lib.diffs import LimitedDiffContainer |
3941
3208aaefc9ca
Moved all Mercurial imports into hgcompat from vcs
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
48 from rhodecode.model.db import PullRequest, ChangesetStatus, ChangesetComment |
2434
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2395
diff
changeset
|
49 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
|
50 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
|
51 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
|
52 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
|
53 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
|
54 from rhodecode.model.forms import PullRequestForm |
3676
9d2db665ef31
pagination in pull-requests page + UI
Marcin Kuzminski <marcin@python-works.com>
parents:
3654
diff
changeset
|
55 from rhodecode.lib.utils2 import safe_int |
2244
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 log = logging.getLogger(__name__) |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
58 |
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 class PullrequestsController(BaseRepoController): |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
61 |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
62 def __before__(self): |
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
63 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
|
64 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
|
65 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
|
66 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
|
67 |
3813
dca89d578c70
pull requests: use branch name when creating PRs from a changelog with branch filter
Mads Kiilerich <madski@unity3d.com>
parents:
3812
diff
changeset
|
68 def _get_repo_refs(self, repo, rev=None, branch=None, branch_rev=None): |
3444
c12603d5ee13
pullrequests: refactor changeset selectors, tip is special and not a real tag
Mads Kiilerich <madski@unity3d.com>
parents:
3442
diff
changeset
|
69 """return a structure with repo's interesting changesets, suitable for |
3811
3591b33e0c94
hg: use 'revset injection safe' repo.revs for revsets
Mads Kiilerich <madski@unity3d.com>
parents:
3785
diff
changeset
|
70 the selectors in pullrequest.html |
3591b33e0c94
hg: use 'revset injection safe' repo.revs for revsets
Mads Kiilerich <madski@unity3d.com>
parents:
3785
diff
changeset
|
71 |
3813
dca89d578c70
pull requests: use branch name when creating PRs from a changelog with branch filter
Mads Kiilerich <madski@unity3d.com>
parents:
3812
diff
changeset
|
72 rev: a revision that must be in the list somehow and selected by default |
dca89d578c70
pull requests: use branch name when creating PRs from a changelog with branch filter
Mads Kiilerich <madski@unity3d.com>
parents:
3812
diff
changeset
|
73 branch: a branch that must be in the list and selected by default - even if closed |
3811
3591b33e0c94
hg: use 'revset injection safe' repo.revs for revsets
Mads Kiilerich <madski@unity3d.com>
parents:
3785
diff
changeset
|
74 branch_rev: a revision of which peers should be preferred and available.""" |
3515
5b3313a5c6fc
pullrequest selection list: emphasize named branches that are neighbours
Mads Kiilerich <madski@unity3d.com>
parents:
3486
diff
changeset
|
75 # list named branches that has been merged to this named branch - it should probably merge back |
3598
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
76 peers = [] |
3719
3534e75b2d5b
pullrequests: don't pass unicode strings to Mercurial
Mads Kiilerich <madski@unity3d.com>
parents:
3718
diff
changeset
|
77 |
3534e75b2d5b
pullrequests: don't pass unicode strings to Mercurial
Mads Kiilerich <madski@unity3d.com>
parents:
3718
diff
changeset
|
78 if rev: |
3534e75b2d5b
pullrequests: don't pass unicode strings to Mercurial
Mads Kiilerich <madski@unity3d.com>
parents:
3718
diff
changeset
|
79 rev = safe_str(rev) |
3534e75b2d5b
pullrequests: don't pass unicode strings to Mercurial
Mads Kiilerich <madski@unity3d.com>
parents:
3718
diff
changeset
|
80 |
3813
dca89d578c70
pull requests: use branch name when creating PRs from a changelog with branch filter
Mads Kiilerich <madski@unity3d.com>
parents:
3812
diff
changeset
|
81 if branch: |
dca89d578c70
pull requests: use branch name when creating PRs from a changelog with branch filter
Mads Kiilerich <madski@unity3d.com>
parents:
3812
diff
changeset
|
82 branch = safe_str(branch) |
dca89d578c70
pull requests: use branch name when creating PRs from a changelog with branch filter
Mads Kiilerich <madski@unity3d.com>
parents:
3812
diff
changeset
|
83 |
3515
5b3313a5c6fc
pullrequest selection list: emphasize named branches that are neighbours
Mads Kiilerich <madski@unity3d.com>
parents:
3486
diff
changeset
|
84 if branch_rev: |
3719
3534e75b2d5b
pullrequests: don't pass unicode strings to Mercurial
Mads Kiilerich <madski@unity3d.com>
parents:
3718
diff
changeset
|
85 branch_rev = safe_str(branch_rev) |
3515
5b3313a5c6fc
pullrequest selection list: emphasize named branches that are neighbours
Mads Kiilerich <madski@unity3d.com>
parents:
3486
diff
changeset
|
86 # not restricting to merge() would also get branch point and be better |
5b3313a5c6fc
pullrequest selection list: emphasize named branches that are neighbours
Mads Kiilerich <madski@unity3d.com>
parents:
3486
diff
changeset
|
87 # (especially because it would get the branch point) ... but is currently too expensive |
5b3313a5c6fc
pullrequest selection list: emphasize named branches that are neighbours
Mads Kiilerich <madski@unity3d.com>
parents:
3486
diff
changeset
|
88 otherbranches = {} |
3811
3591b33e0c94
hg: use 'revset injection safe' repo.revs for revsets
Mads Kiilerich <madski@unity3d.com>
parents:
3785
diff
changeset
|
89 for i in repo._repo.revs( |
3591b33e0c94
hg: use 'revset injection safe' repo.revs for revsets
Mads Kiilerich <madski@unity3d.com>
parents:
3785
diff
changeset
|
90 "sort(parents(branch(id(%s)) and merge()) - branch(id(%s)))", |
3591b33e0c94
hg: use 'revset injection safe' repo.revs for revsets
Mads Kiilerich <madski@unity3d.com>
parents:
3785
diff
changeset
|
91 branch_rev, branch_rev): |
3515
5b3313a5c6fc
pullrequest selection list: emphasize named branches that are neighbours
Mads Kiilerich <madski@unity3d.com>
parents:
3486
diff
changeset
|
92 cs = repo.get_changeset(i) |
5b3313a5c6fc
pullrequest selection list: emphasize named branches that are neighbours
Mads Kiilerich <madski@unity3d.com>
parents:
3486
diff
changeset
|
93 otherbranches[cs.branch] = cs.raw_id |
3811
3591b33e0c94
hg: use 'revset injection safe' repo.revs for revsets
Mads Kiilerich <madski@unity3d.com>
parents:
3785
diff
changeset
|
94 for abranch, node in otherbranches.iteritems(): |
3591b33e0c94
hg: use 'revset injection safe' repo.revs for revsets
Mads Kiilerich <madski@unity3d.com>
parents:
3785
diff
changeset
|
95 selected = 'branch:%s:%s' % (abranch, node) |
3591b33e0c94
hg: use 'revset injection safe' repo.revs for revsets
Mads Kiilerich <madski@unity3d.com>
parents:
3785
diff
changeset
|
96 peers.append((selected, abranch)) |
3598
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
97 |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
98 selected = None |
3811
3591b33e0c94
hg: use 'revset injection safe' repo.revs for revsets
Mads Kiilerich <madski@unity3d.com>
parents:
3785
diff
changeset
|
99 |
3598
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
100 branches = [] |
3811
3591b33e0c94
hg: use 'revset injection safe' repo.revs for revsets
Mads Kiilerich <madski@unity3d.com>
parents:
3785
diff
changeset
|
101 for abranch, branchrev in repo.branches.iteritems(): |
3591b33e0c94
hg: use 'revset injection safe' repo.revs for revsets
Mads Kiilerich <madski@unity3d.com>
parents:
3785
diff
changeset
|
102 n = 'branch:%s:%s' % (abranch, branchrev) |
3591b33e0c94
hg: use 'revset injection safe' repo.revs for revsets
Mads Kiilerich <madski@unity3d.com>
parents:
3785
diff
changeset
|
103 branches.append((n, abranch)) |
3598
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
104 if rev == branchrev: |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
105 selected = n |
3813
dca89d578c70
pull requests: use branch name when creating PRs from a changelog with branch filter
Mads Kiilerich <madski@unity3d.com>
parents:
3812
diff
changeset
|
106 if branch == abranch: |
dca89d578c70
pull requests: use branch name when creating PRs from a changelog with branch filter
Mads Kiilerich <madski@unity3d.com>
parents:
3812
diff
changeset
|
107 selected = n |
dca89d578c70
pull requests: use branch name when creating PRs from a changelog with branch filter
Mads Kiilerich <madski@unity3d.com>
parents:
3812
diff
changeset
|
108 branch = None |
dca89d578c70
pull requests: use branch name when creating PRs from a changelog with branch filter
Mads Kiilerich <madski@unity3d.com>
parents:
3812
diff
changeset
|
109 if branch: # branch not in list - it is probably closed |
dca89d578c70
pull requests: use branch name when creating PRs from a changelog with branch filter
Mads Kiilerich <madski@unity3d.com>
parents:
3812
diff
changeset
|
110 revs = repo._repo.revs('max(branch(%s))', branch) |
dca89d578c70
pull requests: use branch name when creating PRs from a changelog with branch filter
Mads Kiilerich <madski@unity3d.com>
parents:
3812
diff
changeset
|
111 if revs: |
dca89d578c70
pull requests: use branch name when creating PRs from a changelog with branch filter
Mads Kiilerich <madski@unity3d.com>
parents:
3812
diff
changeset
|
112 cs = repo.get_changeset(revs[0]) |
dca89d578c70
pull requests: use branch name when creating PRs from a changelog with branch filter
Mads Kiilerich <madski@unity3d.com>
parents:
3812
diff
changeset
|
113 selected = 'branch:%s:%s' % (branch, cs.raw_id) |
dca89d578c70
pull requests: use branch name when creating PRs from a changelog with branch filter
Mads Kiilerich <madski@unity3d.com>
parents:
3812
diff
changeset
|
114 branches.append((selected, branch)) |
3811
3591b33e0c94
hg: use 'revset injection safe' repo.revs for revsets
Mads Kiilerich <madski@unity3d.com>
parents:
3785
diff
changeset
|
115 |
3598
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
116 bookmarks = [] |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
117 for bookmark, bookmarkrev in repo.bookmarks.iteritems(): |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
118 n = 'book:%s:%s' % (bookmark, bookmarkrev) |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
119 bookmarks.append((n, bookmark)) |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
120 if rev == bookmarkrev: |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
121 selected = n |
3811
3591b33e0c94
hg: use 'revset injection safe' repo.revs for revsets
Mads Kiilerich <madski@unity3d.com>
parents:
3785
diff
changeset
|
122 |
3598
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
123 tags = [] |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
124 for tag, tagrev in repo.tags.iteritems(): |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
125 n = 'tag:%s:%s' % (tag, tagrev) |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
126 tags.append((n, tag)) |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
127 if rev == tagrev and tag != 'tip': # tip is not a real tag - and its branch is better |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
128 selected = n |
2244
77e376fdc4c6
pull requests draft UI
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
129 |
3598
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
130 # prio 1: rev was selected as existing entry above |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
131 |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
132 # prio 2: create special entry for rev; rev _must_ be used |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
133 specials = [] |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
134 if rev and selected is None: |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
135 selected = 'rev:%s:%s' % (rev, rev) |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
136 specials = [(selected, '%s: %s' % (_("Changeset"), rev[:12]))] |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
137 |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
138 # prio 3: most recent peer branch |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
139 if peers and not selected: |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
140 selected = peers[0][0][0] |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
141 |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
142 # prio 4: tip revision |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
143 if not selected: |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
144 selected = 'tag:tip:%s' % repo.tags['tip'] |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
145 |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
146 groups = [(specials, _("Special")), |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
147 (peers, _("Peer branches")), |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
148 (bookmarks, _("Bookmarks")), |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
149 (branches, _("Branches")), |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
150 (tags, _("Tags")), |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
151 ] |
7d774f09dba5
pullrequests: only create special select entry for a changeset if it has no symbolic name
Mads Kiilerich <madski@unity3d.com>
parents:
3597
diff
changeset
|
152 return [g for g in groups if g[0]], selected |
2849
2b672f04bfd9
fixed few issues with autoselection of revisions on pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2803
diff
changeset
|
153 |
3104
c77d5c6358eb
Implemented #670 Implementation of Roles in Pull Request
Marcin Kuzminski <marcin@python-works.com>
parents:
3103
diff
changeset
|
154 def _get_is_allowed_change_status(self, pull_request): |
3149
68f9c216377d
white space cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
3141
diff
changeset
|
155 owner = self.rhodecode_user.user_id == pull_request.user_id |
3104
c77d5c6358eb
Implemented #670 Implementation of Roles in Pull Request
Marcin Kuzminski <marcin@python-works.com>
parents:
3103
diff
changeset
|
156 reviewer = self.rhodecode_user.user_id in [x.user_id for x in |
c77d5c6358eb
Implemented #670 Implementation of Roles in Pull Request
Marcin Kuzminski <marcin@python-works.com>
parents:
3103
diff
changeset
|
157 pull_request.reviewers] |
c77d5c6358eb
Implemented #670 Implementation of Roles in Pull Request
Marcin Kuzminski <marcin@python-works.com>
parents:
3103
diff
changeset
|
158 return (self.rhodecode_user.admin or owner or reviewer) |
c77d5c6358eb
Implemented #670 Implementation of Roles in Pull Request
Marcin Kuzminski <marcin@python-works.com>
parents:
3103
diff
changeset
|
159 |
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
|
160 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
|
161 """ |
3bf057a7f7e8
small refactoring, moved shared for diff generation of code into pull-request model
Marcin Kuzminski <marcin@python-works.com>
parents:
2440
diff
changeset
|
162 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
|
163 |
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
|
164 :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
|
165 """ |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
166 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
|
167 (org_ref_type, |
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
168 org_ref_name, |
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
169 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
|
170 |
3023
c2a206162062
Basic implementation of cherry picking changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
3015
diff
changeset
|
171 other_repo = org_repo |
2711
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
172 (other_ref_type, |
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
173 other_ref_name, |
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
174 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
|
175 |
2720
0f7355d3c196
Load generated revs while switching to other sources of pull-requests.
Marcin Kuzminski <marcin@python-works.com>
parents:
2712
diff
changeset
|
176 # despite opening revisions for bookmarks/branches/tags, we always |
3484
75e563531350
compare: drop unused rev_start and rev_end
Mads Kiilerich <madski@unity3d.com>
parents:
3447
diff
changeset
|
177 # convert this to rev to prevent changes after bookmark or branch change |
2711
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
178 org_ref = ('rev', org_ref_rev) |
1de45f582f9d
added more validations when opening pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2627
diff
changeset
|
179 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
|
180 |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
181 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
|
182 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
|
183 |
3023
c2a206162062
Basic implementation of cherry picking changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
3015
diff
changeset
|
184 c.fulldiff = fulldiff = request.GET.get('fulldiff') |
c2a206162062
Basic implementation of cherry picking changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
3015
diff
changeset
|
185 |
c2a206162062
Basic implementation of cherry picking changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
3015
diff
changeset
|
186 c.cs_ranges = [org_repo.get_changeset(x) for x in pull_request.revisions] |
c2a206162062
Basic implementation of cherry picking changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
3015
diff
changeset
|
187 |
2803
0b2214604c74
Fixed status of changesets in preview windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2796
diff
changeset
|
188 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
|
189 |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
190 c.org_ref = org_ref[1] |
3357
674a8fad3abc
show links to files on compare data at other and org refs
Marcin Kuzminski <marcin@python-works.com>
parents:
3330
diff
changeset
|
191 c.org_ref_type = org_ref[0] |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
192 c.other_ref = other_ref[1] |
3357
674a8fad3abc
show links to files on compare data at other and org refs
Marcin Kuzminski <marcin@python-works.com>
parents:
3330
diff
changeset
|
193 c.other_ref_type = other_ref[0] |
3023
c2a206162062
Basic implementation of cherry picking changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
3015
diff
changeset
|
194 |
c2a206162062
Basic implementation of cherry picking changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
3015
diff
changeset
|
195 diff_limit = self.cut_off_limit if not fulldiff else None |
c2a206162062
Basic implementation of cherry picking changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
3015
diff
changeset
|
196 |
3739
41b0e2b92283
pullrequests: fix reversed diff
Mads Kiilerich <madski@unity3d.com>
parents:
3720
diff
changeset
|
197 # we swap org/other ref since we run a simple diff on one repo |
3812
4324d6899e55
diff: cleanup of variables and logging in compare and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
3811
diff
changeset
|
198 log.debug('running diff between %s and %s in %s' |
4324d6899e55
diff: cleanup of variables and logging in compare and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
3811
diff
changeset
|
199 % (other_ref, org_ref, org_repo.scm_instance.path)) |
4324d6899e55
diff: cleanup of variables and logging in compare and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
3811
diff
changeset
|
200 txtdiff = org_repo.scm_instance.get_diff(rev1=safe_str(other_ref[1]), rev2=safe_str(org_ref[1])) |
3015
16af24982e30
Multiple changes for compare system
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
201 |
3812
4324d6899e55
diff: cleanup of variables and logging in compare and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
3811
diff
changeset
|
202 diff_processor = diffs.DiffProcessor(txtdiff or '', format='gitdiff', |
3023
c2a206162062
Basic implementation of cherry picking changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
3015
diff
changeset
|
203 diff_limit=diff_limit) |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
204 _parsed = diff_processor.prepare() |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
205 |
3023
c2a206162062
Basic implementation of cherry picking changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
3015
diff
changeset
|
206 c.limited_diff = False |
c2a206162062
Basic implementation of cherry picking changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
3015
diff
changeset
|
207 if isinstance(_parsed, LimitedDiffContainer): |
c2a206162062
Basic implementation of cherry picking changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
3015
diff
changeset
|
208 c.limited_diff = True |
c2a206162062
Basic implementation of cherry picking changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
3015
diff
changeset
|
209 |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
210 c.files = [] |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
211 c.changes = {} |
3825
3306bdd95f11
bring back accidentally deleted context variables with lines added
Marcin Kuzminski <marcin@python-works.com>
parents:
3821
diff
changeset
|
212 c.lines_added = 0 |
3306bdd95f11
bring back accidentally deleted context variables with lines added
Marcin Kuzminski <marcin@python-works.com>
parents:
3821
diff
changeset
|
213 c.lines_deleted = 0 |
3306bdd95f11
bring back accidentally deleted context variables with lines added
Marcin Kuzminski <marcin@python-works.com>
parents:
3821
diff
changeset
|
214 |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
215 for f in _parsed: |
3023
c2a206162062
Basic implementation of cherry picking changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
3015
diff
changeset
|
216 st = f['stats'] |
3821
ce4b7023a492
diff parser: redefined operations stats for changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3813
diff
changeset
|
217 c.lines_added += st['added'] |
ce4b7023a492
diff parser: redefined operations stats for changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3813
diff
changeset
|
218 c.lines_deleted += st['deleted'] |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
219 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
|
220 c.files.append([fid, f['operation'], f['filename'], f['stats']]) |
3812
4324d6899e55
diff: cleanup of variables and logging in compare and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
3811
diff
changeset
|
221 htmldiff = diff_processor.as_html(enable_comments=enable_comments, |
4324d6899e55
diff: cleanup of variables and logging in compare and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
3811
diff
changeset
|
222 parsed_lines=[f]) |
4324d6899e55
diff: cleanup of variables and logging in compare and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
3811
diff
changeset
|
223 c.changes[fid] = [f['operation'], f['filename'], htmldiff] |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
224 |
3749
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
225 @LoginRequired() |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
226 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
227 'repository.admin') |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
228 def show_all(self, repo_name): |
4024
73ef2a5d3042
pull requests: make it possible control display of closed PRs and whether it is PRs to or from repo
Mads Kiilerich <madski@unity3d.com>
parents:
3978
diff
changeset
|
229 c.from_ = request.GET.get('from_') or '' |
73ef2a5d3042
pull requests: make it possible control display of closed PRs and whether it is PRs to or from repo
Mads Kiilerich <madski@unity3d.com>
parents:
3978
diff
changeset
|
230 c.closed = request.GET.get('closed') or '' |
73ef2a5d3042
pull requests: make it possible control display of closed PRs and whether it is PRs to or from repo
Mads Kiilerich <madski@unity3d.com>
parents:
3978
diff
changeset
|
231 c.pull_requests = PullRequestModel().get_all(repo_name, from_=c.from_, closed=c.closed) |
3749
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
232 c.repo_name = repo_name |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
233 p = safe_int(request.GET.get('page', 1), 1) |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
234 |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
235 c.pullrequests_pager = Page(c.pull_requests, page=p, items_per_page=10) |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
236 |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
237 c.pullrequest_data = render('/pullrequests/pullrequest_data.html') |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
238 |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
239 if request.environ.get('HTTP_X_PARTIAL_XHR'): |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
240 return c.pullrequest_data |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
241 |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
242 return render('/pullrequests/pullrequest_show_all.html') |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
243 |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
244 @LoginRequired() |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
245 @NotAnonymous() |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
246 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
247 'repository.admin') |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
248 def index(self): |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
249 org_repo = c.rhodecode_db_repo |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
250 |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
251 if org_repo.scm_instance.alias != 'hg': |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
252 log.error('Review not available for GIT REPOS') |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
253 raise HTTPNotFound |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
254 |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
255 try: |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
256 org_repo.scm_instance.get_changeset() |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
257 except EmptyRepositoryError, e: |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
258 h.flash(h.literal(_('There are no changesets yet')), |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
259 category='warning') |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
260 redirect(url('summary_home', repo_name=org_repo.repo_name)) |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
261 |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
262 org_rev = request.GET.get('rev_end') |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
263 # rev_start is not directly useful - its parent could however be used |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
264 # as default for other and thus give a simple compare view |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
265 #other_rev = request.POST.get('rev_start') |
3813
dca89d578c70
pull requests: use branch name when creating PRs from a changelog with branch filter
Mads Kiilerich <madski@unity3d.com>
parents:
3812
diff
changeset
|
266 branch = request.GET.get('branch') |
3749
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
267 |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
268 c.org_repos = [] |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
269 c.org_repos.append((org_repo.repo_name, org_repo.repo_name)) |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
270 c.default_org_repo = org_repo.repo_name |
3813
dca89d578c70
pull requests: use branch name when creating PRs from a changelog with branch filter
Mads Kiilerich <madski@unity3d.com>
parents:
3812
diff
changeset
|
271 c.org_refs, c.default_org_ref = self._get_repo_refs(org_repo.scm_instance, rev=org_rev, branch=branch) |
3749
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
272 |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
273 c.other_repos = [] |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
274 other_repos_info = {} |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
275 |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
276 def add_other_repo(repo, branch_rev=None): |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
277 if repo.repo_name in other_repos_info: # shouldn't happen |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
278 return |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
279 c.other_repos.append((repo.repo_name, repo.repo_name)) |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
280 other_refs, selected_other_ref = self._get_repo_refs(repo.scm_instance, branch_rev=branch_rev) |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
281 other_repos_info[repo.repo_name] = { |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
282 'user': dict(user_id=repo.user.user_id, |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
283 username=repo.user.username, |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
284 firstname=repo.user.firstname, |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
285 lastname=repo.user.lastname, |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
286 gravatar_link=h.gravatar_url(repo.user.email, 14)), |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
287 'description': repo.description.split('\n', 1)[0], |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
288 'revs': h.select('other_ref', selected_other_ref, other_refs, class_='refs') |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
289 } |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
290 |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
291 # add org repo to other so we can open pull request against peer branches on itself |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
292 add_other_repo(org_repo, branch_rev=org_rev) |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
293 c.default_other_repo = org_repo.repo_name |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
294 |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
295 # gather forks and add to this list ... even though it is rare to |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
296 # request forks to pull from their parent |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
297 for fork in org_repo.forks: |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
298 add_other_repo(fork) |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
299 |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
300 # add parents of this fork also, but only if it's not empty |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
301 if org_repo.parent and org_repo.parent.scm_instance.revisions: |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
302 add_other_repo(org_repo.parent) |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
303 c.default_other_repo = org_repo.parent.repo_name |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
304 |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
305 c.default_other_repo_info = other_repos_info[c.default_other_repo] |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
306 c.other_repos_info = json.dumps(other_repos_info) |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
307 |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
308 return render('/pullrequests/pullrequest.html') |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
309 |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
310 @LoginRequired() |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
311 @NotAnonymous() |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
312 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
313 'repository.admin') |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
314 def create(self, repo_name): |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
315 repo = RepoModel()._get_repo(repo_name) |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
316 try: |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
317 _form = PullRequestForm(repo.repo_id)().to_python(request.POST) |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
318 except formencode.Invalid, errors: |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
319 log.error(traceback.format_exc()) |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
320 if errors.error_dict.get('revisions'): |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
321 msg = 'Revisions: %s' % errors.error_dict['revisions'] |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
322 elif errors.error_dict.get('pullrequest_title'): |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
323 msg = _('Pull request requires a title with min. 3 chars') |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
324 else: |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
325 msg = _('Error creating pull request') |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
326 |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
327 h.flash(msg, 'error') |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
328 return redirect(url('pullrequest_home', repo_name=repo_name)) |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
329 |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
330 org_repo = _form['org_repo'] |
3978
4f31439c90d3
pull requests: use org_ref with correct symbolic name instead of fake one
Mads Kiilerich <madski@unity3d.com>
parents:
3960
diff
changeset
|
331 org_ref = _form['org_ref'] # will end with merge_rev but have symbolic name |
3749
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
332 other_repo = _form['other_repo'] |
3978
4f31439c90d3
pull requests: use org_ref with correct symbolic name instead of fake one
Mads Kiilerich <madski@unity3d.com>
parents:
3960
diff
changeset
|
333 other_ref = 'rev:ancestor:%s' % _form['ancestor_rev'] # could be calculated from other_ref ... |
3785
7d8154837174
create a list out of generator.
Marcin Kuzminski <marcin@python-works.com>
parents:
3749
diff
changeset
|
334 revisions = [x for x in reversed(_form['revisions'])] |
3749
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
335 reviewers = _form['review_members'] |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
336 |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
337 title = _form['pullrequest_title'] |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
338 description = _form['pullrequest_desc'] |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
339 try: |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
340 pull_request = PullRequestModel().create( |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
341 self.rhodecode_user.user_id, org_repo, org_ref, other_repo, |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
342 other_ref, revisions, reviewers, title, description |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
343 ) |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
344 Session().commit() |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
345 h.flash(_('Successfully opened new pull request'), |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
346 category='success') |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
347 except Exception: |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
348 h.flash(_('Error occurred during sending pull request'), |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
349 category='error') |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
350 log.error(traceback.format_exc()) |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
351 return redirect(url('pullrequest_home', repo_name=repo_name)) |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
352 |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
353 return redirect(url('pullrequest_show', repo_name=other_repo, |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
354 pull_request_id=pull_request.pull_request_id)) |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
355 |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
356 @LoginRequired() |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
357 @NotAnonymous() |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
358 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
359 'repository.admin') |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
360 @jsonify |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
361 def update(self, repo_name, pull_request_id): |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
362 pull_request = PullRequest.get_or_404(pull_request_id) |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
363 if pull_request.is_closed(): |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
364 raise HTTPForbidden() |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
365 #only owner or admin can update it |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
366 owner = pull_request.author.user_id == c.rhodecode_user.user_id |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
367 if h.HasPermissionAny('hg.admin', 'repository.admin')() or owner: |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
368 reviewers_ids = map(int, filter(lambda v: v not in [None, ''], |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
369 request.POST.get('reviewers_ids', '').split(','))) |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
370 |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
371 PullRequestModel().update_reviewers(pull_request_id, reviewers_ids) |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
372 Session().commit() |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
373 return True |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
374 raise HTTPForbidden() |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
375 |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
376 @LoginRequired() |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
377 @NotAnonymous() |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
378 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
379 'repository.admin') |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
380 @jsonify |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
381 def delete(self, repo_name, pull_request_id): |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
382 pull_request = PullRequest.get_or_404(pull_request_id) |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
383 #only owner can delete it ! |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
384 if pull_request.author.user_id == c.rhodecode_user.user_id: |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
385 PullRequestModel().delete(pull_request) |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
386 Session().commit() |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
387 h.flash(_('Successfully deleted pull request'), |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
388 category='success') |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
389 return redirect(url('admin_settings_my_account', anchor='pullrequests')) |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
390 raise HTTPForbidden() |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
391 |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
392 @LoginRequired() |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
393 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
394 'repository.admin') |
2434
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2395
diff
changeset
|
395 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
|
396 repo_model = RepoModel() |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
397 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
|
398 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
|
399 c.pull_request = PullRequest.get_or_404(pull_request_id) |
3104
c77d5c6358eb
Implemented #670 Implementation of Roles in Pull Request
Marcin Kuzminski <marcin@python-works.com>
parents:
3103
diff
changeset
|
400 c.allowed_to_change_status = self._get_is_allowed_change_status(c.pull_request) |
2481
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
401 cc_model = ChangesetCommentsModel() |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
402 cs_model = ChangesetStatusModel() |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
403 _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
|
404 pull_request=c.pull_request, |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
405 with_revisions=True) |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
406 |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
407 cs_statuses = defaultdict(list) |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
408 for st in _cs_statuses: |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
409 cs_statuses[st.author.username] += [st] |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
410 |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
411 c.pull_request_reviewers = [] |
2712
7224882c4059
new summary for opened pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2711
diff
changeset
|
412 c.pull_request_pending_reviewers = [] |
2481
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
413 for o in c.pull_request.reviewers: |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
414 st = cs_statuses.get(o.user.username, None) |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
415 if st: |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
416 sorter = lambda k: k.version |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
417 st = [(x, list(y)[0]) |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
418 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
|
419 else: |
7224882c4059
new summary for opened pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2711
diff
changeset
|
420 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
|
421 c.pull_request_reviewers.append([o.user, st]) |
2444 | 422 |
423 # pull_requests repo_name we opened it against | |
424 # ie. other_repo must match | |
425 if repo_name != c.pull_request.other_repo.repo_name: | |
426 raise HTTPNotFound | |
427 | |
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
|
428 # 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
|
429 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
|
430 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
|
431 |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
432 # inline comments |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
433 c.inline_cnt = 0 |
2481
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
434 c.inline_comments = cc_model.get_inline_comments( |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
435 c.rhodecode_db_repo.repo_id, |
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
436 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
|
437 # count inline comments |
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
438 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
|
439 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
|
440 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
|
441 # comments |
2481
4d3032431d4f
Adde pull request voting recalculation
Marcin Kuzminski <marcin@python-works.com>
parents:
2478
diff
changeset
|
442 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
|
443 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
|
444 |
4053
3625fd19b201
pull requests: add a 'Calculated' comment on current_changeset_status
Mads Kiilerich <madski@unity3d.com>
parents:
4052
diff
changeset
|
445 # (badly named) pull-request status calculation based on reviewer votes |
4052
a7b7526c7f7c
pullrequests: drop unused status calculation introduced in 0b2214604c74
Mads Kiilerich <madski@unity3d.com>
parents:
4024
diff
changeset
|
446 c.current_changeset_status = cs_model.calculate_status( |
a7b7526c7f7c
pullrequests: drop unused status calculation introduced in 0b2214604c74
Mads Kiilerich <madski@unity3d.com>
parents:
4024
diff
changeset
|
447 c.pull_request_reviewers, |
2803
0b2214604c74
Fixed status of changesets in preview windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2796
diff
changeset
|
448 ) |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2434
diff
changeset
|
449 c.changeset_statuses = ChangesetStatus.STATUSES |
2803
0b2214604c74
Fixed status of changesets in preview windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2796
diff
changeset
|
450 |
3442
b3680a200f75
compare: cleanup of as_form handling
Mads Kiilerich <madski@unity3d.com>
parents:
3430
diff
changeset
|
451 c.as_form = False |
3486
2053053e0882
compare/pullrequest: introduce merge parameter
Mads Kiilerich <madski@unity3d.com>
parents:
3485
diff
changeset
|
452 c.ancestor = None # there is one - but right here we don't know which |
2434
f29469677319
Added basic models for saving open pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2395
diff
changeset
|
453 return render('/pullrequests/pullrequest_show.html') |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
454 |
3749
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
455 @LoginRequired() |
2627
6bd62617b99f
Opening pull request shouldn't be accessible by anonymous users
Marcin Kuzminski <marcin@python-works.com>
parents:
2614
diff
changeset
|
456 @NotAnonymous() |
3749
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
457 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
458 'repository.admin') |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
459 @jsonify |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
460 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
|
461 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
|
462 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
|
463 raise HTTPForbidden() |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
464 |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
465 status = request.POST.get('changeset_status') |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
466 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
|
467 text = request.POST.get('text') |
3430
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3394
diff
changeset
|
468 close_pr = request.POST.get('save_close') |
3104
c77d5c6358eb
Implemented #670 Implementation of Roles in Pull Request
Marcin Kuzminski <marcin@python-works.com>
parents:
3103
diff
changeset
|
469 |
c77d5c6358eb
Implemented #670 Implementation of Roles in Pull Request
Marcin Kuzminski <marcin@python-works.com>
parents:
3103
diff
changeset
|
470 allowed_to_change_status = self._get_is_allowed_change_status(pull_request) |
c77d5c6358eb
Implemented #670 Implementation of Roles in Pull Request
Marcin Kuzminski <marcin@python-works.com>
parents:
3103
diff
changeset
|
471 if status and change_status and allowed_to_change_status: |
3654
ec6354949623
Fix a lot of casings - use standard casing in most places
Mads Kiilerich <madski@unity3d.com>
parents:
3631
diff
changeset
|
472 _def = (_('Status change -> %s') |
2796
bf3c976d02ec
always post text about status changes of code-review
Marcin Kuzminski <marcin@python-works.com>
parents:
2769
diff
changeset
|
473 % ChangesetStatus.get_status_lbl(status)) |
3430
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3394
diff
changeset
|
474 if close_pr: |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3394
diff
changeset
|
475 _def = _('Closing with') + ' ' + _def |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3394
diff
changeset
|
476 text = text or _def |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
477 comm = ChangesetCommentsModel().create( |
2796
bf3c976d02ec
always post text about status changes of code-review
Marcin Kuzminski <marcin@python-works.com>
parents:
2769
diff
changeset
|
478 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
|
479 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
|
480 user=c.rhodecode_user.user_id, |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
481 pull_request=pull_request_id, |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
482 f_path=request.POST.get('f_path'), |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
483 line_no=request.POST.get('line'), |
2478
8eab81115660
white space cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
2444
diff
changeset
|
484 status_change=(ChangesetStatus.get_status_lbl(status) |
3430
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3394
diff
changeset
|
485 if status and change_status |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3394
diff
changeset
|
486 and allowed_to_change_status else None), |
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3394
diff
changeset
|
487 closing_pr=close_pr |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
488 ) |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
489 |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
490 action_logger(self.rhodecode_user, |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
491 'user_commented_pull_request:%s' % pull_request_id, |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
492 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
|
493 |
3104
c77d5c6358eb
Implemented #670 Implementation of Roles in Pull Request
Marcin Kuzminski <marcin@python-works.com>
parents:
3103
diff
changeset
|
494 if allowed_to_change_status: |
c77d5c6358eb
Implemented #670 Implementation of Roles in Pull Request
Marcin Kuzminski <marcin@python-works.com>
parents:
3103
diff
changeset
|
495 # get status if set ! |
c77d5c6358eb
Implemented #670 Implementation of Roles in Pull Request
Marcin Kuzminski <marcin@python-works.com>
parents:
3103
diff
changeset
|
496 if status and change_status: |
c77d5c6358eb
Implemented #670 Implementation of Roles in Pull Request
Marcin Kuzminski <marcin@python-works.com>
parents:
3103
diff
changeset
|
497 ChangesetStatusModel().set_status( |
c77d5c6358eb
Implemented #670 Implementation of Roles in Pull Request
Marcin Kuzminski <marcin@python-works.com>
parents:
3103
diff
changeset
|
498 c.rhodecode_db_repo.repo_id, |
c77d5c6358eb
Implemented #670 Implementation of Roles in Pull Request
Marcin Kuzminski <marcin@python-works.com>
parents:
3103
diff
changeset
|
499 status, |
c77d5c6358eb
Implemented #670 Implementation of Roles in Pull Request
Marcin Kuzminski <marcin@python-works.com>
parents:
3103
diff
changeset
|
500 c.rhodecode_user.user_id, |
c77d5c6358eb
Implemented #670 Implementation of Roles in Pull Request
Marcin Kuzminski <marcin@python-works.com>
parents:
3103
diff
changeset
|
501 comm, |
c77d5c6358eb
Implemented #670 Implementation of Roles in Pull Request
Marcin Kuzminski <marcin@python-works.com>
parents:
3103
diff
changeset
|
502 pull_request=pull_request_id |
c77d5c6358eb
Implemented #670 Implementation of Roles in Pull Request
Marcin Kuzminski <marcin@python-works.com>
parents:
3103
diff
changeset
|
503 ) |
c77d5c6358eb
Implemented #670 Implementation of Roles in Pull Request
Marcin Kuzminski <marcin@python-works.com>
parents:
3103
diff
changeset
|
504 |
3430
bbe21df7ad48
notifications changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3394
diff
changeset
|
505 if close_pr: |
3104
c77d5c6358eb
Implemented #670 Implementation of Roles in Pull Request
Marcin Kuzminski <marcin@python-works.com>
parents:
3103
diff
changeset
|
506 if status in ['rejected', 'approved']: |
c77d5c6358eb
Implemented #670 Implementation of Roles in Pull Request
Marcin Kuzminski <marcin@python-works.com>
parents:
3103
diff
changeset
|
507 PullRequestModel().close_pull_request(pull_request_id) |
c77d5c6358eb
Implemented #670 Implementation of Roles in Pull Request
Marcin Kuzminski <marcin@python-works.com>
parents:
3103
diff
changeset
|
508 action_logger(self.rhodecode_user, |
c77d5c6358eb
Implemented #670 Implementation of Roles in Pull Request
Marcin Kuzminski <marcin@python-works.com>
parents:
3103
diff
changeset
|
509 'user_closed_pull_request:%s' % pull_request_id, |
c77d5c6358eb
Implemented #670 Implementation of Roles in Pull Request
Marcin Kuzminski <marcin@python-works.com>
parents:
3103
diff
changeset
|
510 c.rhodecode_db_repo, self.ip_addr, self.sa) |
c77d5c6358eb
Implemented #670 Implementation of Roles in Pull Request
Marcin Kuzminski <marcin@python-works.com>
parents:
3103
diff
changeset
|
511 else: |
c77d5c6358eb
Implemented #670 Implementation of Roles in Pull Request
Marcin Kuzminski <marcin@python-works.com>
parents:
3103
diff
changeset
|
512 h.flash(_('Closing pull request on other statuses than ' |
c77d5c6358eb
Implemented #670 Implementation of Roles in Pull Request
Marcin Kuzminski <marcin@python-works.com>
parents:
3103
diff
changeset
|
513 'rejected or approved forbidden'), |
c77d5c6358eb
Implemented #670 Implementation of Roles in Pull Request
Marcin Kuzminski <marcin@python-works.com>
parents:
3103
diff
changeset
|
514 category='warning') |
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
|
515 |
2541
1c2ba03c42b4
Added dynamic data loading for other repo we open pull request against
Marcin Kuzminski <marcin@python-works.com>
parents:
2533
diff
changeset
|
516 Session().commit() |
2443
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
517 |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
518 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
|
519 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
|
520 pull_request_id=pull_request_id)) |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
521 |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
522 data = { |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
523 '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
|
524 } |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
525 if comm: |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
526 c.co = comm |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
527 data.update(comm.get_dict()) |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
528 data.update({'rendered_text': |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
529 render('changeset/changeset_comment_block.html')}) |
fd0a822481ec
- added commenting to pull requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2442
diff
changeset
|
530 |
2444 | 531 return data |
2489
a0adf8db1416
Enabled inline comments in pull-requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2487
diff
changeset
|
532 |
3749
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
533 @LoginRequired() |
2627
6bd62617b99f
Opening pull request shouldn't be accessible by anonymous users
Marcin Kuzminski <marcin@python-works.com>
parents:
2614
diff
changeset
|
534 @NotAnonymous() |
3749
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
535 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3748
diff
changeset
|
536 'repository.admin') |
2489
a0adf8db1416
Enabled inline comments in pull-requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2487
diff
changeset
|
537 @jsonify |
a0adf8db1416
Enabled inline comments in pull-requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2487
diff
changeset
|
538 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
|
539 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
|
540 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
|
541 #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
|
542 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
|
543 |
3141
a45191e7c7bb
access control: fix owner checks - they were always true
Mads Kiilerich <madski@unity3d.com>
parents:
3123
diff
changeset
|
544 owner = co.author.user_id == c.rhodecode_user.user_id |
2489
a0adf8db1416
Enabled inline comments in pull-requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2487
diff
changeset
|
545 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
|
546 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
|
547 Session().commit() |
2489
a0adf8db1416
Enabled inline comments in pull-requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2487
diff
changeset
|
548 return True |
a0adf8db1416
Enabled inline comments in pull-requests
Marcin Kuzminski <marcin@python-works.com>
parents:
2487
diff
changeset
|
549 else: |
2614
3f50a5e8fc4d
Added editing of pull-request reviewers.
Marcin Kuzminski <marcin@python-works.com>
parents:
2612
diff
changeset
|
550 raise HTTPForbidden() |