Mercurial > kallithea
annotate kallithea/controllers/changeset.py @ 7092:aa25ef34ebab
auth: refactor to introduce @LoginRequired(allow_default_user=True) and deprecate @NotAnonymous()
It was error prone that @LoginRequired defaulted to allow anonymous users (if
'default' user is enabled). See also 245b4e3abf39.
Refactor code to make it more explicit and safe by default: Deprecate
@NotAnonymous by making it the default of @LoginRequired. That will make it
safe by default.
To preserve same functionality, set allow_default_user=True in all the cases
where @LoginRequired was *not* followed by @NotAnonymous or other permission
checks - that was done with some script hacks:
sed -i 's/@LoginRequired(\(..*\))/@LoginRequired(\1, allow_default_user=True)/g' `hg mani`
sed -i 's/@LoginRequired()/@LoginRequired(allow_default_user=True)/g' `hg mani`
perl -0pi -e 's/\@LoginRequired\(allow_default_user=True\)\n\s*\@NotAnonymous\(\)/\@LoginRequired()/g' `hg mani`
perl -0pi -e 's/\@LoginRequired\(allow_default_user=True\)(\n\s*\@Has(Repo)?Permission)/\@LoginRequired()\1/g' `hg mani`
It has been reviewed that all uses of allow_default_user=True are in places
where the there indeed wasn't any checking for default user before. These may
or may not be correct, but now they are explicit and can be spotted and fixed.
The few remaining uses of @NotAnonymous should probably be removed somehow.
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Sun, 21 Jan 2018 02:49:15 +0100 |
parents | 205daed7185b |
children | 9f976d75b04c |
rev | line source |
---|---|
812
30ad41c76fae
fixes #79 cut off limit was added into .ini config files
Marcin Kuzminski <marcin@python-works.com>
parents:
691
diff
changeset
|
1 # -*- coding: utf-8 -*- |
1206
a671db5bdd58
fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents:
1203
diff
changeset
|
2 # This program is free software: you can redistribute it and/or modify |
a671db5bdd58
fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents:
1203
diff
changeset
|
3 # it under the terms of the GNU General Public License as published by |
a671db5bdd58
fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents:
1203
diff
changeset
|
4 # the Free Software Foundation, either version 3 of the License, or |
a671db5bdd58
fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents:
1203
diff
changeset
|
5 # (at your option) any later version. |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1131
diff
changeset
|
6 # |
252
3782a6d698af
licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
245
diff
changeset
|
7 # This program is distributed in the hope that it will be useful, |
3782a6d698af
licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
245
diff
changeset
|
8 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
3782a6d698af
licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
245
diff
changeset
|
9 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
3782a6d698af
licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
245
diff
changeset
|
10 # GNU General Public License for more details. |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1131
diff
changeset
|
11 # |
252
3782a6d698af
licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents:
245
diff
changeset
|
12 # You should have received a copy of the GNU General Public License |
1206
a671db5bdd58
fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents:
1203
diff
changeset
|
13 # along with this program. If not, see <http://www.gnu.org/licenses/>. |
4116
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
14 """ |
4186
7e5f8c12a3fc
First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4116
diff
changeset
|
15 kallithea.controllers.changeset |
4116
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
16 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
17 |
6215
5eec79420ce3
Turbogears2 migration: remove some references to Pylons in comments
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents:
6195
diff
changeset
|
18 changeset controller showing changes between revisions |
4116
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
19 |
4211
1948ede028ef
RhodeCode GmbH is not the sole author of this work
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4208
diff
changeset
|
20 This file was forked by the Kallithea project in July 2014. |
1948ede028ef
RhodeCode GmbH is not the sole author of this work
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4208
diff
changeset
|
21 Original author and date, and relevant copyright and licensing information is below: |
4116
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
22 :created_on: Apr 25, 2010 |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
23 :author: marcink |
4211
1948ede028ef
RhodeCode GmbH is not the sole author of this work
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4208
diff
changeset
|
24 :copyright: (c) 2013 RhodeCode GmbH, and others. |
4208
ad38f9f93b3b
Correct licensing information in individual files.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4197
diff
changeset
|
25 :license: GPLv3, see LICENSE.md for more details. |
4116
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
26 """ |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
27 |
812
30ad41c76fae
fixes #79 cut off limit was added into .ini config files
Marcin Kuzminski <marcin@python-works.com>
parents:
691
diff
changeset
|
28 import logging |
30ad41c76fae
fixes #79 cut off limit was added into .ini config files
Marcin Kuzminski <marcin@python-works.com>
parents:
691
diff
changeset
|
29 import traceback |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
30 from collections import defaultdict |
812
30ad41c76fae
fixes #79 cut off limit was added into .ini config files
Marcin Kuzminski <marcin@python-works.com>
parents:
691
diff
changeset
|
31 |
6553
e9ac5698281d
tg: minimize future diff by some mocking and replacing some pylons imports with tg
Mads Kiilerich <mads@kiilerich.com>
parents:
6532
diff
changeset
|
32 from tg import tmpl_context as c, request, response |
e9ac5698281d
tg: minimize future diff by some mocking and replacing some pylons imports with tg
Mads Kiilerich <mads@kiilerich.com>
parents:
6532
diff
changeset
|
33 from tg.i18n import ugettext as _ |
5543
d9b78d8f1db3
cleanup: replace redirect with WebOb exceptions
Søren Løvborg <sorenl@unity3d.com>
parents:
5374
diff
changeset
|
34 from webob.exc import HTTPFound, HTTPForbidden, HTTPBadRequest, HTTPNotFound |
d9b78d8f1db3
cleanup: replace redirect with WebOb exceptions
Søren Løvborg <sorenl@unity3d.com>
parents:
5374
diff
changeset
|
35 |
4186
7e5f8c12a3fc
First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4116
diff
changeset
|
36 from kallithea.lib.vcs.exceptions import RepositoryError, \ |
6041
0bac887ea148
changeset: don't crash with unhandled EmptyRepositoryError when visiting (non-existing) changeset in an empty repo
Mads Kiilerich <madski@unity3d.com>
parents:
5815
diff
changeset
|
37 ChangesetDoesNotExistError, EmptyRepositoryError |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
38 |
4186
7e5f8c12a3fc
First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4116
diff
changeset
|
39 import kallithea.lib.helpers as h |
7092
aa25ef34ebab
auth: refactor to introduce @LoginRequired(allow_default_user=True) and deprecate @NotAnonymous()
Mads Kiilerich <mads@kiilerich.com>
parents:
6968
diff
changeset
|
40 from kallithea.lib.auth import LoginRequired, HasRepoPermissionLevelDecorator |
6449
0122959e1f1d
lib: move jsonify from utils to base
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents:
6434
diff
changeset
|
41 from kallithea.lib.base import BaseRepoController, render, jsonify |
4186
7e5f8c12a3fc
First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4116
diff
changeset
|
42 from kallithea.lib.utils import action_logger |
7e5f8c12a3fc
First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4116
diff
changeset
|
43 from kallithea.lib.compat import OrderedDict |
7e5f8c12a3fc
First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4116
diff
changeset
|
44 from kallithea.lib import diffs |
7e5f8c12a3fc
First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4116
diff
changeset
|
45 from kallithea.model.db import ChangesetComment, ChangesetStatus |
7e5f8c12a3fc
First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4116
diff
changeset
|
46 from kallithea.model.comment import ChangesetCommentsModel |
7e5f8c12a3fc
First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4116
diff
changeset
|
47 from kallithea.model.changeset_status import ChangesetStatusModel |
7e5f8c12a3fc
First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4116
diff
changeset
|
48 from kallithea.model.meta import Session |
7e5f8c12a3fc
First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4116
diff
changeset
|
49 from kallithea.model.repo import RepoModel |
7e5f8c12a3fc
First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4116
diff
changeset
|
50 from kallithea.lib.exceptions import StatusChangeOnClosedPullRequestError |
7e5f8c12a3fc
First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4116
diff
changeset
|
51 from kallithea.lib.vcs.backends.base import EmptyChangeset |
4422
d51a6f5e57d1
cleanup: remove unused Python imports, found with pyflakes
Mads Kiilerich <madski@unity3d.com>
parents:
4401
diff
changeset
|
52 from kallithea.lib.utils2 import safe_unicode |
4352
c733124b6262
pull requests: show graph when displaying PR
Mads Kiilerich <madski@unity3d.com>
parents:
4330
diff
changeset
|
53 from kallithea.lib.graphmod import graph_data |
193
50a39f923f31
Added file annotation template. Bumped version to 0.6.8. Changelog and changeset are now cleaned with js, it's still very beta.
Marcin Kuzminski <marcin@python-works.com>
parents:
103
diff
changeset
|
54 |
103
665b344927f4
Added changeset controllers
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
55 log = logging.getLogger(__name__) |
665b344927f4
Added changeset controllers
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
56 |
1212 | 57 |
2161
e8c016815ab9
added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents:
2123
diff
changeset
|
58 def _update_with_GET(params, GET): |
e8c016815ab9
added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents:
2123
diff
changeset
|
59 for k in ['diff1', 'diff2', 'diff']: |
e8c016815ab9
added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents:
2123
diff
changeset
|
60 params[k] += GET.getall(k) |
e8c016815ab9
added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents:
2123
diff
changeset
|
61 |
e8c016815ab9
added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents:
2123
diff
changeset
|
62 |
e8c016815ab9
added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents:
2123
diff
changeset
|
63 def anchor_url(revision, path, GET): |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
64 fid = h.FID(revision, path) |
2161
e8c016815ab9
added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents:
2123
diff
changeset
|
65 return h.url.current(anchor=fid, **dict(GET)) |
1787
d4a7b6c82efe
code garden for changeset ranges and comments
Marcin Kuzminski <marcin@python-works.com>
parents:
1776
diff
changeset
|
66 |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
67 |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
68 def get_ignore_ws(fid, GET): |
2161
e8c016815ab9
added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents:
2123
diff
changeset
|
69 ig_ws_global = GET.get('ignorews') |
1787
d4a7b6c82efe
code garden for changeset ranges and comments
Marcin Kuzminski <marcin@python-works.com>
parents:
1776
diff
changeset
|
70 ig_ws = filter(lambda k: k.startswith('WS'), GET.getall(fid)) |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
71 if ig_ws: |
4889
5a1cd703a888
changeset: don't crash on malformed whitespace parameter - return 400 Bad Request
Andrew Shadura <andrew@shadura.me>
parents:
4746
diff
changeset
|
72 try: |
5a1cd703a888
changeset: don't crash on malformed whitespace parameter - return 400 Bad Request
Andrew Shadura <andrew@shadura.me>
parents:
4746
diff
changeset
|
73 return int(ig_ws[0].split(':')[-1]) |
5a1cd703a888
changeset: don't crash on malformed whitespace parameter - return 400 Bad Request
Andrew Shadura <andrew@shadura.me>
parents:
4746
diff
changeset
|
74 except ValueError: |
5a1cd703a888
changeset: don't crash on malformed whitespace parameter - return 400 Bad Request
Andrew Shadura <andrew@shadura.me>
parents:
4746
diff
changeset
|
75 raise HTTPBadRequest() |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
76 return ig_ws_global |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
77 |
1787
d4a7b6c82efe
code garden for changeset ranges and comments
Marcin Kuzminski <marcin@python-works.com>
parents:
1776
diff
changeset
|
78 |
2161
e8c016815ab9
added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents:
2123
diff
changeset
|
79 def _ignorews_url(GET, fileid=None): |
e8c016815ab9
added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents:
2123
diff
changeset
|
80 fileid = str(fileid) if fileid else None |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
81 params = defaultdict(list) |
2161
e8c016815ab9
added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents:
2123
diff
changeset
|
82 _update_with_GET(params, GET) |
4401
4df61d1bd2d5
spelling: let's call it 'whitespace' without space or hyphen
Mads Kiilerich <madski@unity3d.com>
parents:
4368
diff
changeset
|
83 lbl = _('Show whitespace') |
2161
e8c016815ab9
added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents:
2123
diff
changeset
|
84 ig_ws = get_ignore_ws(fileid, GET) |
e8c016815ab9
added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents:
2123
diff
changeset
|
85 ln_ctx = get_line_ctx(fileid, GET) |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
86 # global option |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
87 if fileid is None: |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
88 if ig_ws is None: |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
89 params['ignorews'] += [1] |
4401
4df61d1bd2d5
spelling: let's call it 'whitespace' without space or hyphen
Mads Kiilerich <madski@unity3d.com>
parents:
4368
diff
changeset
|
90 lbl = _('Ignore whitespace') |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
91 ctx_key = 'context' |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
92 ctx_val = ln_ctx |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
93 # per file options |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
94 else: |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
95 if ig_ws is None: |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
96 params[fileid] += ['WS:1'] |
4401
4df61d1bd2d5
spelling: let's call it 'whitespace' without space or hyphen
Mads Kiilerich <madski@unity3d.com>
parents:
4368
diff
changeset
|
97 lbl = _('Ignore whitespace') |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
98 |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
99 ctx_key = fileid |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
100 ctx_val = 'C:%s' % ln_ctx |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
101 # if we have passed in ln_ctx pass it along to our params |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
102 if ln_ctx: |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
103 params[ctx_key] += [ctx_val] |
1787
d4a7b6c82efe
code garden for changeset ranges and comments
Marcin Kuzminski <marcin@python-works.com>
parents:
1776
diff
changeset
|
104 |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
105 params['anchor'] = fileid |
4629
834d7bbfb18e
text_strikethrough.png: use new icon-strike font
Sean Farley <sean.michael.farley@gmail.com>
parents:
4454
diff
changeset
|
106 icon = h.literal('<i class="icon-strike"></i>') |
6434
1ab38cd72704
template: use Bootstrap tooltips and popover instead of handmade tooltips
domruf <dominikruf@gmail.com>
parents:
6319
diff
changeset
|
107 return h.link_to(icon, h.url.current(**params), title=lbl, **{'data-toggle': 'tooltip'}) |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
108 |
1787
d4a7b6c82efe
code garden for changeset ranges and comments
Marcin Kuzminski <marcin@python-works.com>
parents:
1776
diff
changeset
|
109 |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
110 def get_line_ctx(fid, GET): |
2161
e8c016815ab9
added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents:
2123
diff
changeset
|
111 ln_ctx_global = GET.get('context') |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
112 if fid: |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
113 ln_ctx = filter(lambda k: k.startswith('C'), GET.getall(fid)) |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
114 else: |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
115 _ln_ctx = filter(lambda k: k.startswith('C'), GET) |
6864
7691290837d2
codingstyle: trivial whitespace fixes
Lars Kruse <devel@sumpfralle.de>
parents:
6558
diff
changeset
|
116 ln_ctx = GET.get(_ln_ctx[0]) if _ln_ctx else ln_ctx_global |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
117 if ln_ctx: |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
118 ln_ctx = [ln_ctx] |
1787
d4a7b6c82efe
code garden for changeset ranges and comments
Marcin Kuzminski <marcin@python-works.com>
parents:
1776
diff
changeset
|
119 |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
120 if ln_ctx: |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
121 retval = ln_ctx[0].split(':')[-1] |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
122 else: |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
123 retval = ln_ctx_global |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
124 |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
125 try: |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
126 return int(retval) |
3631
10b4e34841a4
Don't catch all exceptions
Marcin Kuzminski <marcin@python-works.com>
parents:
3619
diff
changeset
|
127 except Exception: |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
128 return 3 |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
129 |
1787
d4a7b6c82efe
code garden for changeset ranges and comments
Marcin Kuzminski <marcin@python-works.com>
parents:
1776
diff
changeset
|
130 |
2161
e8c016815ab9
added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents:
2123
diff
changeset
|
131 def _context_url(GET, fileid=None): |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
132 """ |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
133 Generates url for context lines |
1787
d4a7b6c82efe
code garden for changeset ranges and comments
Marcin Kuzminski <marcin@python-works.com>
parents:
1776
diff
changeset
|
134 |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
135 :param fileid: |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
136 """ |
2161
e8c016815ab9
added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents:
2123
diff
changeset
|
137 |
e8c016815ab9
added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents:
2123
diff
changeset
|
138 fileid = str(fileid) if fileid else None |
e8c016815ab9
added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents:
2123
diff
changeset
|
139 ig_ws = get_ignore_ws(fileid, GET) |
e8c016815ab9
added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents:
2123
diff
changeset
|
140 ln_ctx = (get_line_ctx(fileid, GET) or 3) * 2 |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
141 |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
142 params = defaultdict(list) |
2161
e8c016815ab9
added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents:
2123
diff
changeset
|
143 _update_with_GET(params, GET) |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
144 |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
145 # global option |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
146 if fileid is None: |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
147 if ln_ctx > 0: |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
148 params['context'] += [ln_ctx] |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
149 |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
150 if ig_ws: |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
151 ig_ws_key = 'ignorews' |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
152 ig_ws_val = 1 |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
153 |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
154 # per file option |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
155 else: |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
156 params[fileid] += ['C:%s' % ln_ctx] |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
157 ig_ws_key = fileid |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
158 ig_ws_val = 'WS:%s' % 1 |
1787
d4a7b6c82efe
code garden for changeset ranges and comments
Marcin Kuzminski <marcin@python-works.com>
parents:
1776
diff
changeset
|
159 |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
160 if ig_ws: |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
161 params[ig_ws_key] += [ig_ws_val] |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
162 |
5127
86b1f3cfe836
spelling: fix title casing on various translated strings
Mads Kiilerich <madski@unity3d.com>
parents:
5068
diff
changeset
|
163 lbl = _('Increase diff context to %(num)s lines') % {'num': ln_ctx} |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
164 |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
165 params['anchor'] = fileid |
4630
5839c1842bff
table_add.png: use new icon-sort font
Sean Farley <sean.michael.farley@gmail.com>
parents:
4629
diff
changeset
|
166 icon = h.literal('<i class="icon-sort"></i>') |
6434
1ab38cd72704
template: use Bootstrap tooltips and popover instead of handmade tooltips
domruf <dominikruf@gmail.com>
parents:
6319
diff
changeset
|
167 return h.link_to(icon, h.url.current(**params), title=lbl, **{'data-toggle': 'tooltip'}) |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
168 |
1787
d4a7b6c82efe
code garden for changeset ranges and comments
Marcin Kuzminski <marcin@python-works.com>
parents:
1776
diff
changeset
|
169 |
5666
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
170 # Could perhaps be nice to have in the model but is too high level ... |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
171 def create_comment(text, status, f_path, line_no, revision=None, pull_request_id=None, closing_pr=None): |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
172 """Comment functionality shared between changesets and pullrequests""" |
5667
7834f845505a
comments: use inline comment infrastructure for general comments too
Mads Kiilerich <madski@unity3d.com>
parents:
5666
diff
changeset
|
173 f_path = f_path or None |
7834f845505a
comments: use inline comment infrastructure for general comments too
Mads Kiilerich <madski@unity3d.com>
parents:
5666
diff
changeset
|
174 line_no = line_no or None |
7834f845505a
comments: use inline comment infrastructure for general comments too
Mads Kiilerich <madski@unity3d.com>
parents:
5666
diff
changeset
|
175 |
5666
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
176 comment = ChangesetCommentsModel().create( |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
177 text=text, |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
178 repo=c.db_repo.repo_id, |
6452
3dcf1f82311a
controllers: avoid setting request state in controller instances - set it in the thread global request variable
Mads Kiilerich <mads@kiilerich.com>
parents:
6449
diff
changeset
|
179 author=request.authuser.user_id, |
5666
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
180 revision=revision, |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
181 pull_request=pull_request_id, |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
182 f_path=f_path, |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
183 line_no=line_no, |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
184 status_change=ChangesetStatus.get_status_lbl(status) if status else None, |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
185 closing_pr=closing_pr, |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
186 ) |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
187 |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
188 return comment |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
189 |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
190 |
1045
3fc9183e05dd
another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents:
1038
diff
changeset
|
191 class ChangesetController(BaseRepoController): |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
192 |
6558
4517e212f09a
controllers: rename __before__ to _before in preparation of TurboGears2
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents:
6553
diff
changeset
|
193 def _before(self, *args, **kwargs): |
4517e212f09a
controllers: rename __before__ to _before in preparation of TurboGears2
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents:
6553
diff
changeset
|
194 super(ChangesetController, self)._before(*args, **kwargs) |
1130
1cecc7db3106
fixed some limits in changesets and changelogs
Marcin Kuzminski <marcin@python-works.com>
parents:
1125
diff
changeset
|
195 c.affected_files_cut_off = 60 |
4116
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
196 |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
197 def __load_data(self): |
2368
5143b8df576c
Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents:
2189
diff
changeset
|
198 repo_model = RepoModel() |
5143b8df576c
Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents:
2189
diff
changeset
|
199 c.users_array = repo_model.get_users_js() |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
200 |
3750
244f184f5fc3
moved around some code in changeset controllers to properly log which function was decorated.
Marcin Kuzminski <marcin@python-works.com>
parents:
3749
diff
changeset
|
201 def _index(self, revision, method): |
5667
7834f845505a
comments: use inline comment infrastructure for general comments too
Mads Kiilerich <madski@unity3d.com>
parents:
5666
diff
changeset
|
202 c.pull_request = None |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
203 c.anchor_url = anchor_url |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
204 c.ignorews_url = _ignorews_url |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
205 c.context_url = _context_url |
6906
b343a4599178
diffs: cleanup of variable naming around cut_off_limit
Mads Kiilerich <mads@kiilerich.com>
parents:
6864
diff
changeset
|
206 c.fulldiff = request.GET.get('fulldiff') # for reporting number of changed files |
6864
7691290837d2
codingstyle: trivial whitespace fixes
Lars Kruse <devel@sumpfralle.de>
parents:
6558
diff
changeset
|
207 # get ranges of revisions if preset |
977
28524453bb76
started work on #93 added rev ranges view, checkboxes in changelog to view ranges of changes
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
208 rev_range = revision.split('...')[:2] |
1787
d4a7b6c82efe
code garden for changeset ranges and comments
Marcin Kuzminski <marcin@python-works.com>
parents:
1776
diff
changeset
|
209 enable_comments = True |
4368
3136811db1af
compare: introduce .cs_repo as the repo for .cs_changes - sometimes it is org, sometimes other
Mads Kiilerich <madski@unity3d.com>
parents:
4367
diff
changeset
|
210 c.cs_repo = c.db_repo |
543
a99e23e6c1e8
fixes #13 large initial commits and changesets are cut of now to not freeze the application.
Marcin Kuzminski <marcin@python-works.com>
parents:
512
diff
changeset
|
211 try: |
977
28524453bb76
started work on #93 added rev ranges view, checkboxes in changelog to view ranges of changes
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
212 if len(rev_range) == 2: |
1787
d4a7b6c82efe
code garden for changeset ranges and comments
Marcin Kuzminski <marcin@python-works.com>
parents:
1776
diff
changeset
|
213 enable_comments = False |
977
28524453bb76
started work on #93 added rev ranges view, checkboxes in changelog to view ranges of changes
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
214 rev_start = rev_range[0] |
28524453bb76
started work on #93 added rev ranges view, checkboxes in changelog to view ranges of changes
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
215 rev_end = rev_range[1] |
4196
06e49be38d78
Rename rhodecode_repo to db_repo_scm_instance
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4195
diff
changeset
|
216 rev_ranges = c.db_repo_scm_instance.get_changesets(start=rev_start, |
3023
c2a206162062
Basic implementation of cherry picking changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
2996
diff
changeset
|
217 end=rev_end) |
977
28524453bb76
started work on #93 added rev ranges view, checkboxes in changelog to view ranges of changes
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
218 else: |
4196
06e49be38d78
Rename rhodecode_repo to db_repo_scm_instance
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4195
diff
changeset
|
219 rev_ranges = [c.db_repo_scm_instance.get_changeset(revision)] |
983
57a2b792a3a1
fixed error for single changeset
Marcin Kuzminski <marcin@python-works.com>
parents:
978
diff
changeset
|
220 |
57a2b792a3a1
fixed error for single changeset
Marcin Kuzminski <marcin@python-works.com>
parents:
978
diff
changeset
|
221 c.cs_ranges = list(rev_ranges) |
1656
833f9dec0a06
implemented #44 - branch filtering in changelog, aka branch browser
Marcin Kuzminski <marcin@python-works.com>
parents:
1514
diff
changeset
|
222 if not c.cs_ranges: |
833f9dec0a06
implemented #44 - branch filtering in changelog, aka branch browser
Marcin Kuzminski <marcin@python-works.com>
parents:
1514
diff
changeset
|
223 raise RepositoryError('Changeset range returned empty result') |
983
57a2b792a3a1
fixed error for single changeset
Marcin Kuzminski <marcin@python-works.com>
parents:
978
diff
changeset
|
224 |
6041
0bac887ea148
changeset: don't crash with unhandled EmptyRepositoryError when visiting (non-existing) changeset in an empty repo
Mads Kiilerich <madski@unity3d.com>
parents:
5815
diff
changeset
|
225 except (ChangesetDoesNotExistError, EmptyRepositoryError): |
5186
5fb4e6f884ce
changeset: reduce log level of stack trace on innocent exceptions
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents:
5148
diff
changeset
|
226 log.debug(traceback.format_exc()) |
4116
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
227 msg = _('Such revision does not exist for this repository') |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
228 h.flash(msg, category='error') |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
229 raise HTTPNotFound() |
977
28524453bb76
started work on #93 added rev ranges view, checkboxes in changelog to view ranges of changes
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
230 |
28524453bb76
started work on #93 added rev ranges view, checkboxes in changelog to view ranges of changes
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
231 c.changes = OrderedDict() |
1789
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1787
diff
changeset
|
232 |
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1787
diff
changeset
|
233 c.lines_added = 0 # count of lines added |
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1787
diff
changeset
|
234 c.lines_deleted = 0 # count of lines removes |
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1787
diff
changeset
|
235 |
2217
76947224bf27
Implemented initial code-review status of changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
2216
diff
changeset
|
236 c.changeset_statuses = ChangesetStatus.STATUSES |
4330
773980a93cdd
changesets: simplify calculation of PR comments on changesets
Mads Kiilerich <madski@unity3d.com>
parents:
4301
diff
changeset
|
237 comments = dict() |
2215
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2189
diff
changeset
|
238 c.statuses = [] |
1677
7276b170ce8b
#71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents:
1676
diff
changeset
|
239 c.inline_comments = [] |
7276b170ce8b
#71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents:
1676
diff
changeset
|
240 c.inline_cnt = 0 |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
241 |
1274
7a0004efde12
Added extra check for very large diffs in changesets, sometimes for very large diffs the diff parser could kill CPU.
Marcin Kuzminski <marcin@python-works.com>
parents:
1259
diff
changeset
|
242 # Iterate over ranges (default changeset view is always one changeset) |
977
28524453bb76
started work on #93 added rev ranges view, checkboxes in changelog to view ranges of changes
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
243 for changeset in c.cs_ranges: |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
244 if method == 'show': |
3176
7ec5f9c1df45
show comments from pull requests into associated changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
3141
diff
changeset
|
245 c.statuses.extend([ChangesetStatusModel().get_status( |
4195
9581233e9275
Rename rhodecode_db_repo to db_repo - it stores db repo abstractions
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4187
diff
changeset
|
246 c.db_repo.repo_id, changeset.raw_id)]) |
2215
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2189
diff
changeset
|
247 |
4330
773980a93cdd
changesets: simplify calculation of PR comments on changesets
Mads Kiilerich <madski@unity3d.com>
parents:
4301
diff
changeset
|
248 # Changeset comments |
773980a93cdd
changesets: simplify calculation of PR comments on changesets
Mads Kiilerich <madski@unity3d.com>
parents:
4301
diff
changeset
|
249 comments.update((com.comment_id, com) |
773980a93cdd
changesets: simplify calculation of PR comments on changesets
Mads Kiilerich <madski@unity3d.com>
parents:
4301
diff
changeset
|
250 for com in ChangesetCommentsModel() |
773980a93cdd
changesets: simplify calculation of PR comments on changesets
Mads Kiilerich <madski@unity3d.com>
parents:
4301
diff
changeset
|
251 .get_comments(c.db_repo.repo_id, |
773980a93cdd
changesets: simplify calculation of PR comments on changesets
Mads Kiilerich <madski@unity3d.com>
parents:
4301
diff
changeset
|
252 revision=changeset.raw_id)) |
3176
7ec5f9c1df45
show comments from pull requests into associated changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
3141
diff
changeset
|
253 |
4330
773980a93cdd
changesets: simplify calculation of PR comments on changesets
Mads Kiilerich <madski@unity3d.com>
parents:
4301
diff
changeset
|
254 # Status change comments - mostly from pull requests |
6319
f4059fe16118
db: rename ChangesetStatus.changeset_comment_id to comment_id
Søren Løvborg <sorenl@unity3d.com>
parents:
6303
diff
changeset
|
255 comments.update((st.comment_id, st.comment) |
4330
773980a93cdd
changesets: simplify calculation of PR comments on changesets
Mads Kiilerich <madski@unity3d.com>
parents:
4301
diff
changeset
|
256 for st in ChangesetStatusModel() |
773980a93cdd
changesets: simplify calculation of PR comments on changesets
Mads Kiilerich <madski@unity3d.com>
parents:
4301
diff
changeset
|
257 .get_statuses(c.db_repo.repo_id, |
5278
1ae14a2ceba0
changeset: make code more stable against unexpected comments
Mads Kiilerich <madski@unity3d.com>
parents:
5186
diff
changeset
|
258 changeset.raw_id, with_revisions=True) |
6319
f4059fe16118
db: rename ChangesetStatus.changeset_comment_id to comment_id
Søren Løvborg <sorenl@unity3d.com>
parents:
6303
diff
changeset
|
259 if st.comment_id is not None) |
3176
7ec5f9c1df45
show comments from pull requests into associated changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
3141
diff
changeset
|
260 |
5598
edb24bc0f71a
cleanup: consistent space before line continuation backslash
Mads Kiilerich <madski@unity3d.com>
parents:
5571
diff
changeset
|
261 inlines = ChangesetCommentsModel() \ |
4195
9581233e9275
Rename rhodecode_db_repo to db_repo - it stores db repo abstractions
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4187
diff
changeset
|
262 .get_inline_comments(c.db_repo.repo_id, |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
263 revision=changeset.raw_id) |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
264 c.inline_comments.extend(inlines) |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
265 |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
266 cs2 = changeset.raw_id |
4044
af733fa965b0
fixed diffs vs Empty changeset
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
267 cs1 = changeset.parents[0].raw_id if changeset.parents else EmptyChangeset().raw_id |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
268 context_lcl = get_line_ctx('', request.GET) |
5571
bedb8905c6f8
changeset: drop unused variables
Jiří Suchan <yed@vanyli.net>
parents:
5570
diff
changeset
|
269 ign_whitespace_lcl = get_ignore_ws('', request.GET) |
977
28524453bb76
started work on #93 added rev ranges view, checkboxes in changelog to view ranges of changes
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
270 |
6938
6fde53180c50
diffs: wrap vcs repo get_diff
Mads Kiilerich <mads@kiilerich.com>
parents:
6916
diff
changeset
|
271 raw_diff = diffs.get_diff(c.db_repo_scm_instance, cs1, cs2, |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
272 ignore_whitespace=ign_whitespace_lcl, context=context_lcl) |
6906
b343a4599178
diffs: cleanup of variable naming around cut_off_limit
Mads Kiilerich <mads@kiilerich.com>
parents:
6864
diff
changeset
|
273 diff_limit = None if c.fulldiff else self.cut_off_limit |
6303
1cf51cd05e36
diff: use list instead of OrderedDict - keep it simple
Mads Kiilerich <madski@unity3d.com>
parents:
6234
diff
changeset
|
274 file_diff_data = [] |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
275 if method == 'show': |
6909
54199f3aab93
diffs: drop the noop as_raw method - just use the raw diff directly and with proper variable naming
Mads Kiilerich <mads@kiilerich.com>
parents:
6908
diff
changeset
|
276 diff_processor = diffs.DiffProcessor(raw_diff, |
54199f3aab93
diffs: drop the noop as_raw method - just use the raw diff directly and with proper variable naming
Mads Kiilerich <mads@kiilerich.com>
parents:
6908
diff
changeset
|
277 vcs=c.db_repo_scm_instance.alias, |
54199f3aab93
diffs: drop the noop as_raw method - just use the raw diff directly and with proper variable naming
Mads Kiilerich <mads@kiilerich.com>
parents:
6908
diff
changeset
|
278 diff_limit=diff_limit) |
6914
e85f08375dc6
diffs: drop the DiffLimitExceeded container - just make it a flag available as property
Mads Kiilerich <mads@kiilerich.com>
parents:
6913
diff
changeset
|
279 c.limited_diff = diff_processor.limited_diff |
6913
24a9bec8138c
diffs: inline prepare() into __init__ and make the result available as .parsed
Mads Kiilerich <mads@kiilerich.com>
parents:
6909
diff
changeset
|
280 for f in diff_processor.parsed: |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
281 st = f['stats'] |
3821
ce4b7023a492
diff parser: redefined operations stats for changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3750
diff
changeset
|
282 c.lines_added += st['added'] |
ce4b7023a492
diff parser: redefined operations stats for changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3750
diff
changeset
|
283 c.lines_deleted += st['deleted'] |
6192 | 284 filename = f['filename'] |
285 fid = h.FID(changeset.raw_id, filename) | |
6193
dc4cb1d4e084
diff: rework data structure used by diff_block.diff_block (used for changeset diffs)
Mads Kiilerich <madski@unity3d.com>
parents:
6192
diff
changeset
|
286 url_fid = h.FID('', filename) |
6916
182570502b6a
diffs: move as_html and _safe_id from method to a pure function - avoid calling the method as function
Mads Kiilerich <mads@kiilerich.com>
parents:
6914
diff
changeset
|
287 html_diff = diffs.as_html(enable_comments=enable_comments, parsed_lines=[f]) |
182570502b6a
diffs: move as_html and _safe_id from method to a pure function - avoid calling the method as function
Mads Kiilerich <mads@kiilerich.com>
parents:
6914
diff
changeset
|
288 file_diff_data.append((fid, url_fid, f['operation'], f['old_filename'], filename, html_diff, st)) |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
289 else: |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
290 # downloads/raw we only need RAW diff nothing else |
6909
54199f3aab93
diffs: drop the noop as_raw method - just use the raw diff directly and with proper variable naming
Mads Kiilerich <mads@kiilerich.com>
parents:
6908
diff
changeset
|
291 file_diff_data.append(('', None, None, None, raw_diff, None)) |
6193
dc4cb1d4e084
diff: rework data structure used by diff_block.diff_block (used for changeset diffs)
Mads Kiilerich <madski@unity3d.com>
parents:
6192
diff
changeset
|
292 c.changes[changeset.raw_id] = (cs1, cs2, file_diff_data) |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
293 |
6864
7691290837d2
codingstyle: trivial whitespace fixes
Lars Kruse <devel@sumpfralle.de>
parents:
6558
diff
changeset
|
294 # sort comments in creation order |
4330
773980a93cdd
changesets: simplify calculation of PR comments on changesets
Mads Kiilerich <madski@unity3d.com>
parents:
4301
diff
changeset
|
295 c.comments = [com for com_id, com in sorted(comments.items())] |
3176
7ec5f9c1df45
show comments from pull requests into associated changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
3141
diff
changeset
|
296 |
1677
7276b170ce8b
#71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents:
1676
diff
changeset
|
297 # count inline comments |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2439
diff
changeset
|
298 for __, lines in c.inline_comments: |
1677
7276b170ce8b
#71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents:
1676
diff
changeset
|
299 for comments in lines.values(): |
7276b170ce8b
#71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents:
1676
diff
changeset
|
300 c.inline_cnt += len(comments) |
7276b170ce8b
#71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents:
1676
diff
changeset
|
301 |
977
28524453bb76
started work on #93 added rev ranges view, checkboxes in changelog to view ranges of changes
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
302 if len(c.cs_ranges) == 1: |
28524453bb76
started work on #93 added rev ranges view, checkboxes in changelog to view ranges of changes
Marcin Kuzminski <marcin@python-works.com>
parents:
902
diff
changeset
|
303 c.changeset = c.cs_ranges[0] |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
304 c.parent_tmpl = ''.join(['# Parent %s\n' % x.raw_id |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
305 for x in c.changeset.parents]) |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
306 if method == 'download': |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
307 response.content_type = 'text/plain' |
2996
ebe3e388bbb3
new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
308 response.content_disposition = 'attachment; filename=%s.diff' \ |
ebe3e388bbb3
new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
309 % revision[:12] |
6909
54199f3aab93
diffs: drop the noop as_raw method - just use the raw diff directly and with proper variable naming
Mads Kiilerich <mads@kiilerich.com>
parents:
6908
diff
changeset
|
310 return raw_diff |
2996
ebe3e388bbb3
new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
311 elif method == 'patch': |
ebe3e388bbb3
new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
312 response.content_type = 'text/plain' |
6909
54199f3aab93
diffs: drop the noop as_raw method - just use the raw diff directly and with proper variable naming
Mads Kiilerich <mads@kiilerich.com>
parents:
6908
diff
changeset
|
313 c.diff = safe_unicode(raw_diff) |
2996
ebe3e388bbb3
new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
314 return render('changeset/patch_changeset.html') |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
315 elif method == 'raw': |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
316 response.content_type = 'text/plain' |
6909
54199f3aab93
diffs: drop the noop as_raw method - just use the raw diff directly and with proper variable naming
Mads Kiilerich <mads@kiilerich.com>
parents:
6908
diff
changeset
|
317 return raw_diff |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
318 elif method == 'show': |
4116
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
319 self.__load_data() |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
320 if len(c.cs_ranges) == 1: |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
321 return render('changeset/changeset.html') |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
322 else: |
4297
7a5977429125
compare: show how many changesets the compared repo is behind
Mads Kiilerich <madski@unity3d.com>
parents:
4211
diff
changeset
|
323 c.cs_ranges_org = None |
4367
7879d8d88672
pull requests: show changeset comment and status flags in the changelog for PRs
Mads Kiilerich <madski@unity3d.com>
parents:
4364
diff
changeset
|
324 c.cs_comments = {} |
4352
c733124b6262
pull requests: show graph when displaying PR
Mads Kiilerich <madski@unity3d.com>
parents:
4330
diff
changeset
|
325 revs = [ctx.revision for ctx in reversed(c.cs_ranges)] |
6532
33b71a130b16
templates: properly escape inline JavaScript values
Søren Løvborg <sorenl@unity3d.com>
parents:
6520
diff
changeset
|
326 c.jsdata = graph_data(c.db_repo_scm_instance, revs) |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
327 return render('changeset/changeset_range.html') |
543
a99e23e6c1e8
fixes #13 large initial commits and changesets are cut of now to not freeze the application.
Marcin Kuzminski <marcin@python-works.com>
parents:
512
diff
changeset
|
328 |
3749
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3695
diff
changeset
|
329 @LoginRequired() |
6511
a17c8e5f6712
auth: simplify repository permission checks
Søren Løvborg <sorenl@unity3d.com>
parents:
6452
diff
changeset
|
330 @HasRepoPermissionLevelDecorator('read') |
3750
244f184f5fc3
moved around some code in changeset controllers to properly log which function was decorated.
Marcin Kuzminski <marcin@python-works.com>
parents:
3749
diff
changeset
|
331 def index(self, revision, method='show'): |
244f184f5fc3
moved around some code in changeset controllers to properly log which function was decorated.
Marcin Kuzminski <marcin@python-works.com>
parents:
3749
diff
changeset
|
332 return self._index(revision, method=method) |
244f184f5fc3
moved around some code in changeset controllers to properly log which function was decorated.
Marcin Kuzminski <marcin@python-works.com>
parents:
3749
diff
changeset
|
333 |
244f184f5fc3
moved around some code in changeset controllers to properly log which function was decorated.
Marcin Kuzminski <marcin@python-works.com>
parents:
3749
diff
changeset
|
334 @LoginRequired() |
6511
a17c8e5f6712
auth: simplify repository permission checks
Søren Løvborg <sorenl@unity3d.com>
parents:
6452
diff
changeset
|
335 @HasRepoPermissionLevelDecorator('read') |
2996
ebe3e388bbb3
new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
336 def changeset_raw(self, revision): |
3750
244f184f5fc3
moved around some code in changeset controllers to properly log which function was decorated.
Marcin Kuzminski <marcin@python-works.com>
parents:
3749
diff
changeset
|
337 return self._index(revision, method='raw') |
2996
ebe3e388bbb3
new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
338 |
3749
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3695
diff
changeset
|
339 @LoginRequired() |
6511
a17c8e5f6712
auth: simplify repository permission checks
Søren Løvborg <sorenl@unity3d.com>
parents:
6452
diff
changeset
|
340 @HasRepoPermissionLevelDecorator('read') |
2996
ebe3e388bbb3
new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
341 def changeset_patch(self, revision): |
3750
244f184f5fc3
moved around some code in changeset controllers to properly log which function was decorated.
Marcin Kuzminski <marcin@python-works.com>
parents:
3749
diff
changeset
|
342 return self._index(revision, method='patch') |
2996
ebe3e388bbb3
new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
343 |
3749
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3695
diff
changeset
|
344 @LoginRequired() |
6511
a17c8e5f6712
auth: simplify repository permission checks
Søren Løvborg <sorenl@unity3d.com>
parents:
6452
diff
changeset
|
345 @HasRepoPermissionLevelDecorator('read') |
2996
ebe3e388bbb3
new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
346 def changeset_download(self, revision): |
3750
244f184f5fc3
moved around some code in changeset controllers to properly log which function was decorated.
Marcin Kuzminski <marcin@python-works.com>
parents:
3749
diff
changeset
|
347 return self._index(revision, method='download') |
1670
d2de0c2f02cd
#77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
1656
diff
changeset
|
348 |
3749
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3695
diff
changeset
|
349 @LoginRequired() |
6511
a17c8e5f6712
auth: simplify repository permission checks
Søren Løvborg <sorenl@unity3d.com>
parents:
6452
diff
changeset
|
350 @HasRepoPermissionLevelDecorator('read') |
2187
b61e540122f2
#415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
351 @jsonify |
1670
d2de0c2f02cd
#77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
1656
diff
changeset
|
352 def comment(self, repo_name, revision): |
5667
7834f845505a
comments: use inline comment infrastructure for general comments too
Mads Kiilerich <madski@unity3d.com>
parents:
5666
diff
changeset
|
353 assert request.environ.get('HTTP_X_PARTIAL_XHR') |
7834f845505a
comments: use inline comment infrastructure for general comments too
Mads Kiilerich <madski@unity3d.com>
parents:
5666
diff
changeset
|
354 |
2296
e5c0f201ca0b
Add changeset status change into emails
Marcin Kuzminski <marcin@python-works.com>
parents:
2286
diff
changeset
|
355 status = request.POST.get('changeset_status') |
5068
140f2811fc6f
comments: avoid storing 'No comments' text when changing status
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents:
4917
diff
changeset
|
356 text = request.POST.get('text', '').strip() |
2296
e5c0f201ca0b
Add changeset status change into emails
Marcin Kuzminski <marcin@python-works.com>
parents:
2286
diff
changeset
|
357 |
5666
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
358 c.comment = create_comment( |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
359 text, |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
360 status, |
2187
b61e540122f2
#415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
361 revision=revision, |
b61e540122f2
#415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
362 f_path=request.POST.get('f_path'), |
2296
e5c0f201ca0b
Add changeset status change into emails
Marcin Kuzminski <marcin@python-works.com>
parents:
2286
diff
changeset
|
363 line_no=request.POST.get('line'), |
2187
b61e540122f2
#415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
364 ) |
2217
76947224bf27
Implemented initial code-review status of changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
2216
diff
changeset
|
365 |
76947224bf27
Implemented initial code-review status of changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
2216
diff
changeset
|
366 # get status if set ! |
4357
c666a68e2a4d
comments: drop change_changeset_status - the value from 'No change' is enough
Mads Kiilerich <madski@unity3d.com>
parents:
4352
diff
changeset
|
367 if status: |
2677
4fbbc65e8cd5
Forbid changing changset status when it is associated with a closed pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2541
diff
changeset
|
368 # if latest status was from pull request and it's closed |
5667
7834f845505a
comments: use inline comment infrastructure for general comments too
Mads Kiilerich <madski@unity3d.com>
parents:
5666
diff
changeset
|
369 # disallow changing status ! RLY? |
2677
4fbbc65e8cd5
Forbid changing changset status when it is associated with a closed pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2541
diff
changeset
|
370 try: |
4fbbc65e8cd5
Forbid changing changset status when it is associated with a closed pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2541
diff
changeset
|
371 ChangesetStatusModel().set_status( |
4195
9581233e9275
Rename rhodecode_db_repo to db_repo - it stores db repo abstractions
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4187
diff
changeset
|
372 c.db_repo.repo_id, |
2677
4fbbc65e8cd5
Forbid changing changset status when it is associated with a closed pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2541
diff
changeset
|
373 status, |
6452
3dcf1f82311a
controllers: avoid setting request state in controller instances - set it in the thread global request variable
Mads Kiilerich <mads@kiilerich.com>
parents:
6449
diff
changeset
|
374 request.authuser.user_id, |
5666
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
375 c.comment, |
2677
4fbbc65e8cd5
Forbid changing changset status when it is associated with a closed pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2541
diff
changeset
|
376 revision=revision, |
5667
7834f845505a
comments: use inline comment infrastructure for general comments too
Mads Kiilerich <madski@unity3d.com>
parents:
5666
diff
changeset
|
377 dont_allow_on_closed_pull_request=True, |
2677
4fbbc65e8cd5
Forbid changing changset status when it is associated with a closed pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2541
diff
changeset
|
378 ) |
4fbbc65e8cd5
Forbid changing changset status when it is associated with a closed pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2541
diff
changeset
|
379 except StatusChangeOnClosedPullRequestError: |
5667
7834f845505a
comments: use inline comment infrastructure for general comments too
Mads Kiilerich <madski@unity3d.com>
parents:
5666
diff
changeset
|
380 log.debug('cannot change status on %s with closed pull request', revision) |
7834f845505a
comments: use inline comment infrastructure for general comments too
Mads Kiilerich <madski@unity3d.com>
parents:
5666
diff
changeset
|
381 raise HTTPBadRequest() |
7834f845505a
comments: use inline comment infrastructure for general comments too
Mads Kiilerich <madski@unity3d.com>
parents:
5666
diff
changeset
|
382 |
6452
3dcf1f82311a
controllers: avoid setting request state in controller instances - set it in the thread global request variable
Mads Kiilerich <mads@kiilerich.com>
parents:
6449
diff
changeset
|
383 action_logger(request.authuser, |
2375
bc2d8c03c050
Implemented #467 Journal logs comments on changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
2368
diff
changeset
|
384 'user_commented_revision:%s' % revision, |
6520
10f16cf8289e
cleanup: remove SQLAlchemy session argument to action_logger
Søren Løvborg <sorenl@unity3d.com>
parents:
6511
diff
changeset
|
385 c.db_repo, request.ip_addr) |
2375
bc2d8c03c050
Implemented #467 Journal logs comments on changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
2368
diff
changeset
|
386 |
2677
4fbbc65e8cd5
Forbid changing changset status when it is associated with a closed pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2541
diff
changeset
|
387 Session().commit() |
2375
bc2d8c03c050
Implemented #467 Journal logs comments on changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
2368
diff
changeset
|
388 |
2187
b61e540122f2
#415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
389 data = { |
b61e540122f2
#415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
390 'target_id': h.safeid(h.safe_unicode(request.POST.get('f_path'))), |
b61e540122f2
#415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
391 } |
5666
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
392 if c.comment is not None: |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
393 data.update(c.comment.get_dict()) |
2188
56e96d4e9f6e
white space cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
2187
diff
changeset
|
394 data.update({'rendered_text': |
56e96d4e9f6e
white space cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
2187
diff
changeset
|
395 render('changeset/changeset_comment_block.html')}) |
2189
3052f90c568a
fixed main comments, prevent from sending inline comments if text is empty
Marcin Kuzminski <marcin@python-works.com>
parents:
2188
diff
changeset
|
396 |
2187
b61e540122f2
#415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
397 return data |
1670
d2de0c2f02cd
#77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
1656
diff
changeset
|
398 |
3749
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3695
diff
changeset
|
399 @LoginRequired() |
6511
a17c8e5f6712
auth: simplify repository permission checks
Søren Løvborg <sorenl@unity3d.com>
parents:
6452
diff
changeset
|
400 @HasRepoPermissionLevelDecorator('read') |
1670
d2de0c2f02cd
#77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
1656
diff
changeset
|
401 @jsonify |
1716
7d1fc253549e
notification to commit author + gardening
Marcin Kuzminski <marcin@python-works.com>
parents:
1713
diff
changeset
|
402 def delete_comment(self, repo_name, comment_id): |
5810
81057be7a5c1
auth: properly invoke PermFunctions (CVE-2016-3114)
Søren Løvborg <sorenl@unity3d.com>
parents:
5374
diff
changeset
|
403 co = ChangesetComment.get_or_404(comment_id) |
81057be7a5c1
auth: properly invoke PermFunctions (CVE-2016-3114)
Søren Løvborg <sorenl@unity3d.com>
parents:
5374
diff
changeset
|
404 if co.repo.repo_name != repo_name: |
81057be7a5c1
auth: properly invoke PermFunctions (CVE-2016-3114)
Søren Løvborg <sorenl@unity3d.com>
parents:
5374
diff
changeset
|
405 raise HTTPNotFound() |
6452
3dcf1f82311a
controllers: avoid setting request state in controller instances - set it in the thread global request variable
Mads Kiilerich <mads@kiilerich.com>
parents:
6449
diff
changeset
|
406 owner = co.author_id == request.authuser.user_id |
6511
a17c8e5f6712
auth: simplify repository permission checks
Søren Løvborg <sorenl@unity3d.com>
parents:
6452
diff
changeset
|
407 repo_admin = h.HasRepoPermissionLevel('admin')(repo_name) |
4116
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
408 if h.HasPermissionAny('hg.admin')() or repo_admin or owner: |
1713
54687aa00724
Tests updates, Session refactoring
Marcin Kuzminski <marcin@python-works.com>
parents:
1712
diff
changeset
|
409 ChangesetCommentsModel().delete(comment=co) |
2677
4fbbc65e8cd5
Forbid changing changset status when it is associated with a closed pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2541
diff
changeset
|
410 Session().commit() |
1674
6f0143e5efe5
#71 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
1670
diff
changeset
|
411 return True |
6f0143e5efe5
#71 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
1670
diff
changeset
|
412 else: |
6f0143e5efe5
#71 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
1670
diff
changeset
|
413 raise HTTPForbidden() |
2971
2bfcec6a3985
new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
414 |
3749
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3695
diff
changeset
|
415 @LoginRequired() |
6511
a17c8e5f6712
auth: simplify repository permission checks
Søren Løvborg <sorenl@unity3d.com>
parents:
6452
diff
changeset
|
416 @HasRepoPermissionLevelDecorator('read') |
2971
2bfcec6a3985
new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
417 @jsonify |
2bfcec6a3985
new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
418 def changeset_info(self, repo_name, revision): |
2978
b84a4ec93ab6
hanlde stripped or removed changesets on changeset info function
Marcin Kuzminski <marcin@python-works.com>
parents:
2971
diff
changeset
|
419 if request.is_xhr: |
b84a4ec93ab6
hanlde stripped or removed changesets on changeset info function
Marcin Kuzminski <marcin@python-works.com>
parents:
2971
diff
changeset
|
420 try: |
4196
06e49be38d78
Rename rhodecode_repo to db_repo_scm_instance
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4195
diff
changeset
|
421 return c.db_repo_scm_instance.get_changeset(revision) |
5374
d69aa464f373
cleanup: consistently use 'except ... as ...:'
Mads Kiilerich <madski@unity3d.com>
parents:
5306
diff
changeset
|
422 except ChangesetDoesNotExistError as e: |
2978
b84a4ec93ab6
hanlde stripped or removed changesets on changeset info function
Marcin Kuzminski <marcin@python-works.com>
parents:
2971
diff
changeset
|
423 return EmptyChangeset(message=str(e)) |
2971
2bfcec6a3985
new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
424 else: |
2bfcec6a3985
new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
425 raise HTTPBadRequest() |
4116
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
426 |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
427 @LoginRequired() |
6511
a17c8e5f6712
auth: simplify repository permission checks
Søren Løvborg <sorenl@unity3d.com>
parents:
6452
diff
changeset
|
428 @HasRepoPermissionLevelDecorator('read') |
4116
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
429 @jsonify |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
430 def changeset_children(self, repo_name, revision): |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
431 if request.is_xhr: |
4196
06e49be38d78
Rename rhodecode_repo to db_repo_scm_instance
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4195
diff
changeset
|
432 changeset = c.db_repo_scm_instance.get_changeset(revision) |
4116
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
433 result = {"results": []} |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
434 if changeset.children: |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
435 result = {"results": changeset.children} |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
436 return result |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
437 else: |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
438 raise HTTPBadRequest() |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
439 |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
440 @LoginRequired() |
6511
a17c8e5f6712
auth: simplify repository permission checks
Søren Løvborg <sorenl@unity3d.com>
parents:
6452
diff
changeset
|
441 @HasRepoPermissionLevelDecorator('read') |
4116
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
442 @jsonify |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
443 def changeset_parents(self, repo_name, revision): |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
444 if request.is_xhr: |
4196
06e49be38d78
Rename rhodecode_repo to db_repo_scm_instance
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4195
diff
changeset
|
445 changeset = c.db_repo_scm_instance.get_changeset(revision) |
4116
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
446 result = {"results": []} |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
447 if changeset.parents: |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
448 result = {"results": changeset.parents} |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
449 return result |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
450 else: |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
451 raise HTTPBadRequest() |