annotate rhodecode/controllers/changeset.py @ 1688:82e604d3fc46 beta

changeset ranges use new fileid method.
author Marcin Kuzminski <marcin@python-works.com>
date Tue, 15 Nov 2011 00:15:19 +0200
parents 7276b170ce8b
children cac5109ac3b6
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 -*-
30ad41c76fae fixes #79 cut off limit was added into .ini config files
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
2 """
30ad41c76fae fixes #79 cut off limit was added into .ini config files
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
3 rhodecode.controllers.changeset
30ad41c76fae fixes #79 cut off limit was added into .ini config files
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
30ad41c76fae fixes #79 cut off limit was added into .ini config files
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
5
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1131
diff changeset
6 changeset controller for pylons showoing changes beetween
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
7 revisions
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1131
diff changeset
8
812
30ad41c76fae fixes #79 cut off limit was added into .ini config files
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
9 :created_on: Apr 25, 2010
30ad41c76fae fixes #79 cut off limit was added into .ini config files
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
10 :author: marcink
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1131
diff changeset
11 :copyright: (C) 2009-2011 Marcin Kuzminski <marcin@python-works.com>
812
30ad41c76fae fixes #79 cut off limit was added into .ini config files
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
12 :license: GPLv3, see COPYING for more details.
30ad41c76fae fixes #79 cut off limit was added into .ini config files
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
13 """
1206
a671db5bdd58 fixed license issue #149
Marcin Kuzminski <marcin@python-works.com>
parents: 1203
diff changeset
14 # 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
15 # 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
16 # 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
17 # (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
18 #
252
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
19 # 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
20 # 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
21 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
22 # 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
23 #
252
3782a6d698af licensing updates, code cleanups
Marcin Kuzminski <marcin@python-works.com>
parents: 245
diff changeset
24 # 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
25 # along with this program. If not, see <http://www.gnu.org/licenses/>.
812
30ad41c76fae fixes #79 cut off limit was added into .ini config files
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
26 import logging
30ad41c76fae fixes #79 cut off limit was added into .ini config files
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
27 import traceback
30ad41c76fae fixes #79 cut off limit was added into .ini config files
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
28
466
183cee110578 first implementation of #34 changeset raw diff based on udiff from python
Marcin Kuzminski <marcin@python-works.com>
parents: 318
diff changeset
29 from pylons import tmpl_context as c, url, 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
30 from pylons.i18n.translation import _
318
fdf9f6ee5217 Implemented permissions into hg app, secured admin controllers, templates and repository specific controllers
Marcin Kuzminski <marcin@python-works.com>
parents: 285
diff changeset
31 from pylons.controllers.util import redirect
1670
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1656
diff changeset
32 from pylons.decorators import jsonify
812
30ad41c76fae fixes #79 cut off limit was added into .ini config files
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
33
30ad41c76fae fixes #79 cut off limit was added into .ini config files
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
34 import rhodecode.lib.helpers as h
1670
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1656
diff changeset
35 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator, \
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1656
diff changeset
36 NotAnonymous
1045
3fc9183e05dd another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents: 1038
diff changeset
37 from rhodecode.lib.base import BaseRepoController, render
649
3765f0f479a2 fixed raw diff as purly raw without html
Marcin Kuzminski <marcin@python-works.com>
parents: 648
diff changeset
38 from rhodecode.lib.utils import EmptyChangeset
1514
87ec80c280bb fixed issues with python2.5
Marcin Kuzminski <marcin@python-works.com>
parents: 1402
diff changeset
39 from rhodecode.lib.compat import OrderedDict
1670
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1656
diff changeset
40 from rhodecode.model.db import ChangesetComment
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1656
diff changeset
41 from rhodecode.model.comment import ChangesetCommentsModel
812
30ad41c76fae fixes #79 cut off limit was added into .ini config files
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
42
978
6d2239363c81 #93 fixed errors on new revranges generation
Marcin Kuzminski <marcin@python-works.com>
parents: 977
diff changeset
43 from vcs.exceptions import RepositoryError, ChangesetError, \
1670
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1656
diff changeset
44 ChangesetDoesNotExistError
318
fdf9f6ee5217 Implemented permissions into hg app, secured admin controllers, templates and repository specific controllers
Marcin Kuzminski <marcin@python-works.com>
parents: 285
diff changeset
45 from vcs.nodes import FileNode
fdf9f6ee5217 Implemented permissions into hg app, secured admin controllers, templates and repository specific controllers
Marcin Kuzminski <marcin@python-works.com>
parents: 285
diff changeset
46 from vcs.utils import diffs as differ
1674
6f0143e5efe5 #71 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1670
diff changeset
47 from webob.exc import HTTPForbidden
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
48
103
665b344927f4 Added changeset controllers
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
49 log = logging.getLogger(__name__)
665b344927f4 Added changeset controllers
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
50
1212
50e41777675d pep8ify
Marcin Kuzminski <marcin@python-works.com>
parents: 1206
diff changeset
51
1045
3fc9183e05dd another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents: 1038
diff changeset
52 class ChangesetController(BaseRepoController):
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
53
193
50a39f923f31 Added file annotation template. Bumped version to 0.6.8. Changelog and changeset are now cleaned with js, it's still very beta.
Marcin Kuzminski <marcin@python-works.com>
parents: 103
diff changeset
54 @LoginRequired()
318
fdf9f6ee5217 Implemented permissions into hg app, secured admin controllers, templates and repository specific controllers
Marcin Kuzminski <marcin@python-works.com>
parents: 285
diff changeset
55 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write',
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
56 'repository.admin')
103
665b344927f4 Added changeset controllers
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
57 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
58 super(ChangesetController, self).__before__()
1130
1cecc7db3106 fixed some limits in changesets and changelogs
Marcin Kuzminski <marcin@python-works.com>
parents: 1125
diff changeset
59 c.affected_files_cut_off = 60
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
60
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
61 def index(self, revision):
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
62
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
63 def wrap_to_table(str):
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
64
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
65 return '''<table class="code-difftable">
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
66 <tr class="line">
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
67 <td class="lineno new"></td>
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
68 <td class="code"><pre>%s</pre></td>
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
69 </tr>
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
70 </table>''' % str
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
71
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
72 #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
73 rev_range = revision.split('...')[:2]
1670
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1656
diff changeset
74
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
75 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
76 if len(rev_range) == 2:
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
77 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
78 rev_end = rev_range[1]
1107
7bb902022d86 small simplification in changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1082
diff changeset
79 rev_ranges = c.rhodecode_repo.get_changesets(start=rev_start,
7bb902022d86 small simplification in changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1082
diff changeset
80 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
81 else:
1108
899c19b0865c reverted removed list casting
Marcin Kuzminski <marcin@python-works.com>
parents: 1107
diff changeset
82 rev_ranges = [c.rhodecode_repo.get_changeset(revision)]
983
57a2b792a3a1 fixed error for single changeset
Marcin Kuzminski <marcin@python-works.com>
parents: 978
diff changeset
83
57a2b792a3a1 fixed error for single changeset
Marcin Kuzminski <marcin@python-works.com>
parents: 978
diff changeset
84 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
85 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
86 raise RepositoryError('Changeset range returned empty result')
983
57a2b792a3a1 fixed error for single changeset
Marcin Kuzminski <marcin@python-works.com>
parents: 978
diff changeset
87
978
6d2239363c81 #93 fixed errors on new revranges generation
Marcin Kuzminski <marcin@python-works.com>
parents: 977
diff changeset
88 except (RepositoryError, ChangesetDoesNotExistError, Exception), e:
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
89 log.error(traceback.format_exc())
644
c8bd0e6cc3da some changes for #45.
Marcin Kuzminski <marcin@python-works.com>
parents: 636
diff changeset
90 h.flash(str(e), category='warning')
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
91 return redirect(url('home'))
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
92
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
93 c.changes = OrderedDict()
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
94 c.sum_added = 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
95 c.sum_removed = 0
1257
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1212
diff changeset
96 c.lines_added = 0
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1212
diff changeset
97 c.lines_deleted = 0
1280
215a4801bb1e pep8ify + small fixes for followers page + added tooltips for followers
Marcin Kuzminski <marcin@python-works.com>
parents: 1274
diff changeset
98 c.cut_off = False # defines if cut off limit is reached
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
99
1670
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1656
diff changeset
100 c.comments = []
1677
7276b170ce8b #71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents: 1676
diff changeset
101 c.inline_comments = []
7276b170ce8b #71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents: 1676
diff changeset
102 c.inline_cnt = 0
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
103 # 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
104 for changeset in c.cs_ranges:
1675
7c487d2678c7 code refactoring
Marcin Kuzminski <marcin@python-works.com>
parents: 1674
diff changeset
105 c.comments.extend(ChangesetCommentsModel()\
7c487d2678c7 code refactoring
Marcin Kuzminski <marcin@python-works.com>
parents: 1674
diff changeset
106 .get_comments(c.rhodecode_db_repo.repo_id,
7c487d2678c7 code refactoring
Marcin Kuzminski <marcin@python-works.com>
parents: 1674
diff changeset
107 changeset.raw_id))
1677
7276b170ce8b #71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents: 1676
diff changeset
108 inlines = ChangesetCommentsModel()\
7276b170ce8b #71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents: 1676
diff changeset
109 .get_inline_comments(c.rhodecode_db_repo.repo_id,
7276b170ce8b #71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents: 1676
diff changeset
110 changeset.raw_id)
7276b170ce8b #71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents: 1676
diff changeset
111 c.inline_comments.extend(inlines)
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
112 c.changes[changeset.raw_id] = []
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
113 try:
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
114 changeset_parent = changeset.parents[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
115 except IndexError:
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
116 changeset_parent = None
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
117
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
118 #==================================================================
544
d8778cde98f0 added limits to single file diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 543
diff changeset
119 # ADDED FILES
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
120 #==================================================================
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
121 for node in changeset.added:
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
122
566
7fcc539e20b1 large initial commits fixup
Marcin Kuzminski <marcin@python-works.com>
parents: 547
diff changeset
123 filenode_old = FileNode(node.path, '', EmptyChangeset())
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
124 if filenode_old.is_binary or node.is_binary:
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
125 diff = wrap_to_table(_('binary file'))
1259
4209cd4b7823 fixed problem with binary files, and for files that were deleted.
Marcin Kuzminski <marcin@python-works.com>
parents: 1257
diff changeset
126 st = (0, 0)
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
127 else:
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
128 # in this case node.size is good parameter since those are
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
129 # added nodes and their size defines how many changes were
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
130 # made
544
d8778cde98f0 added limits to single file diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 543
diff changeset
131 c.sum_added += node.size
812
30ad41c76fae fixes #79 cut off limit was added into .ini config files
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
132 if c.sum_added < self.cut_off_limit:
1125
ce4287e3e3c9 changed all instances of udiff into gitdiff, for vcs issue #49
Marcin Kuzminski <marcin@python-works.com>
parents: 1108
diff changeset
133 f_gitdiff = differ.get_gitdiff(filenode_old, node)
1257
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1212
diff changeset
134 d = differ.DiffProcessor(f_gitdiff, format='gitdiff')
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
135
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
136 st = d.stat()
1257
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1212
diff changeset
137 diff = d.as_html()
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
138
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
139 else:
1212
50e41777675d pep8ify
Marcin Kuzminski <marcin@python-works.com>
parents: 1206
diff changeset
140 diff = wrap_to_table(_('Changeset is to big and '
50e41777675d pep8ify
Marcin Kuzminski <marcin@python-works.com>
parents: 1206
diff changeset
141 'was cut off, see raw '
50e41777675d pep8ify
Marcin Kuzminski <marcin@python-works.com>
parents: 1206
diff changeset
142 'changeset instead'))
1130
1cecc7db3106 fixed some limits in changesets and changelogs
Marcin Kuzminski <marcin@python-works.com>
parents: 1125
diff changeset
143 c.cut_off = True
1cecc7db3106 fixed some limits in changesets and changelogs
Marcin Kuzminski <marcin@python-works.com>
parents: 1125
diff changeset
144 break
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
145
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
146 cs1 = None
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
147 cs2 = node.last_changeset.raw_id
1257
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1212
diff changeset
148 c.lines_added += st[0]
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1212
diff changeset
149 c.lines_deleted += st[1]
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1212
diff changeset
150 c.changes[changeset.raw_id].append(('added', node, diff,
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1212
diff changeset
151 cs1, cs2, st))
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
152
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
153 #==================================================================
544
d8778cde98f0 added limits to single file diffs
Marcin Kuzminski <marcin@python-works.com>
parents: 543
diff changeset
154 # CHANGED FILES
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
155 #==================================================================
1130
1cecc7db3106 fixed some limits in changesets and changelogs
Marcin Kuzminski <marcin@python-works.com>
parents: 1125
diff changeset
156 if not c.cut_off:
1cecc7db3106 fixed some limits in changesets and changelogs
Marcin Kuzminski <marcin@python-works.com>
parents: 1125
diff changeset
157 for node in changeset.changed:
1cecc7db3106 fixed some limits in changesets and changelogs
Marcin Kuzminski <marcin@python-works.com>
parents: 1125
diff changeset
158 try:
1cecc7db3106 fixed some limits in changesets and changelogs
Marcin Kuzminski <marcin@python-works.com>
parents: 1125
diff changeset
159 filenode_old = changeset_parent.get_node(node.path)
1cecc7db3106 fixed some limits in changesets and changelogs
Marcin Kuzminski <marcin@python-works.com>
parents: 1125
diff changeset
160 except ChangesetError:
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
161 log.warning('Unable to fetch parent node for diff')
1212
50e41777675d pep8ify
Marcin Kuzminski <marcin@python-works.com>
parents: 1206
diff changeset
162 filenode_old = FileNode(node.path, '',
50e41777675d pep8ify
Marcin Kuzminski <marcin@python-works.com>
parents: 1206
diff changeset
163 EmptyChangeset())
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
164
1130
1cecc7db3106 fixed some limits in changesets and changelogs
Marcin Kuzminski <marcin@python-works.com>
parents: 1125
diff changeset
165 if filenode_old.is_binary or node.is_binary:
1cecc7db3106 fixed some limits in changesets and changelogs
Marcin Kuzminski <marcin@python-works.com>
parents: 1125
diff changeset
166 diff = wrap_to_table(_('binary file'))
1259
4209cd4b7823 fixed problem with binary files, and for files that were deleted.
Marcin Kuzminski <marcin@python-works.com>
parents: 1257
diff changeset
167 st = (0, 0)
1130
1cecc7db3106 fixed some limits in changesets and changelogs
Marcin Kuzminski <marcin@python-works.com>
parents: 1125
diff changeset
168 else:
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
169
1130
1cecc7db3106 fixed some limits in changesets and changelogs
Marcin Kuzminski <marcin@python-works.com>
parents: 1125
diff changeset
170 if c.sum_removed < self.cut_off_limit:
1cecc7db3106 fixed some limits in changesets and changelogs
Marcin Kuzminski <marcin@python-works.com>
parents: 1125
diff changeset
171 f_gitdiff = differ.get_gitdiff(filenode_old, node)
1257
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1212
diff changeset
172 d = differ.DiffProcessor(f_gitdiff,
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1212
diff changeset
173 format='gitdiff')
1259
4209cd4b7823 fixed problem with binary files, and for files that were deleted.
Marcin Kuzminski <marcin@python-works.com>
parents: 1257
diff changeset
174 st = d.stat()
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
175 if (st[0] + st[1]) * 256 > self.cut_off_limit:
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
176 diff = wrap_to_table(_('Diff is to big '
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
177 'and was cut off, see '
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
178 'raw diff instead'))
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
179 else:
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
180 diff = d.as_html()
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
181
1130
1cecc7db3106 fixed some limits in changesets and changelogs
Marcin Kuzminski <marcin@python-works.com>
parents: 1125
diff changeset
182 if diff:
1cecc7db3106 fixed some limits in changesets and changelogs
Marcin Kuzminski <marcin@python-works.com>
parents: 1125
diff changeset
183 c.sum_removed += len(diff)
1cecc7db3106 fixed some limits in changesets and changelogs
Marcin Kuzminski <marcin@python-works.com>
parents: 1125
diff changeset
184 else:
1212
50e41777675d pep8ify
Marcin Kuzminski <marcin@python-works.com>
parents: 1206
diff changeset
185 diff = wrap_to_table(_('Changeset is to big and '
50e41777675d pep8ify
Marcin Kuzminski <marcin@python-works.com>
parents: 1206
diff changeset
186 'was cut off, see raw '
50e41777675d pep8ify
Marcin Kuzminski <marcin@python-works.com>
parents: 1206
diff changeset
187 'changeset instead'))
1130
1cecc7db3106 fixed some limits in changesets and changelogs
Marcin Kuzminski <marcin@python-works.com>
parents: 1125
diff changeset
188 c.cut_off = True
1cecc7db3106 fixed some limits in changesets and changelogs
Marcin Kuzminski <marcin@python-works.com>
parents: 1125
diff changeset
189 break
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
190
1130
1cecc7db3106 fixed some limits in changesets and changelogs
Marcin Kuzminski <marcin@python-works.com>
parents: 1125
diff changeset
191 cs1 = filenode_old.last_changeset.raw_id
1cecc7db3106 fixed some limits in changesets and changelogs
Marcin Kuzminski <marcin@python-works.com>
parents: 1125
diff changeset
192 cs2 = node.last_changeset.raw_id
1257
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1212
diff changeset
193 c.lines_added += st[0]
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1212
diff changeset
194 c.lines_deleted += st[1]
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1212
diff changeset
195 c.changes[changeset.raw_id].append(('changed', node, diff,
0a2a10a1912f Implemented --stat for changelog
Marcin Kuzminski <marcin@python-works.com>
parents: 1212
diff changeset
196 cs1, cs2, st))
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
197
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
198 #==================================================================
1203
6832ef664673 source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents: 1131
diff changeset
199 # REMOVED FILES
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
200 #==================================================================
1130
1cecc7db3106 fixed some limits in changesets and changelogs
Marcin Kuzminski <marcin@python-works.com>
parents: 1125
diff changeset
201 if not c.cut_off:
1cecc7db3106 fixed some limits in changesets and changelogs
Marcin Kuzminski <marcin@python-works.com>
parents: 1125
diff changeset
202 for node in changeset.removed:
1212
50e41777675d pep8ify
Marcin Kuzminski <marcin@python-works.com>
parents: 1206
diff changeset
203 c.changes[changeset.raw_id].append(('removed', node, None,
1259
4209cd4b7823 fixed problem with binary files, and for files that were deleted.
Marcin Kuzminski <marcin@python-works.com>
parents: 1257
diff changeset
204 None, None, (0, 0)))
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
205
1677
7276b170ce8b #71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents: 1676
diff changeset
206 # count inline comments
7276b170ce8b #71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents: 1676
diff changeset
207 for path, lines in c.inline_comments:
7276b170ce8b #71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents: 1676
diff changeset
208 for comments in lines.values():
7276b170ce8b #71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents: 1676
diff changeset
209 c.inline_cnt += len(comments)
7276b170ce8b #71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents: 1676
diff changeset
210
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 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
212 c.changeset = c.cs_ranges[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
213 c.changes = c.changes[c.changeset.raw_id]
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
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 return render('changeset/changeset.html')
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
216 else:
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 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
218
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
219 def raw_changeset(self, revision):
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
220
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
221 method = request.GET.get('diff', 'show')
285
42f5c36820ef few validation bugfixes/ new repo changesets, first commit changesets
Marcin Kuzminski <marcin@python-works.com>
parents: 273
diff changeset
222 try:
1045
3fc9183e05dd another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents: 1038
diff changeset
223 c.scm_type = c.rhodecode_repo.alias
3fc9183e05dd another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents: 1038
diff changeset
224 c.changeset = c.rhodecode_repo.get_changeset(revision)
285
42f5c36820ef few validation bugfixes/ new repo changesets, first commit changesets
Marcin Kuzminski <marcin@python-works.com>
parents: 273
diff changeset
225 except RepositoryError:
42f5c36820ef few validation bugfixes/ new repo changesets, first commit changesets
Marcin Kuzminski <marcin@python-works.com>
parents: 273
diff changeset
226 log.error(traceback.format_exc())
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
227 return redirect(url('home'))
285
42f5c36820ef few validation bugfixes/ new repo changesets, first commit changesets
Marcin Kuzminski <marcin@python-works.com>
parents: 273
diff changeset
228 else:
42f5c36820ef few validation bugfixes/ new repo changesets, first commit changesets
Marcin Kuzminski <marcin@python-works.com>
parents: 273
diff changeset
229 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
230 c.changeset_parent = c.changeset.parents[0]
285
42f5c36820ef few validation bugfixes/ new repo changesets, first commit changesets
Marcin Kuzminski <marcin@python-works.com>
parents: 273
diff changeset
231 except IndexError:
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
232 c.changeset_parent = None
285
42f5c36820ef few validation bugfixes/ new repo changesets, first commit changesets
Marcin Kuzminski <marcin@python-works.com>
parents: 273
diff changeset
233 c.changes = []
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
234
285
42f5c36820ef few validation bugfixes/ new repo changesets, first commit changesets
Marcin Kuzminski <marcin@python-works.com>
parents: 273
diff changeset
235 for node in c.changeset.added:
42f5c36820ef few validation bugfixes/ new repo changesets, first commit changesets
Marcin Kuzminski <marcin@python-works.com>
parents: 273
diff changeset
236 filenode_old = FileNode(node.path, '')
42f5c36820ef few validation bugfixes/ new repo changesets, first commit changesets
Marcin Kuzminski <marcin@python-works.com>
parents: 273
diff changeset
237 if filenode_old.is_binary or node.is_binary:
812
30ad41c76fae fixes #79 cut off limit was added into .ini config files
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
238 diff = _('binary file') + '\n'
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
239 else:
1125
ce4287e3e3c9 changed all instances of udiff into gitdiff, for vcs issue #49
Marcin Kuzminski <marcin@python-works.com>
parents: 1108
diff changeset
240 f_gitdiff = differ.get_gitdiff(filenode_old, node)
1212
50e41777675d pep8ify
Marcin Kuzminski <marcin@python-works.com>
parents: 1206
diff changeset
241 diff = differ.DiffProcessor(f_gitdiff,
50e41777675d pep8ify
Marcin Kuzminski <marcin@python-works.com>
parents: 1206
diff changeset
242 format='gitdiff').raw_diff()
466
183cee110578 first implementation of #34 changeset raw diff based on udiff from python
Marcin Kuzminski <marcin@python-works.com>
parents: 318
diff changeset
243
183cee110578 first implementation of #34 changeset raw diff based on udiff from python
Marcin Kuzminski <marcin@python-works.com>
parents: 318
diff changeset
244 cs1 = None
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
245 cs2 = node.last_changeset.raw_id
466
183cee110578 first implementation of #34 changeset raw diff based on udiff from python
Marcin Kuzminski <marcin@python-works.com>
parents: 318
diff changeset
246 c.changes.append(('added', node, diff, cs1, cs2))
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
247
466
183cee110578 first implementation of #34 changeset raw diff based on udiff from python
Marcin Kuzminski <marcin@python-works.com>
parents: 318
diff changeset
248 for node in c.changeset.changed:
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 filenode_old = c.changeset_parent.get_node(node.path)
466
183cee110578 first implementation of #34 changeset raw diff based on udiff from python
Marcin Kuzminski <marcin@python-works.com>
parents: 318
diff changeset
250 if filenode_old.is_binary or node.is_binary:
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
251 diff = _('binary file')
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
252 else:
1125
ce4287e3e3c9 changed all instances of udiff into gitdiff, for vcs issue #49
Marcin Kuzminski <marcin@python-works.com>
parents: 1108
diff changeset
253 f_gitdiff = differ.get_gitdiff(filenode_old, node)
1212
50e41777675d pep8ify
Marcin Kuzminski <marcin@python-works.com>
parents: 1206
diff changeset
254 diff = differ.DiffProcessor(f_gitdiff,
50e41777675d pep8ify
Marcin Kuzminski <marcin@python-works.com>
parents: 1206
diff changeset
255 format='gitdiff').raw_diff()
466
183cee110578 first implementation of #34 changeset raw diff based on udiff from python
Marcin Kuzminski <marcin@python-works.com>
parents: 318
diff changeset
256
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
257 cs1 = filenode_old.last_changeset.raw_id
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
258 cs2 = node.last_changeset.raw_id
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
259 c.changes.append(('changed', node, diff, cs1, cs2))
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
260
466
183cee110578 first implementation of #34 changeset raw diff based on udiff from python
Marcin Kuzminski <marcin@python-works.com>
parents: 318
diff changeset
261 response.content_type = 'text/plain'
812
30ad41c76fae fixes #79 cut off limit was added into .ini config files
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
262
468
9dd372c7166c added menu for changeset raw diff and download diff
Marcin Kuzminski <marcin@python-works.com>
parents: 466
diff changeset
263 if method == 'download':
1212
50e41777675d pep8ify
Marcin Kuzminski <marcin@python-works.com>
parents: 1206
diff changeset
264 response.content_disposition = 'attachment; filename=%s.patch' \
50e41777675d pep8ify
Marcin Kuzminski <marcin@python-works.com>
parents: 1206
diff changeset
265 % revision
812
30ad41c76fae fixes #79 cut off limit was added into .ini config files
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
266
1402
edfbf3ee9965 fixes #217 Seperate Parents on Raw-changeset page
Marcin Kuzminski <marcin@python-works.com>
parents: 1337
diff changeset
267 c.parent_tmpl = ''.join(['# Parent %s\n' % x.raw_id for x in
edfbf3ee9965 fixes #217 Seperate Parents on Raw-changeset page
Marcin Kuzminski <marcin@python-works.com>
parents: 1337
diff changeset
268 c.changeset.parents])
636
ffd07396d315 Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents: 629
diff changeset
269
466
183cee110578 first implementation of #34 changeset raw diff based on udiff from python
Marcin Kuzminski <marcin@python-works.com>
parents: 318
diff changeset
270 c.diffs = ''
183cee110578 first implementation of #34 changeset raw diff based on udiff from python
Marcin Kuzminski <marcin@python-works.com>
parents: 318
diff changeset
271 for x in c.changes:
183cee110578 first implementation of #34 changeset raw diff based on udiff from python
Marcin Kuzminski <marcin@python-works.com>
parents: 318
diff changeset
272 c.diffs += x[2]
812
30ad41c76fae fixes #79 cut off limit was added into .ini config files
Marcin Kuzminski <marcin@python-works.com>
parents: 691
diff changeset
273
466
183cee110578 first implementation of #34 changeset raw diff based on udiff from python
Marcin Kuzminski <marcin@python-works.com>
parents: 318
diff changeset
274 return render('changeset/raw_changeset.html')
1670
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1656
diff changeset
275
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1656
diff changeset
276 def comment(self, repo_name, revision):
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1656
diff changeset
277 ccmodel = ChangesetCommentsModel()
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1656
diff changeset
278
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1656
diff changeset
279 ccmodel.create(text=request.POST.get('text'),
1676
e86191684f4b fixed some anchor id problems for changeset ranges
Marcin Kuzminski <marcin@python-works.com>
parents: 1675
diff changeset
280 repo_id=c.rhodecode_db_repo.repo_id,
e86191684f4b fixed some anchor id problems for changeset ranges
Marcin Kuzminski <marcin@python-works.com>
parents: 1675
diff changeset
281 user_id=c.rhodecode_user.user_id,
e86191684f4b fixed some anchor id problems for changeset ranges
Marcin Kuzminski <marcin@python-works.com>
parents: 1675
diff changeset
282 revision=revision, f_path=request.POST.get('f_path'),
e86191684f4b fixed some anchor id problems for changeset ranges
Marcin Kuzminski <marcin@python-works.com>
parents: 1675
diff changeset
283 line_no=request.POST.get('line'))
1670
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1656
diff changeset
284
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1656
diff changeset
285 return redirect(h.url('changeset_home', repo_name=repo_name,
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1656
diff changeset
286 revision=revision))
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1656
diff changeset
287
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1656
diff changeset
288 @jsonify
d2de0c2f02cd #77 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1656
diff changeset
289 def delete_comment(self, comment_id):
1674
6f0143e5efe5 #71 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1670
diff changeset
290 co = ChangesetComment.get(comment_id)
6f0143e5efe5 #71 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1670
diff changeset
291 if (h.HasPermissionAny('hg.admin', 'repository.admin')() or
6f0143e5efe5 #71 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1670
diff changeset
292 co.author.user_id == c.rhodecode_user.user_id):
6f0143e5efe5 #71 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1670
diff changeset
293 ccmodel = ChangesetCommentsModel()
6f0143e5efe5 #71 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1670
diff changeset
294 ccmodel.delete(comment_id=comment_id)
6f0143e5efe5 #71 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1670
diff changeset
295 return True
6f0143e5efe5 #71 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1670
diff changeset
296 else:
6f0143e5efe5 #71 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1670
diff changeset
297 raise HTTPForbidden()
6f0143e5efe5 #71 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1670
diff changeset
298