Mercurial > kallithea
annotate kallithea/controllers/changeset.py @ 6193:dc4cb1d4e084
diff: rework data structure used by diff_block.diff_block (used for changeset diffs)
Make it a pure reusable function that also can replace diff_block_simple.
Improve code clarity by using Python tuples for tuples.
fid and url_fid are just shuffled around - not cleaned up for now.
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Tue, 06 Sep 2016 00:51:18 +0200 |
parents | 72acb38da217 |
children | 12ce88eece5f |
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 |
4917
0bc8975f5365
controllers: trivial typo fixes
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents:
4889
diff
changeset
|
18 changeset controller for pylons showing changes between |
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 revisions |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
20 |
4211
1948ede028ef
RhodeCode GmbH is not the sole author of this work
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4208
diff
changeset
|
21 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
|
22 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
|
23 :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
|
24 :author: marcink |
4211
1948ede028ef
RhodeCode GmbH is not the sole author of this work
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4208
diff
changeset
|
25 :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
|
26 :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
|
27 """ |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
28 |
812
30ad41c76fae
fixes #79 cut off limit was added into .ini config files
Marcin Kuzminski <marcin@python-works.com>
parents:
691
diff
changeset
|
29 import logging |
30ad41c76fae
fixes #79 cut off limit was added into .ini config files
Marcin Kuzminski <marcin@python-works.com>
parents:
691
diff
changeset
|
30 import traceback |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
31 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
|
32 |
4422
d51a6f5e57d1
cleanup: remove unused Python imports, found with pyflakes
Mads Kiilerich <madski@unity3d.com>
parents:
4401
diff
changeset
|
33 from pylons import tmpl_context as c, request, response |
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
|
34 from pylons.i18n.translation import _ |
5543
d9b78d8f1db3
cleanup: replace redirect with WebOb exceptions
Søren Løvborg <sorenl@unity3d.com>
parents:
5374
diff
changeset
|
35 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
|
36 |
4186
7e5f8c12a3fc
First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4116
diff
changeset
|
37 from kallithea.lib.utils import jsonify |
7e5f8c12a3fc
First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4116
diff
changeset
|
38 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
|
39 ChangesetDoesNotExistError, EmptyRepositoryError |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
40 |
4352
c733124b6262
pull requests: show graph when displaying PR
Mads Kiilerich <madski@unity3d.com>
parents:
4330
diff
changeset
|
41 from kallithea.lib.compat import json |
4186
7e5f8c12a3fc
First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4116
diff
changeset
|
42 import kallithea.lib.helpers as h |
5598
edb24bc0f71a
cleanup: consistent space before line continuation backslash
Mads Kiilerich <madski@unity3d.com>
parents:
5571
diff
changeset
|
43 from kallithea.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator, \ |
3695
45df84d36b44
Implemented preview for comments
Marcin Kuzminski <marcin@python-works.com>
parents:
3654
diff
changeset
|
44 NotAnonymous |
4186
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.lib.base import BaseRepoController, render |
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.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
|
47 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
|
48 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
|
49 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
|
50 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
|
51 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
|
52 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
|
53 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
|
54 from kallithea.lib.diffs import LimitedDiffContainer |
7e5f8c12a3fc
First step in two-part process to rename directories to kallithea.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4116
diff
changeset
|
55 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
|
56 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
|
57 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
|
58 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
|
59 |
103
665b344927f4
Added changeset controllers
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
60 log = logging.getLogger(__name__) |
665b344927f4
Added changeset controllers
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
61 |
1212 | 62 |
2161
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 _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
|
64 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
|
65 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
|
66 |
e8c016815ab9
added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents:
2123
diff
changeset
|
67 |
e8c016815ab9
added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents:
2123
diff
changeset
|
68 def anchor_url(revision, path, GET): |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
69 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
|
70 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
|
71 |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
72 |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
73 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
|
74 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
|
75 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
|
76 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
|
77 try: |
5a1cd703a888
changeset: don't crash on malformed whitespace parameter - return 400 Bad Request
Andrew Shadura <andrew@shadura.me>
parents:
4746
diff
changeset
|
78 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
|
79 except ValueError: |
5a1cd703a888
changeset: don't crash on malformed whitespace parameter - return 400 Bad Request
Andrew Shadura <andrew@shadura.me>
parents:
4746
diff
changeset
|
80 raise HTTPBadRequest() |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
81 return ig_ws_global |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
82 |
1787
d4a7b6c82efe
code garden for changeset ranges and comments
Marcin Kuzminski <marcin@python-works.com>
parents:
1776
diff
changeset
|
83 |
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 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
|
85 fileid = str(fileid) if fileid else None |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
86 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
|
87 _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
|
88 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
|
89 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
|
90 ln_ctx = get_line_ctx(fileid, GET) |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
91 # global option |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
92 if fileid is None: |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
93 if ig_ws is None: |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
94 params['ignorews'] += [1] |
4401
4df61d1bd2d5
spelling: let's call it 'whitespace' without space or hyphen
Mads Kiilerich <madski@unity3d.com>
parents:
4368
diff
changeset
|
95 lbl = _('Ignore whitespace') |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
96 ctx_key = 'context' |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
97 ctx_val = ln_ctx |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
98 # per file options |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
99 else: |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
100 if ig_ws is None: |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
101 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
|
102 lbl = _('Ignore whitespace') |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
103 |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
104 ctx_key = fileid |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
105 ctx_val = 'C:%s' % ln_ctx |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
106 # 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
|
107 if ln_ctx: |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
108 params[ctx_key] += [ctx_val] |
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 params['anchor'] = fileid |
4629
834d7bbfb18e
text_strikethrough.png: use new icon-strike font
Sean Farley <sean.michael.farley@gmail.com>
parents:
4454
diff
changeset
|
111 icon = h.literal('<i class="icon-strike"></i>') |
834d7bbfb18e
text_strikethrough.png: use new icon-strike font
Sean Farley <sean.michael.farley@gmail.com>
parents:
4454
diff
changeset
|
112 return h.link_to(icon, h.url.current(**params), title=lbl, class_='tooltip') |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
113 |
1787
d4a7b6c82efe
code garden for changeset ranges and comments
Marcin Kuzminski <marcin@python-works.com>
parents:
1776
diff
changeset
|
114 |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
115 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
|
116 ln_ctx_global = GET.get('context') |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
117 if fid: |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
118 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
|
119 else: |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
120 _ln_ctx = filter(lambda k: k.startswith('C'), GET) |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
121 ln_ctx = GET.get(_ln_ctx[0]) if _ln_ctx else ln_ctx_global |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
122 if ln_ctx: |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
123 ln_ctx = [ln_ctx] |
1787
d4a7b6c82efe
code garden for changeset ranges and comments
Marcin Kuzminski <marcin@python-works.com>
parents:
1776
diff
changeset
|
124 |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
125 if ln_ctx: |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
126 retval = ln_ctx[0].split(':')[-1] |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
127 else: |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
128 retval = ln_ctx_global |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
129 |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
130 try: |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
131 return int(retval) |
3631
10b4e34841a4
Don't catch all exceptions
Marcin Kuzminski <marcin@python-works.com>
parents:
3619
diff
changeset
|
132 except Exception: |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
133 return 3 |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
134 |
1787
d4a7b6c82efe
code garden for changeset ranges and comments
Marcin Kuzminski <marcin@python-works.com>
parents:
1776
diff
changeset
|
135 |
2161
e8c016815ab9
added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents:
2123
diff
changeset
|
136 def _context_url(GET, fileid=None): |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
137 """ |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
138 Generates url for context lines |
1787
d4a7b6c82efe
code garden for changeset ranges and comments
Marcin Kuzminski <marcin@python-works.com>
parents:
1776
diff
changeset
|
139 |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
140 :param fileid: |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
141 """ |
2161
e8c016815ab9
added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents:
2123
diff
changeset
|
142 |
e8c016815ab9
added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents:
2123
diff
changeset
|
143 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
|
144 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
|
145 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
|
146 |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
147 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
|
148 _update_with_GET(params, GET) |
1776
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 # global option |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
151 if fileid is None: |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
152 if ln_ctx > 0: |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
153 params['context'] += [ln_ctx] |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
154 |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
155 if ig_ws: |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
156 ig_ws_key = 'ignorews' |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
157 ig_ws_val = 1 |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
158 |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
159 # per file option |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
160 else: |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
161 params[fileid] += ['C:%s' % ln_ctx] |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
162 ig_ws_key = fileid |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
163 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
|
164 |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
165 if ig_ws: |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
166 params[ig_ws_key] += [ig_ws_val] |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
167 |
5127
86b1f3cfe836
spelling: fix title casing on various translated strings
Mads Kiilerich <madski@unity3d.com>
parents:
5068
diff
changeset
|
168 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
|
169 |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
170 params['anchor'] = fileid |
4630
5839c1842bff
table_add.png: use new icon-sort font
Sean Farley <sean.michael.farley@gmail.com>
parents:
4629
diff
changeset
|
171 icon = h.literal('<i class="icon-sort"></i>') |
5839c1842bff
table_add.png: use new icon-sort font
Sean Farley <sean.michael.farley@gmail.com>
parents:
4629
diff
changeset
|
172 return h.link_to(icon, h.url.current(**params), title=lbl, class_='tooltip') |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
173 |
1787
d4a7b6c82efe
code garden for changeset ranges and comments
Marcin Kuzminski <marcin@python-works.com>
parents:
1776
diff
changeset
|
174 |
5666
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
175 # 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
|
176 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
|
177 """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
|
178 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
|
179 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
|
180 |
5666
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
181 comment = ChangesetCommentsModel().create( |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
182 text=text, |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
183 repo=c.db_repo.repo_id, |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
184 user=c.authuser.user_id, |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
185 revision=revision, |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
186 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
|
187 f_path=f_path, |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
188 line_no=line_no, |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
189 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
|
190 closing_pr=closing_pr, |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
191 ) |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
192 |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
193 return comment |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
194 |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
195 |
1045
3fc9183e05dd
another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents:
1038
diff
changeset
|
196 class ChangesetController(BaseRepoController): |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
197 |
103
665b344927f4
Added changeset controllers
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
198 def __before__(self): |
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
|
199 super(ChangesetController, self).__before__() |
1130
1cecc7db3106
fixed some limits in changesets and changelogs
Marcin Kuzminski <marcin@python-works.com>
parents:
1125
diff
changeset
|
200 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
|
201 |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
202 def __load_data(self): |
2368
5143b8df576c
Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents:
2189
diff
changeset
|
203 repo_model = RepoModel() |
5143b8df576c
Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents:
2189
diff
changeset
|
204 c.users_array = repo_model.get_users_js() |
4116
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
205 c.user_groups_array = repo_model.get_user_groups_js() |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
206 |
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
|
207 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
|
208 c.pull_request = None |
1776
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
209 c.anchor_url = anchor_url |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
210 c.ignorews_url = _ignorews_url |
22333ddd1a40
implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
211 c.context_url = _context_url |
2996
ebe3e388bbb3
new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
212 c.fulldiff = fulldiff = request.GET.get('fulldiff') |
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
|
213 #get ranges of revisions if preset |
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_range = revision.split('...')[:2] |
1787
d4a7b6c82efe
code garden for changeset ranges and comments
Marcin Kuzminski <marcin@python-works.com>
parents:
1776
diff
changeset
|
215 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
|
216 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
|
217 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
|
218 if len(rev_range) == 2: |
1787
d4a7b6c82efe
code garden for changeset ranges and comments
Marcin Kuzminski <marcin@python-works.com>
parents:
1776
diff
changeset
|
219 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
|
220 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
|
221 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
|
222 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
|
223 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
|
224 else: |
4196
06e49be38d78
Rename rhodecode_repo to db_repo_scm_instance
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4195
diff
changeset
|
225 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
|
226 |
57a2b792a3a1
fixed error for single changeset
Marcin Kuzminski <marcin@python-works.com>
parents:
978
diff
changeset
|
227 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
|
228 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
|
229 raise RepositoryError('Changeset range returned empty result') |
983
57a2b792a3a1
fixed error for single changeset
Marcin Kuzminski <marcin@python-works.com>
parents:
978
diff
changeset
|
230 |
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
|
231 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
|
232 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
|
233 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
|
234 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
|
235 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
|
236 |
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
|
237 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
|
238 |
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1787
diff
changeset
|
239 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
|
240 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
|
241 |
2217
76947224bf27
Implemented initial code-review status of changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
2216
diff
changeset
|
242 c.changeset_statuses = ChangesetStatus.STATUSES |
4330
773980a93cdd
changesets: simplify calculation of PR comments on changesets
Mads Kiilerich <madski@unity3d.com>
parents:
4301
diff
changeset
|
243 comments = dict() |
2215
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2189
diff
changeset
|
244 c.statuses = [] |
1677
7276b170ce8b
#71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents:
1676
diff
changeset
|
245 c.inline_comments = [] |
7276b170ce8b
#71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents:
1676
diff
changeset
|
246 c.inline_cnt = 0 |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
247 |
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
|
248 # 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
|
249 for changeset in c.cs_ranges: |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
250 if method == 'show': |
3176
7ec5f9c1df45
show comments from pull requests into associated changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
3141
diff
changeset
|
251 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
|
252 c.db_repo.repo_id, changeset.raw_id)]) |
2215
2c2bdaeca912
code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents:
2189
diff
changeset
|
253 |
4330
773980a93cdd
changesets: simplify calculation of PR comments on changesets
Mads Kiilerich <madski@unity3d.com>
parents:
4301
diff
changeset
|
254 # Changeset comments |
773980a93cdd
changesets: simplify calculation of PR comments on changesets
Mads Kiilerich <madski@unity3d.com>
parents:
4301
diff
changeset
|
255 comments.update((com.comment_id, com) |
773980a93cdd
changesets: simplify calculation of PR comments on changesets
Mads Kiilerich <madski@unity3d.com>
parents:
4301
diff
changeset
|
256 for com in ChangesetCommentsModel() |
773980a93cdd
changesets: simplify calculation of PR comments on changesets
Mads Kiilerich <madski@unity3d.com>
parents:
4301
diff
changeset
|
257 .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
|
258 revision=changeset.raw_id)) |
3176
7ec5f9c1df45
show comments from pull requests into associated changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
3141
diff
changeset
|
259 |
4330
773980a93cdd
changesets: simplify calculation of PR comments on changesets
Mads Kiilerich <madski@unity3d.com>
parents:
4301
diff
changeset
|
260 # Status change comments - mostly from pull requests |
773980a93cdd
changesets: simplify calculation of PR comments on changesets
Mads Kiilerich <madski@unity3d.com>
parents:
4301
diff
changeset
|
261 comments.update((st.changeset_comment_id, st.comment) |
773980a93cdd
changesets: simplify calculation of PR comments on changesets
Mads Kiilerich <madski@unity3d.com>
parents:
4301
diff
changeset
|
262 for st in ChangesetStatusModel() |
773980a93cdd
changesets: simplify calculation of PR comments on changesets
Mads Kiilerich <madski@unity3d.com>
parents:
4301
diff
changeset
|
263 .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
|
264 changeset.raw_id, with_revisions=True) |
1ae14a2ceba0
changeset: make code more stable against unexpected comments
Mads Kiilerich <madski@unity3d.com>
parents:
5186
diff
changeset
|
265 if st.changeset_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
|
266 |
5598
edb24bc0f71a
cleanup: consistent space before line continuation backslash
Mads Kiilerich <madski@unity3d.com>
parents:
5571
diff
changeset
|
267 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
|
268 .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
|
269 revision=changeset.raw_id) |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
270 c.inline_comments.extend(inlines) |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
271 |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
272 cs2 = changeset.raw_id |
4044
af733fa965b0
fixed diffs vs Empty changeset
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
273 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
|
274 context_lcl = get_line_ctx('', request.GET) |
5571
bedb8905c6f8
changeset: drop unused variables
Jiří Suchan <yed@vanyli.net>
parents:
5570
diff
changeset
|
275 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
|
276 |
4196
06e49be38d78
Rename rhodecode_repo to db_repo_scm_instance
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4195
diff
changeset
|
277 _diff = c.db_repo_scm_instance.get_diff(cs1, cs2, |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
278 ignore_whitespace=ign_whitespace_lcl, context=context_lcl) |
2996
ebe3e388bbb3
new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
279 diff_limit = self.cut_off_limit if not fulldiff else None |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
280 diff_processor = diffs.DiffProcessor(_diff, |
4196
06e49be38d78
Rename rhodecode_repo to db_repo_scm_instance
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4195
diff
changeset
|
281 vcs=c.db_repo_scm_instance.alias, |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
282 format='gitdiff', |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
283 diff_limit=diff_limit) |
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
|
284 file_diff_data = OrderedDict() |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
285 if method == 'show': |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
286 _parsed = diff_processor.prepare() |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
287 c.limited_diff = False |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
288 if isinstance(_parsed, LimitedDiffContainer): |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
289 c.limited_diff = True |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
290 for f in _parsed: |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
291 st = f['stats'] |
3821
ce4b7023a492
diff parser: redefined operations stats for changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3750
diff
changeset
|
292 c.lines_added += st['added'] |
ce4b7023a492
diff parser: redefined operations stats for changes
Marcin Kuzminski <marcin@python-works.com>
parents:
3750
diff
changeset
|
293 c.lines_deleted += st['deleted'] |
6192 | 294 filename = f['filename'] |
295 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
|
296 url_fid = h.FID('', filename) |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
297 diff = diff_processor.as_html(enable_comments=enable_comments, |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
298 parsed_lines=[f]) |
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
|
299 file_diff_data[fid] = (url_fid, f['operation'], filename, diff, st) |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
300 else: |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
301 # downloads/raw we only need RAW diff nothing else |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
302 diff = diff_processor.as_raw() |
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
|
303 file_diff_data[''] = (None, None, None, diff, None) |
dc4cb1d4e084
diff: rework data structure used by diff_block.diff_block (used for changeset diffs)
Mads Kiilerich <madski@unity3d.com>
parents:
6192
diff
changeset
|
304 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
|
305 |
4330
773980a93cdd
changesets: simplify calculation of PR comments on changesets
Mads Kiilerich <madski@unity3d.com>
parents:
4301
diff
changeset
|
306 #sort comments in creation order |
773980a93cdd
changesets: simplify calculation of PR comments on changesets
Mads Kiilerich <madski@unity3d.com>
parents:
4301
diff
changeset
|
307 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
|
308 |
1677
7276b170ce8b
#71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents:
1676
diff
changeset
|
309 # count inline comments |
2440
1bc579bcd67a
- pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents:
2439
diff
changeset
|
310 for __, lines in c.inline_comments: |
1677
7276b170ce8b
#71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents:
1676
diff
changeset
|
311 for comments in lines.values(): |
7276b170ce8b
#71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents:
1676
diff
changeset
|
312 c.inline_cnt += len(comments) |
7276b170ce8b
#71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents:
1676
diff
changeset
|
313 |
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
|
314 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
|
315 c.changeset = c.cs_ranges[0] |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
316 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
|
317 for x in c.changeset.parents]) |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
318 if method == 'download': |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
319 response.content_type = 'text/plain' |
2996
ebe3e388bbb3
new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
320 response.content_disposition = 'attachment; filename=%s.diff' \ |
ebe3e388bbb3
new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
321 % revision[:12] |
ebe3e388bbb3
new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
322 return diff |
ebe3e388bbb3
new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
323 elif method == 'patch': |
ebe3e388bbb3
new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
324 response.content_type = 'text/plain' |
ebe3e388bbb3
new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
325 c.diff = safe_unicode(diff) |
ebe3e388bbb3
new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
326 return render('changeset/patch_changeset.html') |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
327 elif method == 'raw': |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
328 response.content_type = 'text/plain' |
2996
ebe3e388bbb3
new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
329 return diff |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
330 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
|
331 self.__load_data() |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
332 if len(c.cs_ranges) == 1: |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
333 return render('changeset/changeset.html') |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2978
diff
changeset
|
334 else: |
4297
7a5977429125
compare: show how many changesets the compared repo is behind
Mads Kiilerich <madski@unity3d.com>
parents:
4211
diff
changeset
|
335 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
|
336 c.cs_comments = {} |
4352
c733124b6262
pull requests: show graph when displaying PR
Mads Kiilerich <madski@unity3d.com>
parents:
4330
diff
changeset
|
337 revs = [ctx.revision for ctx in reversed(c.cs_ranges)] |
c733124b6262
pull requests: show graph when displaying PR
Mads Kiilerich <madski@unity3d.com>
parents:
4330
diff
changeset
|
338 c.jsdata = json.dumps(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
|
339 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
|
340 |
3749
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3695
diff
changeset
|
341 @LoginRequired() |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3695
diff
changeset
|
342 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3695
diff
changeset
|
343 'repository.admin') |
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
|
344 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
|
345 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
|
346 |
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 @LoginRequired() |
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
|
348 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
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
|
349 'repository.admin') |
2996
ebe3e388bbb3
new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
350 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
|
351 return self._index(revision, method='raw') |
2996
ebe3e388bbb3
new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
352 |
3749
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3695
diff
changeset
|
353 @LoginRequired() |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3695
diff
changeset
|
354 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3695
diff
changeset
|
355 'repository.admin') |
2996
ebe3e388bbb3
new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
356 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
|
357 return self._index(revision, method='patch') |
2996
ebe3e388bbb3
new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
358 |
3749
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3695
diff
changeset
|
359 @LoginRequired() |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3695
diff
changeset
|
360 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3695
diff
changeset
|
361 'repository.admin') |
2996
ebe3e388bbb3
new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
362 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
|
363 return self._index(revision, method='download') |
1670
d2de0c2f02cd
#77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
1656
diff
changeset
|
364 |
3749
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3695
diff
changeset
|
365 @LoginRequired() |
3695
45df84d36b44
Implemented preview for comments
Marcin Kuzminski <marcin@python-works.com>
parents:
3654
diff
changeset
|
366 @NotAnonymous() |
3749
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3695
diff
changeset
|
367 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3695
diff
changeset
|
368 'repository.admin') |
2187
b61e540122f2
#415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
369 @jsonify |
1670
d2de0c2f02cd
#77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
1656
diff
changeset
|
370 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
|
371 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
|
372 |
2296
e5c0f201ca0b
Add changeset status change into emails
Marcin Kuzminski <marcin@python-works.com>
parents:
2286
diff
changeset
|
373 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
|
374 text = request.POST.get('text', '').strip() |
2296
e5c0f201ca0b
Add changeset status change into emails
Marcin Kuzminski <marcin@python-works.com>
parents:
2286
diff
changeset
|
375 |
5666
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
376 c.comment = create_comment( |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
377 text, |
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
378 status, |
2187
b61e540122f2
#415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
379 revision=revision, |
b61e540122f2
#415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
380 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
|
381 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
|
382 ) |
2217
76947224bf27
Implemented initial code-review status of changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
2216
diff
changeset
|
383 |
76947224bf27
Implemented initial code-review status of changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
2216
diff
changeset
|
384 # 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
|
385 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
|
386 # 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
|
387 # 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
|
388 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
|
389 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
|
390 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
|
391 status, |
4197
d208416c84c6
Rename rhodecode_user to authuser - it is an AuthUser instance
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4196
diff
changeset
|
392 c.authuser.user_id, |
5666
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
393 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
|
394 revision=revision, |
5667
7834f845505a
comments: use inline comment infrastructure for general comments too
Mads Kiilerich <madski@unity3d.com>
parents:
5666
diff
changeset
|
395 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
|
396 ) |
4fbbc65e8cd5
Forbid changing changset status when it is associated with a closed pull request
Marcin Kuzminski <marcin@python-works.com>
parents:
2541
diff
changeset
|
397 except StatusChangeOnClosedPullRequestError: |
5667
7834f845505a
comments: use inline comment infrastructure for general comments too
Mads Kiilerich <madski@unity3d.com>
parents:
5666
diff
changeset
|
398 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
|
399 raise HTTPBadRequest() |
7834f845505a
comments: use inline comment infrastructure for general comments too
Mads Kiilerich <madski@unity3d.com>
parents:
5666
diff
changeset
|
400 |
4197
d208416c84c6
Rename rhodecode_user to authuser - it is an AuthUser instance
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4196
diff
changeset
|
401 action_logger(self.authuser, |
2375
bc2d8c03c050
Implemented #467 Journal logs comments on changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
2368
diff
changeset
|
402 'user_commented_revision:%s' % revision, |
4195
9581233e9275
Rename rhodecode_db_repo to db_repo - it stores db repo abstractions
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4187
diff
changeset
|
403 c.db_repo, self.ip_addr, self.sa) |
2375
bc2d8c03c050
Implemented #467 Journal logs comments on changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
2368
diff
changeset
|
404 |
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
|
405 Session().commit() |
2375
bc2d8c03c050
Implemented #467 Journal logs comments on changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
2368
diff
changeset
|
406 |
2187
b61e540122f2
#415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
407 data = { |
b61e540122f2
#415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
408 '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
|
409 } |
5666
b3ddd87f214f
comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents:
5664
diff
changeset
|
410 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
|
411 data.update(c.comment.get_dict()) |
2188
56e96d4e9f6e
white space cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
2187
diff
changeset
|
412 data.update({'rendered_text': |
56e96d4e9f6e
white space cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
2187
diff
changeset
|
413 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
|
414 |
2187
b61e540122f2
#415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents:
2161
diff
changeset
|
415 return data |
1670
d2de0c2f02cd
#77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
1656
diff
changeset
|
416 |
3749
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3695
diff
changeset
|
417 @LoginRequired() |
3695
45df84d36b44
Implemented preview for comments
Marcin Kuzminski <marcin@python-works.com>
parents:
3654
diff
changeset
|
418 @NotAnonymous() |
3749
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3695
diff
changeset
|
419 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3695
diff
changeset
|
420 'repository.admin') |
1670
d2de0c2f02cd
#77 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
1656
diff
changeset
|
421 @jsonify |
1716
7d1fc253549e
notification to commit author + gardening
Marcin Kuzminski <marcin@python-works.com>
parents:
1713
diff
changeset
|
422 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
|
423 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
|
424 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
|
425 raise HTTPNotFound() |
4197
d208416c84c6
Rename rhodecode_user to authuser - it is an AuthUser instance
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4196
diff
changeset
|
426 owner = co.author.user_id == c.authuser.user_id |
5810
81057be7a5c1
auth: properly invoke PermFunctions (CVE-2016-3114)
Søren Løvborg <sorenl@unity3d.com>
parents:
5374
diff
changeset
|
427 repo_admin = h.HasRepoPermissionAny('repository.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
|
428 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
|
429 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
|
430 Session().commit() |
1674
6f0143e5efe5
#71 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
1670
diff
changeset
|
431 return True |
6f0143e5efe5
#71 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
1670
diff
changeset
|
432 else: |
6f0143e5efe5
#71 code review
Marcin Kuzminski <marcin@python-works.com>
parents:
1670
diff
changeset
|
433 raise HTTPForbidden() |
2971
2bfcec6a3985
new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
434 |
3749
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3695
diff
changeset
|
435 @LoginRequired() |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3695
diff
changeset
|
436 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3695
diff
changeset
|
437 'repository.admin') |
2971
2bfcec6a3985
new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
438 @jsonify |
2bfcec6a3985
new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
439 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
|
440 if request.is_xhr: |
b84a4ec93ab6
hanlde stripped or removed changesets on changeset info function
Marcin Kuzminski <marcin@python-works.com>
parents:
2971
diff
changeset
|
441 try: |
4196
06e49be38d78
Rename rhodecode_repo to db_repo_scm_instance
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4195
diff
changeset
|
442 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
|
443 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
|
444 return EmptyChangeset(message=str(e)) |
2971
2bfcec6a3985
new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
445 else: |
2bfcec6a3985
new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents:
2815
diff
changeset
|
446 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
|
447 |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
448 @LoginRequired() |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
449 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
450 'repository.admin') |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
451 @jsonify |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
452 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
|
453 if request.is_xhr: |
4196
06e49be38d78
Rename rhodecode_repo to db_repo_scm_instance
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4195
diff
changeset
|
454 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
|
455 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
|
456 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
|
457 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
|
458 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
|
459 else: |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
460 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
|
461 |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
462 @LoginRequired() |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
463 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
464 'repository.admin') |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
465 @jsonify |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
466 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
|
467 if request.is_xhr: |
4196
06e49be38d78
Rename rhodecode_repo to db_repo_scm_instance
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4195
diff
changeset
|
468 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
|
469 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
|
470 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
|
471 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
|
472 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
|
473 else: |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
474 raise HTTPBadRequest() |