annotate kallithea/controllers/changeset.py @ 6864:7691290837d2

codingstyle: trivial whitespace fixes Reported by flake8.
author Lars Kruse <devel@sumpfralle.de>
date Fri, 25 Aug 2017 14:32:50 +0200
parents 4517e212f09a
children b343a4599178
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
6511
a17c8e5f6712 auth: simplify repository permission checks
Søren Løvborg <sorenl@unity3d.com>
parents: 6452
diff changeset
40 from kallithea.lib.auth import LoginRequired, HasRepoPermissionLevelDecorator, \
3695
45df84d36b44 Implemented preview for comments
Marcin Kuzminski <marcin@python-works.com>
parents: 3654
diff changeset
41 NotAnonymous
6449
0122959e1f1d lib: move jsonify from utils to base
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 6434
diff changeset
42 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
43 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
44 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
45 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
46 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
47 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
48 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
49 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
50 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
51 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
52 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
53 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
54 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
55 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
56
103
665b344927f4 Added changeset controllers
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
57 log = logging.getLogger(__name__)
665b344927f4 Added changeset controllers
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
58
1212
50e41777675d pep8ify
Marcin Kuzminski <marcin@python-works.com>
parents: 1206
diff changeset
59
2161
e8c016815ab9 added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents: 2123
diff changeset
60 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
61 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
62 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
63
e8c016815ab9 added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents: 2123
diff changeset
64
e8c016815ab9 added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents: 2123
diff changeset
65 def anchor_url(revision, path, GET):
1776
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
66 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
67 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
68
1776
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
69
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
70 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
71 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
72 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
73 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
74 try:
5a1cd703a888 changeset: don't crash on malformed whitespace parameter - return 400 Bad Request
Andrew Shadura <andrew@shadura.me>
parents: 4746
diff changeset
75 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
76 except ValueError:
5a1cd703a888 changeset: don't crash on malformed whitespace parameter - return 400 Bad Request
Andrew Shadura <andrew@shadura.me>
parents: 4746
diff changeset
77 raise HTTPBadRequest()
1776
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
78 return ig_ws_global
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
79
1787
d4a7b6c82efe code garden for changeset ranges and comments
Marcin Kuzminski <marcin@python-works.com>
parents: 1776
diff changeset
80
2161
e8c016815ab9 added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents: 2123
diff changeset
81 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
82 fileid = str(fileid) if fileid else None
1776
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
83 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
84 _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
85 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
86 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
87 ln_ctx = get_line_ctx(fileid, GET)
1776
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
88 # global option
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
89 if fileid is None:
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
90 if ig_ws is None:
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
91 params['ignorews'] += [1]
4401
4df61d1bd2d5 spelling: let's call it 'whitespace' without space or hyphen
Mads Kiilerich <madski@unity3d.com>
parents: 4368
diff changeset
92 lbl = _('Ignore whitespace')
1776
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
93 ctx_key = 'context'
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
94 ctx_val = ln_ctx
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
95 # per file options
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
96 else:
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
97 if ig_ws is None:
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
98 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
99 lbl = _('Ignore whitespace')
1776
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
100
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
101 ctx_key = fileid
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
102 ctx_val = 'C:%s' % ln_ctx
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
103 # 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
104 if ln_ctx:
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
105 params[ctx_key] += [ctx_val]
1787
d4a7b6c82efe code garden for changeset ranges and comments
Marcin Kuzminski <marcin@python-works.com>
parents: 1776
diff changeset
106
1776
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
107 params['anchor'] = fileid
4629
834d7bbfb18e text_strikethrough.png: use new icon-strike font
Sean Farley <sean.michael.farley@gmail.com>
parents: 4454
diff changeset
108 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
109 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
110
1787
d4a7b6c82efe code garden for changeset ranges and comments
Marcin Kuzminski <marcin@python-works.com>
parents: 1776
diff changeset
111
1776
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
112 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
113 ln_ctx_global = GET.get('context')
2995
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
114 if fid:
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.getall(fid))
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
116 else:
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
117 _ln_ctx = filter(lambda k: k.startswith('C'), GET)
6864
7691290837d2 codingstyle: trivial whitespace fixes
Lars Kruse <devel@sumpfralle.de>
parents: 6558
diff changeset
118 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
119 if ln_ctx:
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
120 ln_ctx = [ln_ctx]
1787
d4a7b6c82efe code garden for changeset ranges and comments
Marcin Kuzminski <marcin@python-works.com>
parents: 1776
diff changeset
121
1776
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
122 if ln_ctx:
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
123 retval = ln_ctx[0].split(':')[-1]
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
124 else:
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
125 retval = ln_ctx_global
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
126
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
127 try:
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
128 return int(retval)
3631
10b4e34841a4 Don't catch all exceptions
Marcin Kuzminski <marcin@python-works.com>
parents: 3619
diff changeset
129 except Exception:
2995
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
130 return 3
1776
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
131
1787
d4a7b6c82efe code garden for changeset ranges and comments
Marcin Kuzminski <marcin@python-works.com>
parents: 1776
diff changeset
132
2161
e8c016815ab9 added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents: 2123
diff changeset
133 def _context_url(GET, fileid=None):
1776
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
134 """
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
135 Generates url for context lines
1787
d4a7b6c82efe code garden for changeset ranges and comments
Marcin Kuzminski <marcin@python-works.com>
parents: 1776
diff changeset
136
1776
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
137 :param fileid:
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
138 """
2161
e8c016815ab9 added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents: 2123
diff changeset
139
e8c016815ab9 added hidden fulldiff GET param for disabling big diff cut off limit.
Marcin Kuzminski <marcin@python-works.com>
parents: 2123
diff changeset
140 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
141 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
142 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
143
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
144 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
145 _update_with_GET(params, GET)
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 # global option
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
148 if fileid is None:
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
149 if ln_ctx > 0:
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
150 params['context'] += [ln_ctx]
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
151
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
152 if ig_ws:
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
153 ig_ws_key = 'ignorews'
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
154 ig_ws_val = 1
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
155
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
156 # per file option
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
157 else:
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
158 params[fileid] += ['C:%s' % ln_ctx]
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
159 ig_ws_key = fileid
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
160 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
161
1776
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
162 if ig_ws:
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
163 params[ig_ws_key] += [ig_ws_val]
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
164
5127
86b1f3cfe836 spelling: fix title casing on various translated strings
Mads Kiilerich <madski@unity3d.com>
parents: 5068
diff changeset
165 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
166
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
167 params['anchor'] = fileid
4630
5839c1842bff table_add.png: use new icon-sort font
Sean Farley <sean.michael.farley@gmail.com>
parents: 4629
diff changeset
168 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
169 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
170
1787
d4a7b6c82efe code garden for changeset ranges and comments
Marcin Kuzminski <marcin@python-works.com>
parents: 1776
diff changeset
171
5666
b3ddd87f214f comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents: 5664
diff changeset
172 # 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
173 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
174 """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
175 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
176 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
177
5666
b3ddd87f214f comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents: 5664
diff changeset
178 comment = ChangesetCommentsModel().create(
b3ddd87f214f comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents: 5664
diff changeset
179 text=text,
b3ddd87f214f comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents: 5664
diff changeset
180 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
181 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
182 revision=revision,
b3ddd87f214f comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents: 5664
diff changeset
183 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
184 f_path=f_path,
b3ddd87f214f comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents: 5664
diff changeset
185 line_no=line_no,
b3ddd87f214f comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents: 5664
diff changeset
186 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
187 closing_pr=closing_pr,
b3ddd87f214f comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents: 5664
diff changeset
188 )
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 return comment
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
1045
3fc9183e05dd another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents: 1038
diff changeset
193 class ChangesetController(BaseRepoController):
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
194
6558
4517e212f09a controllers: rename __before__ to _before in preparation of TurboGears2
Thomas De Schampheleire <thomas.de.schampheleire@gmail.com>
parents: 6553
diff changeset
195 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
196 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
197 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
198
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4077
diff changeset
199 def __load_data(self):
2368
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
200 repo_model = RepoModel()
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
201 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
202 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
203
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
204 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
205 c.pull_request = None
1776
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
206 c.anchor_url = anchor_url
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
207 c.ignorews_url = _ignorews_url
22333ddd1a40 implements #307, configurable diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 1768
diff changeset
208 c.context_url = _context_url
2996
ebe3e388bbb3 new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents: 2995
diff changeset
209 c.fulldiff = fulldiff = request.GET.get('fulldiff')
6864
7691290837d2 codingstyle: trivial whitespace fixes
Lars Kruse <devel@sumpfralle.de>
parents: 6558
diff changeset
210 # 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
211 rev_range = revision.split('...')[:2]
1787
d4a7b6c82efe code garden for changeset ranges and comments
Marcin Kuzminski <marcin@python-works.com>
parents: 1776
diff changeset
212 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
213 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
214 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
215 if len(rev_range) == 2:
1787
d4a7b6c82efe code garden for changeset ranges and comments
Marcin Kuzminski <marcin@python-works.com>
parents: 1776
diff changeset
216 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
217 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
218 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
219 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
220 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
221 else:
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_changeset(revision)]
983
57a2b792a3a1 fixed error for single changeset
Marcin Kuzminski <marcin@python-works.com>
parents: 978
diff changeset
223
57a2b792a3a1 fixed error for single changeset
Marcin Kuzminski <marcin@python-works.com>
parents: 978
diff changeset
224 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
225 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
226 raise RepositoryError('Changeset range returned empty result')
983
57a2b792a3a1 fixed error for single changeset
Marcin Kuzminski <marcin@python-works.com>
parents: 978
diff changeset
227
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
228 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
229 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
230 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
231 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
232 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
233
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
234 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
235
17caf4efe15c implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents: 1787
diff changeset
236 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
237 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
238
2217
76947224bf27 Implemented initial code-review status of changesets
Marcin Kuzminski <marcin@python-works.com>
parents: 2216
diff changeset
239 c.changeset_statuses = ChangesetStatus.STATUSES
4330
773980a93cdd changesets: simplify calculation of PR comments on changesets
Mads Kiilerich <madski@unity3d.com>
parents: 4301
diff changeset
240 comments = dict()
2215
2c2bdaeca912 code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
241 c.statuses = []
1677
7276b170ce8b #71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents: 1676
diff changeset
242 c.inline_comments = []
7276b170ce8b #71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents: 1676
diff changeset
243 c.inline_cnt = 0
2995
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
244
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
245 # 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
246 for changeset in c.cs_ranges:
2995
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
247 if method == 'show':
3176
7ec5f9c1df45 show comments from pull requests into associated changesets
Marcin Kuzminski <marcin@python-works.com>
parents: 3141
diff changeset
248 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
249 c.db_repo.repo_id, changeset.raw_id)])
2215
2c2bdaeca912 code-review initial
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
250
4330
773980a93cdd changesets: simplify calculation of PR comments on changesets
Mads Kiilerich <madski@unity3d.com>
parents: 4301
diff changeset
251 # Changeset comments
773980a93cdd changesets: simplify calculation of PR comments on changesets
Mads Kiilerich <madski@unity3d.com>
parents: 4301
diff changeset
252 comments.update((com.comment_id, com)
773980a93cdd changesets: simplify calculation of PR comments on changesets
Mads Kiilerich <madski@unity3d.com>
parents: 4301
diff changeset
253 for com in ChangesetCommentsModel()
773980a93cdd changesets: simplify calculation of PR comments on changesets
Mads Kiilerich <madski@unity3d.com>
parents: 4301
diff changeset
254 .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
255 revision=changeset.raw_id))
3176
7ec5f9c1df45 show comments from pull requests into associated changesets
Marcin Kuzminski <marcin@python-works.com>
parents: 3141
diff changeset
256
4330
773980a93cdd changesets: simplify calculation of PR comments on changesets
Mads Kiilerich <madski@unity3d.com>
parents: 4301
diff changeset
257 # 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
258 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
259 for st in ChangesetStatusModel()
773980a93cdd changesets: simplify calculation of PR comments on changesets
Mads Kiilerich <madski@unity3d.com>
parents: 4301
diff changeset
260 .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
261 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
262 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
263
5598
edb24bc0f71a cleanup: consistent space before line continuation backslash
Mads Kiilerich <madski@unity3d.com>
parents: 5571
diff changeset
264 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
265 .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
266 revision=changeset.raw_id)
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
267 c.inline_comments.extend(inlines)
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
268
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
269 cs2 = changeset.raw_id
4044
af733fa965b0 fixed diffs vs Empty changeset
Marcin Kuzminski <marcin@python-works.com>
parents: 3960
diff changeset
270 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
271 context_lcl = get_line_ctx('', request.GET)
5571
bedb8905c6f8 changeset: drop unused variables
Jiří Suchan <yed@vanyli.net>
parents: 5570
diff changeset
272 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
273
4196
06e49be38d78 Rename rhodecode_repo to db_repo_scm_instance
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4195
diff changeset
274 _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
275 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
276 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
277 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
278 vcs=c.db_repo_scm_instance.alias,
2995
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
279 format='gitdiff',
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
280 diff_limit=diff_limit)
6303
1cf51cd05e36 diff: use list instead of OrderedDict - keep it simple
Mads Kiilerich <madski@unity3d.com>
parents: 6234
diff changeset
281 file_diff_data = []
2995
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
282 if method == 'show':
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
283 _parsed = diff_processor.prepare()
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
284 c.limited_diff = False
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
285 if isinstance(_parsed, LimitedDiffContainer):
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
286 c.limited_diff = True
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
287 for f in _parsed:
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
288 st = f['stats']
3821
ce4b7023a492 diff parser: redefined operations stats for changes
Marcin Kuzminski <marcin@python-works.com>
parents: 3750
diff changeset
289 c.lines_added += st['added']
ce4b7023a492 diff parser: redefined operations stats for changes
Marcin Kuzminski <marcin@python-works.com>
parents: 3750
diff changeset
290 c.lines_deleted += st['deleted']
6192
72acb38da217 diff: minor cleanups
Mads Kiilerich <madski@unity3d.com>
parents: 6041
diff changeset
291 filename = f['filename']
72acb38da217 diff: minor cleanups
Mads Kiilerich <madski@unity3d.com>
parents: 6041
diff changeset
292 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
293 url_fid = h.FID('', filename)
2995
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
294 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
295 parsed_lines=[f])
6303
1cf51cd05e36 diff: use list instead of OrderedDict - keep it simple
Mads Kiilerich <madski@unity3d.com>
parents: 6234
diff changeset
296 file_diff_data.append((fid, url_fid, f['operation'], f['old_filename'], filename, diff, st))
2995
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
297 else:
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
298 # 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
299 diff = diff_processor.as_raw()
6303
1cf51cd05e36 diff: use list instead of OrderedDict - keep it simple
Mads Kiilerich <madski@unity3d.com>
parents: 6234
diff changeset
300 file_diff_data.append(('', None, None, None, 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
301 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
302
6864
7691290837d2 codingstyle: trivial whitespace fixes
Lars Kruse <devel@sumpfralle.de>
parents: 6558
diff changeset
303 # sort comments in creation order
4330
773980a93cdd changesets: simplify calculation of PR comments on changesets
Mads Kiilerich <madski@unity3d.com>
parents: 4301
diff changeset
304 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
305
1677
7276b170ce8b #71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents: 1676
diff changeset
306 # count inline comments
2440
1bc579bcd67a - pull request generates overview based on it's params
Marcin Kuzminski <marcin@python-works.com>
parents: 2439
diff changeset
307 for __, lines in c.inline_comments:
1677
7276b170ce8b #71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents: 1676
diff changeset
308 for comments in lines.values():
7276b170ce8b #71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents: 1676
diff changeset
309 c.inline_cnt += len(comments)
7276b170ce8b #71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents: 1676
diff changeset
310
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
311 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
312 c.changeset = c.cs_ranges[0]
2995
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
313 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
314 for x in c.changeset.parents])
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
315 if method == 'download':
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
316 response.content_type = 'text/plain'
2996
ebe3e388bbb3 new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents: 2995
diff changeset
317 response.content_disposition = 'attachment; filename=%s.diff' \
ebe3e388bbb3 new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents: 2995
diff changeset
318 % revision[:12]
ebe3e388bbb3 new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents: 2995
diff changeset
319 return diff
ebe3e388bbb3 new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents: 2995
diff changeset
320 elif method == 'patch':
ebe3e388bbb3 new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents: 2995
diff changeset
321 response.content_type = 'text/plain'
ebe3e388bbb3 new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents: 2995
diff changeset
322 c.diff = safe_unicode(diff)
ebe3e388bbb3 new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents: 2995
diff changeset
323 return render('changeset/patch_changeset.html')
2995
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
324 elif method == 'raw':
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
325 response.content_type = 'text/plain'
2996
ebe3e388bbb3 new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents: 2995
diff changeset
326 return diff
2995
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
327 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
328 self.__load_data()
2995
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
329 if len(c.cs_ranges) == 1:
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
330 return render('changeset/changeset.html')
32471bd1f4ee Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents: 2978
diff changeset
331 else:
4297
7a5977429125 compare: show how many changesets the compared repo is behind
Mads Kiilerich <madski@unity3d.com>
parents: 4211
diff changeset
332 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
333 c.cs_comments = {}
4352
c733124b6262 pull requests: show graph when displaying PR
Mads Kiilerich <madski@unity3d.com>
parents: 4330
diff changeset
334 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
335 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
336 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
337
3749
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
338 @LoginRequired()
6511
a17c8e5f6712 auth: simplify repository permission checks
Søren Løvborg <sorenl@unity3d.com>
parents: 6452
diff changeset
339 @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
340 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
341 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
342
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
343 @LoginRequired()
6511
a17c8e5f6712 auth: simplify repository permission checks
Søren Løvborg <sorenl@unity3d.com>
parents: 6452
diff changeset
344 @HasRepoPermissionLevelDecorator('read')
2996
ebe3e388bbb3 new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents: 2995
diff changeset
345 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
346 return self._index(revision, method='raw')
2996
ebe3e388bbb3 new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents: 2995
diff changeset
347
3749
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
348 @LoginRequired()
6511
a17c8e5f6712 auth: simplify repository permission checks
Søren Løvborg <sorenl@unity3d.com>
parents: 6452
diff changeset
349 @HasRepoPermissionLevelDecorator('read')
2996
ebe3e388bbb3 new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents: 2995
diff changeset
350 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
351 return self._index(revision, method='patch')
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()
6511
a17c8e5f6712 auth: simplify repository permission checks
Søren Løvborg <sorenl@unity3d.com>
parents: 6452
diff changeset
354 @HasRepoPermissionLevelDecorator('read')
2996
ebe3e388bbb3 new patch function, and urls schema.
Marcin Kuzminski <marcin@python-works.com>
parents: 2995
diff changeset
355 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
356 return self._index(revision, method='download')
1670
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1656
diff changeset
357
3749
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
358 @LoginRequired()
3695
45df84d36b44 Implemented preview for comments
Marcin Kuzminski <marcin@python-works.com>
parents: 3654
diff changeset
359 @NotAnonymous()
6511
a17c8e5f6712 auth: simplify repository permission checks
Søren Løvborg <sorenl@unity3d.com>
parents: 6452
diff changeset
360 @HasRepoPermissionLevelDecorator('read')
2187
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2161
diff changeset
361 @jsonify
1670
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1656
diff changeset
362 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
363 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
364
2296
e5c0f201ca0b Add changeset status change into emails
Marcin Kuzminski <marcin@python-works.com>
parents: 2286
diff changeset
365 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
366 text = request.POST.get('text', '').strip()
2296
e5c0f201ca0b Add changeset status change into emails
Marcin Kuzminski <marcin@python-works.com>
parents: 2286
diff changeset
367
5666
b3ddd87f214f comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents: 5664
diff changeset
368 c.comment = create_comment(
b3ddd87f214f comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents: 5664
diff changeset
369 text,
b3ddd87f214f comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents: 5664
diff changeset
370 status,
2187
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2161
diff changeset
371 revision=revision,
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2161
diff changeset
372 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
373 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
374 )
2217
76947224bf27 Implemented initial code-review status of changesets
Marcin Kuzminski <marcin@python-works.com>
parents: 2216
diff changeset
375
76947224bf27 Implemented initial code-review status of changesets
Marcin Kuzminski <marcin@python-works.com>
parents: 2216
diff changeset
376 # 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
377 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
378 # 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
379 # 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
380 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
381 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
382 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
383 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
384 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
385 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
386 revision=revision,
5667
7834f845505a comments: use inline comment infrastructure for general comments too
Mads Kiilerich <madski@unity3d.com>
parents: 5666
diff changeset
387 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
388 )
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 except StatusChangeOnClosedPullRequestError:
5667
7834f845505a comments: use inline comment infrastructure for general comments too
Mads Kiilerich <madski@unity3d.com>
parents: 5666
diff changeset
390 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
391 raise HTTPBadRequest()
7834f845505a comments: use inline comment infrastructure for general comments too
Mads Kiilerich <madski@unity3d.com>
parents: 5666
diff changeset
392
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
393 action_logger(request.authuser,
2375
bc2d8c03c050 Implemented #467 Journal logs comments on changesets
Marcin Kuzminski <marcin@python-works.com>
parents: 2368
diff changeset
394 '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
395 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
396
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
397 Session().commit()
2375
bc2d8c03c050 Implemented #467 Journal logs comments on changesets
Marcin Kuzminski <marcin@python-works.com>
parents: 2368
diff changeset
398
2187
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2161
diff changeset
399 data = {
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2161
diff changeset
400 '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
401 }
5666
b3ddd87f214f comments: extract common comment creation functionality for changesets and pullrequests
Mads Kiilerich <madski@unity3d.com>
parents: 5664
diff changeset
402 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
403 data.update(c.comment.get_dict())
2188
56e96d4e9f6e white space cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 2187
diff changeset
404 data.update({'rendered_text':
56e96d4e9f6e white space cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 2187
diff changeset
405 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
406
2187
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2161
diff changeset
407 return data
1670
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1656
diff changeset
408
3749
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
409 @LoginRequired()
3695
45df84d36b44 Implemented preview for comments
Marcin Kuzminski <marcin@python-works.com>
parents: 3654
diff changeset
410 @NotAnonymous()
6511
a17c8e5f6712 auth: simplify repository permission checks
Søren Løvborg <sorenl@unity3d.com>
parents: 6452
diff changeset
411 @HasRepoPermissionLevelDecorator('read')
1670
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1656
diff changeset
412 @jsonify
1716
7d1fc253549e notification to commit author + gardening
Marcin Kuzminski <marcin@python-works.com>
parents: 1713
diff changeset
413 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
414 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
415 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
416 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
417 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
418 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
419 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
420 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
421 Session().commit()
1674
6f0143e5efe5 #71 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1670
diff changeset
422 return True
6f0143e5efe5 #71 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1670
diff changeset
423 else:
6f0143e5efe5 #71 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1670
diff changeset
424 raise HTTPForbidden()
2971
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2815
diff changeset
425
3749
b950b884ab87 auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
426 @LoginRequired()
6511
a17c8e5f6712 auth: simplify repository permission checks
Søren Løvborg <sorenl@unity3d.com>
parents: 6452
diff changeset
427 @HasRepoPermissionLevelDecorator('read')
2971
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2815
diff changeset
428 @jsonify
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2815
diff changeset
429 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
430 if request.is_xhr:
b84a4ec93ab6 hanlde stripped or removed changesets on changeset info function
Marcin Kuzminski <marcin@python-works.com>
parents: 2971
diff changeset
431 try:
4196
06e49be38d78 Rename rhodecode_repo to db_repo_scm_instance
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4195
diff changeset
432 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
433 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
434 return EmptyChangeset(message=str(e))
2971
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2815
diff changeset
435 else:
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2815
diff changeset
436 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
437
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4077
diff changeset
438 @LoginRequired()
6511
a17c8e5f6712 auth: simplify repository permission checks
Søren Løvborg <sorenl@unity3d.com>
parents: 6452
diff changeset
439 @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
440 @jsonify
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4077
diff changeset
441 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
442 if request.is_xhr:
4196
06e49be38d78 Rename rhodecode_repo to db_repo_scm_instance
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4195
diff changeset
443 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
444 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
445 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
446 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
447 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
448 else:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4077
diff changeset
449 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
450
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4077
diff changeset
451 @LoginRequired()
6511
a17c8e5f6712 auth: simplify repository permission checks
Søren Løvborg <sorenl@unity3d.com>
parents: 6452
diff changeset
452 @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
453 @jsonify
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4077
diff changeset
454 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
455 if request.is_xhr:
4196
06e49be38d78 Rename rhodecode_repo to db_repo_scm_instance
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4195
diff changeset
456 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
457 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
458 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
459 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
460 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
461 else:
ffd45b185016 Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4077
diff changeset
462 raise HTTPBadRequest()