Mercurial > kallithea
annotate rhodecode/controllers/files.py @ 4117:6af3e67cc576 rhodecode-2.2.5-gpl
Add Twitter's Bootstrap 3.0.0 CSS and Javascript files, under Apache License 2.0
These files are exactly as they appear the upstream release 3.0.0 of
Bootstrap, which Twitter released under the Apache License 2.0. To extract
these files, I did the following:
I downloaded the following file:
https://github.com/twbs/bootstrap/archive/v3.0.0.zip
with sha256sum of:
$ sha256sum v3.0.0.zip
2d54f345f4abc6bf65ea648c323e9bae577e6febf755650e62555f2d7a222e17 v3.0.0.zip
And extracted from it these two files:
bootstrap-3.0.0/dist/css/bootstrap.css
bootstrap-3.0.0/dist/js/bootstrap.js
which are licensed under the Apache License 2.0.
and placed them into:
rhodecode/public/css/bootstrap.css
rhodecode/public/js/bootstrap.js
respectively.
author | Bradley M. Kuhn <bkuhn@sfconservancy.org> |
---|---|
date | Wed, 02 Jul 2014 19:03:14 -0400 |
parents | ffd45b185016 |
children | 7e5f8c12a3fc |
rev | line source |
---|---|
812
30ad41c76fae
fixes #79 cut off limit was added into .ini config files
Marcin Kuzminski <marcin@python-works.com>
parents:
774
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:
1200
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:
1200
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 """ |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
15 rhodecode.controllers.files |
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 |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
18 Files controller for RhodeCode |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
19 |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
20 :created_on: Apr 21, 2010 |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
21 :author: marcink |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
22 :copyright: (c) 2013 RhodeCode GmbH. |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
23 :license: GPLv3, see LICENSE for more details. |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
24 """ |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
25 |
2291
982d8a80e048
archive file fixes for python 2.5
Marcin Kuzminski <marcin@python-works.com>
parents:
2277
diff
changeset
|
26 from __future__ import with_statement |
1200
3ecaa17d9dea
added os.sep for files controller
Marcin Kuzminski <marcin@python-works.com>
parents:
1190
diff
changeset
|
27 import os |
812
30ad41c76fae
fixes #79 cut off limit was added into .ini config files
Marcin Kuzminski <marcin@python-works.com>
parents:
774
diff
changeset
|
28 import logging |
1305
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
29 import traceback |
2267
b872bc10f4ec
cleanup code of get archive for repositories
Marcin Kuzminski <marcin@python-works.com>
parents:
2255
diff
changeset
|
30 import tempfile |
3490
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
31 import shutil |
812
30ad41c76fae
fixes #79 cut off limit was added into .ini config files
Marcin Kuzminski <marcin@python-works.com>
parents:
774
diff
changeset
|
32 |
1789
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
33 from pylons import request, response, tmpl_context as c, url |
544
d8778cde98f0
added limits to single file diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
512
diff
changeset
|
34 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:
275
diff
changeset
|
35 from pylons.controllers.util import redirect |
3868
e262494ca099
store download archive actions in journal
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
36 from rhodecode.lib.utils import jsonify, action_logger |
812
30ad41c76fae
fixes #79 cut off limit was added into .ini config files
Marcin Kuzminski <marcin@python-works.com>
parents:
774
diff
changeset
|
37 |
2109 | 38 from rhodecode.lib import diffs |
39 from rhodecode.lib import helpers as h | |
1753
1d1ccb873d00
moved soon-to-be-deleted code from vcs to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents:
1752
diff
changeset
|
40 |
4070
008e460c5b9d
fixes issue #860.
Marcin Kuzminski <marcin@python-works.com>
parents:
4060
diff
changeset
|
41 from rhodecode.lib.compat import OrderedDict |
2931
4c7cc3a4c330
fixed issue with show at revision button. Some JS were not properly loaded due to ajaxified files view.
Marcin Kuzminski <marcin@python-works.com>
parents:
2930
diff
changeset
|
42 from rhodecode.lib.utils2 import convert_line_endings, detect_mode, safe_str,\ |
4c7cc3a4c330
fixed issue with show at revision button. Some JS were not properly loaded due to ajaxified files view.
Marcin Kuzminski <marcin@python-works.com>
parents:
2930
diff
changeset
|
43 str2bool |
1305
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
44 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator |
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
45 from rhodecode.lib.base import BaseRepoController, render |
2684
2b6939a77052
Bumped mercurial version to 2.3
Marcin Kuzminski <marcin@python-works.com>
parents:
2570
diff
changeset
|
46 from rhodecode.lib.vcs.backends.base import EmptyChangeset |
2109 | 47 from rhodecode.lib.vcs.conf import settings |
48 from rhodecode.lib.vcs.exceptions import RepositoryError, \ | |
49 ChangesetDoesNotExistError, EmptyRepositoryError, \ | |
2977
cff9d4e1d821
Fixed issue when node didn't exists at 'tip' and we tried calculate history based on that assumption.
Marcin Kuzminski <marcin@python-works.com>
parents:
2973
diff
changeset
|
50 ImproperArchiveTypeError, VCSError, NodeAlreadyExistsError,\ |
3037
789f20683559
fix error when diff path is a directory, edge case generated by google bots
Marcin Kuzminski <marcin@python-works.com>
parents:
3009
diff
changeset
|
51 NodeDoesNotExistError, ChangesetError, NodeError |
2109 | 52 from rhodecode.lib.vcs.nodes import FileNode |
53 | |
1305
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
54 from rhodecode.model.repo import RepoModel |
2109 | 55 from rhodecode.model.scm import ScmModel |
2255
95800dad44d0
fixes for tests on Windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2199
diff
changeset
|
56 from rhodecode.model.db import Repository |
2109 | 57 |
1789
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
58 from rhodecode.controllers.changeset import anchor_url, _ignorews_url,\ |
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
59 _context_url, get_line_ctx, get_ignore_ws |
3621
fe012b7df29d
missing files or bad files revisions should return 404s not redirects - ref #808
Marcin Kuzminski <marcin@python-works.com>
parents:
3591
diff
changeset
|
60 from webob.exc import HTTPNotFound |
4070
008e460c5b9d
fixes issue #860.
Marcin Kuzminski <marcin@python-works.com>
parents:
4060
diff
changeset
|
61 from rhodecode.lib.exceptions import NonRelativePathError, IMCCommitError |
2109 | 62 |
1305
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
63 |
93
aec4c0071cb3
added empty controllers for branches tags files graph, routing and test for them
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
64 log = logging.getLogger(__name__) |
aec4c0071cb3
added empty controllers for branches tags files graph, routing and test for them
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
65 |
1134
1dc5d169e85a
fixed issue with vcs stream
Marcin Kuzminski <marcin@python-works.com>
parents:
1132
diff
changeset
|
66 |
1045
3fc9183e05dd
another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents:
1044
diff
changeset
|
67 class FilesController(BaseRepoController): |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
68 |
99
5b57295601b6
Updated basic files browser with, pygments
Marcin Kuzminski <marcin@python-works.com>
parents:
93
diff
changeset
|
69 def __before__(self): |
191
b68b2246e5a6
Authenticated controller with LoginRequired decorator, and cleaned __before__ (used in baseController now). fixed User for clone url with logged in session user.
Marcin Kuzminski <marcin@python-works.com>
parents:
160
diff
changeset
|
70 super(FilesController, self).__before__() |
813
e8b5be26fb78
fixed small issue made on latest patches
Marcin Kuzminski <marcin@python-works.com>
parents:
812
diff
changeset
|
71 c.cut_off_limit = self.cut_off_limit |
93
aec4c0071cb3
added empty controllers for branches tags files graph, routing and test for them
Marcin Kuzminski <marcin@python-works.com>
parents:
diff
changeset
|
72 |
1483
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
73 def __get_cs_or_redirect(self, rev, repo_name, redirect_after=True): |
1045
3fc9183e05dd
another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents:
1044
diff
changeset
|
74 """ |
1137
82344ce0a892
clean and fixes in files controller
Marcin Kuzminski <marcin@python-works.com>
parents:
1134
diff
changeset
|
75 Safe way to get changeset if error occur it redirects to tip with |
82344ce0a892
clean and fixes in files controller
Marcin Kuzminski <marcin@python-works.com>
parents:
1134
diff
changeset
|
76 proper message |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1200
diff
changeset
|
77 |
1045
3fc9183e05dd
another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents:
1044
diff
changeset
|
78 :param rev: revision to fetch |
3fc9183e05dd
another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents:
1044
diff
changeset
|
79 :param repo_name: repo name to redirect after |
3fc9183e05dd
another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents:
1044
diff
changeset
|
80 """ |
3fc9183e05dd
another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents:
1044
diff
changeset
|
81 |
3fc9183e05dd
another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents:
1044
diff
changeset
|
82 try: |
3fc9183e05dd
another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents:
1044
diff
changeset
|
83 return c.rhodecode_repo.get_changeset(rev) |
3fc9183e05dd
another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents:
1044
diff
changeset
|
84 except EmptyRepositoryError, e: |
1483
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
85 if not redirect_after: |
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
86 return None |
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
87 url_ = url('files_add_home', |
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
88 repo_name=c.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
|
89 revision=0, f_path='', anchor='edit') |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
90 add_new = h.link_to(_('Click here to add new file'), url_, class_="alert-link") |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
91 h.flash(h.literal(_('There are no files yet. %s') % add_new), |
1483
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
92 category='warning') |
1045
3fc9183e05dd
another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents:
1044
diff
changeset
|
93 redirect(h.url('summary_home', repo_name=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
|
94 except(ChangesetDoesNotExistError, LookupError), e: |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
95 log.error(traceback.format_exc()) |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
96 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
|
97 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
|
98 raise HTTPNotFound() |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
99 except RepositoryError, e: |
4077
0e1023147334
Use safe_str on flash messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
4072
diff
changeset
|
100 h.flash(safe_str(e), category='error') |
3621
fe012b7df29d
missing files or bad files revisions should return 404s not redirects - ref #808
Marcin Kuzminski <marcin@python-works.com>
parents:
3591
diff
changeset
|
101 raise HTTPNotFound() |
1045
3fc9183e05dd
another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents:
1044
diff
changeset
|
102 |
1189
a4e1b955fe07
fixes for rawfile, annotation, download. It will check now if it's a filenode.
Marcin Kuzminski <marcin@python-works.com>
parents:
1151
diff
changeset
|
103 def __get_filenode_or_redirect(self, repo_name, cs, path): |
a4e1b955fe07
fixes for rawfile, annotation, download. It will check now if it's a filenode.
Marcin Kuzminski <marcin@python-works.com>
parents:
1151
diff
changeset
|
104 """ |
a4e1b955fe07
fixes for rawfile, annotation, download. It will check now if it's a filenode.
Marcin Kuzminski <marcin@python-works.com>
parents:
1151
diff
changeset
|
105 Returns file_node, if error occurs or given path is directory, |
a4e1b955fe07
fixes for rawfile, annotation, download. It will check now if it's a filenode.
Marcin Kuzminski <marcin@python-works.com>
parents:
1151
diff
changeset
|
106 it'll redirect to top level path |
1203
6832ef664673
source code cleanup: remove trailing white space, normalize file endings
Marcin Kuzminski <marcin@python-works.com>
parents:
1200
diff
changeset
|
107 |
1189
a4e1b955fe07
fixes for rawfile, annotation, download. It will check now if it's a filenode.
Marcin Kuzminski <marcin@python-works.com>
parents:
1151
diff
changeset
|
108 :param repo_name: repo_name |
a4e1b955fe07
fixes for rawfile, annotation, download. It will check now if it's a filenode.
Marcin Kuzminski <marcin@python-works.com>
parents:
1151
diff
changeset
|
109 :param cs: given changeset |
a4e1b955fe07
fixes for rawfile, annotation, download. It will check now if it's a filenode.
Marcin Kuzminski <marcin@python-works.com>
parents:
1151
diff
changeset
|
110 :param path: path to lookup |
a4e1b955fe07
fixes for rawfile, annotation, download. It will check now if it's a filenode.
Marcin Kuzminski <marcin@python-works.com>
parents:
1151
diff
changeset
|
111 """ |
a4e1b955fe07
fixes for rawfile, annotation, download. It will check now if it's a filenode.
Marcin Kuzminski <marcin@python-works.com>
parents:
1151
diff
changeset
|
112 |
a4e1b955fe07
fixes for rawfile, annotation, download. It will check now if it's a filenode.
Marcin Kuzminski <marcin@python-works.com>
parents:
1151
diff
changeset
|
113 try: |
a4e1b955fe07
fixes for rawfile, annotation, download. It will check now if it's a filenode.
Marcin Kuzminski <marcin@python-works.com>
parents:
1151
diff
changeset
|
114 file_node = cs.get_node(path) |
a4e1b955fe07
fixes for rawfile, annotation, download. It will check now if it's a filenode.
Marcin Kuzminski <marcin@python-works.com>
parents:
1151
diff
changeset
|
115 if file_node.is_dir(): |
a4e1b955fe07
fixes for rawfile, annotation, download. It will check now if it's a filenode.
Marcin Kuzminski <marcin@python-works.com>
parents:
1151
diff
changeset
|
116 raise RepositoryError('given path is a directory') |
4116
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
117 except(ChangesetDoesNotExistError,), e: |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
118 log.error(traceback.format_exc()) |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
119 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
|
120 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
|
121 raise HTTPNotFound() |
1189
a4e1b955fe07
fixes for rawfile, annotation, download. It will check now if it's a filenode.
Marcin Kuzminski <marcin@python-works.com>
parents:
1151
diff
changeset
|
122 except RepositoryError, e: |
4077
0e1023147334
Use safe_str on flash messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
4072
diff
changeset
|
123 h.flash(safe_str(e), category='error') |
3621
fe012b7df29d
missing files or bad files revisions should return 404s not redirects - ref #808
Marcin Kuzminski <marcin@python-works.com>
parents:
3591
diff
changeset
|
124 raise HTTPNotFound() |
1189
a4e1b955fe07
fixes for rawfile, annotation, download. It will check now if it's a filenode.
Marcin Kuzminski <marcin@python-works.com>
parents:
1151
diff
changeset
|
125 |
a4e1b955fe07
fixes for rawfile, annotation, download. It will check now if it's a filenode.
Marcin Kuzminski <marcin@python-works.com>
parents:
1151
diff
changeset
|
126 return file_node |
a4e1b955fe07
fixes for rawfile, annotation, download. It will check now if it's a filenode.
Marcin Kuzminski <marcin@python-works.com>
parents:
1151
diff
changeset
|
127 |
2457
01e005cabd4d
moved login required into seperate calls for files due to optional API access option
Marcin Kuzminski <marcin@python-works.com>
parents:
2456
diff
changeset
|
128 @LoginRequired() |
1305
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
129 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
130 'repository.admin') |
2177
ee07357d9265
unified annotation view with file source view
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
131 def index(self, repo_name, revision, f_path, annotate=False): |
1789
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
132 # redirect to given revision from form if given |
1137
82344ce0a892
clean and fixes in files controller
Marcin Kuzminski <marcin@python-works.com>
parents:
1134
diff
changeset
|
133 post_revision = request.POST.get('at_rev', None) |
82344ce0a892
clean and fixes in files controller
Marcin Kuzminski <marcin@python-works.com>
parents:
1134
diff
changeset
|
134 if post_revision: |
1224
e76833cd555a
files: fixes error when passing a diff without parameters and caused server crash
Marcin Kuzminski <marcin@python-works.com>
parents:
1212
diff
changeset
|
135 cs = self.__get_cs_or_redirect(post_revision, repo_name) |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
136 |
1137
82344ce0a892
clean and fixes in files controller
Marcin Kuzminski <marcin@python-works.com>
parents:
1134
diff
changeset
|
137 c.changeset = self.__get_cs_or_redirect(revision, repo_name) |
82344ce0a892
clean and fixes in files controller
Marcin Kuzminski <marcin@python-works.com>
parents:
1134
diff
changeset
|
138 c.branch = request.GET.get('branch', None) |
82344ce0a892
clean and fixes in files controller
Marcin Kuzminski <marcin@python-works.com>
parents:
1134
diff
changeset
|
139 c.f_path = f_path |
2177
ee07357d9265
unified annotation view with file source view
Marcin Kuzminski <marcin@python-works.com>
parents:
2109
diff
changeset
|
140 c.annotate = annotate |
3237
f5dd76e2a7af
disable file editing when not on branch head fixes issue #462
Marcin Kuzminski <marcin@python-works.com>
parents:
3061
diff
changeset
|
141 c.changeset = self.__get_cs_or_redirect(revision, repo_name) |
1137
82344ce0a892
clean and fixes in files controller
Marcin Kuzminski <marcin@python-works.com>
parents:
1134
diff
changeset
|
142 cur_rev = c.changeset.revision |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
143 |
1789
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
144 # prev link |
1137
82344ce0a892
clean and fixes in files controller
Marcin Kuzminski <marcin@python-works.com>
parents:
1134
diff
changeset
|
145 try: |
82344ce0a892
clean and fixes in files controller
Marcin Kuzminski <marcin@python-works.com>
parents:
1134
diff
changeset
|
146 prev_rev = c.rhodecode_repo.get_changeset(cur_rev).prev(c.branch) |
82344ce0a892
clean and fixes in files controller
Marcin Kuzminski <marcin@python-works.com>
parents:
1134
diff
changeset
|
147 c.url_prev = url('files_home', repo_name=c.repo_name, |
82344ce0a892
clean and fixes in files controller
Marcin Kuzminski <marcin@python-works.com>
parents:
1134
diff
changeset
|
148 revision=prev_rev.raw_id, f_path=f_path) |
82344ce0a892
clean and fixes in files controller
Marcin Kuzminski <marcin@python-works.com>
parents:
1134
diff
changeset
|
149 if c.branch: |
82344ce0a892
clean and fixes in files controller
Marcin Kuzminski <marcin@python-works.com>
parents:
1134
diff
changeset
|
150 c.url_prev += '?branch=%s' % c.branch |
82344ce0a892
clean and fixes in files controller
Marcin Kuzminski <marcin@python-works.com>
parents:
1134
diff
changeset
|
151 except (ChangesetDoesNotExistError, VCSError): |
82344ce0a892
clean and fixes in files controller
Marcin Kuzminski <marcin@python-works.com>
parents:
1134
diff
changeset
|
152 c.url_prev = '#' |
883
20ed6f6a6329
Changed prev/next in file browser to new vcs methods
Marcin Kuzminski <marcin@python-works.com>
parents:
872
diff
changeset
|
153 |
1789
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
154 # next link |
1137
82344ce0a892
clean and fixes in files controller
Marcin Kuzminski <marcin@python-works.com>
parents:
1134
diff
changeset
|
155 try: |
82344ce0a892
clean and fixes in files controller
Marcin Kuzminski <marcin@python-works.com>
parents:
1134
diff
changeset
|
156 next_rev = c.rhodecode_repo.get_changeset(cur_rev).next(c.branch) |
82344ce0a892
clean and fixes in files controller
Marcin Kuzminski <marcin@python-works.com>
parents:
1134
diff
changeset
|
157 c.url_next = url('files_home', repo_name=c.repo_name, |
82344ce0a892
clean and fixes in files controller
Marcin Kuzminski <marcin@python-works.com>
parents:
1134
diff
changeset
|
158 revision=next_rev.raw_id, f_path=f_path) |
82344ce0a892
clean and fixes in files controller
Marcin Kuzminski <marcin@python-works.com>
parents:
1134
diff
changeset
|
159 if c.branch: |
82344ce0a892
clean and fixes in files controller
Marcin Kuzminski <marcin@python-works.com>
parents:
1134
diff
changeset
|
160 c.url_next += '?branch=%s' % c.branch |
82344ce0a892
clean and fixes in files controller
Marcin Kuzminski <marcin@python-works.com>
parents:
1134
diff
changeset
|
161 except (ChangesetDoesNotExistError, VCSError): |
82344ce0a892
clean and fixes in files controller
Marcin Kuzminski <marcin@python-works.com>
parents:
1134
diff
changeset
|
162 c.url_next = '#' |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
163 |
1789
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
164 # files or dirs |
1137
82344ce0a892
clean and fixes in files controller
Marcin Kuzminski <marcin@python-works.com>
parents:
1134
diff
changeset
|
165 try: |
1737
61eda8bf70d0
new files views
Marcin Kuzminski <marcin@python-works.com>
parents:
1664
diff
changeset
|
166 c.file = c.changeset.get_node(f_path) |
1190
0d7a127e6449
use cs get history instead of node.history, node history have to much reference calls
Marcin Kuzminski <marcin@python-works.com>
parents:
1189
diff
changeset
|
167 |
1737
61eda8bf70d0
new files views
Marcin Kuzminski <marcin@python-works.com>
parents:
1664
diff
changeset
|
168 if c.file.is_file(): |
3001
37c7abd34d44
implements #636, lazy loading of history and authors to speed up page responsiveness.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
169 c.load_full_history = False |
37c7abd34d44
implements #636, lazy loading of history and authors to speed up page responsiveness.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
170 file_last_cs = c.file.last_changeset |
37c7abd34d44
implements #636, lazy loading of history and authors to speed up page responsiveness.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
171 c.file_changeset = (c.changeset |
37c7abd34d44
implements #636, lazy loading of history and authors to speed up page responsiveness.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
172 if c.changeset.revision < file_last_cs.revision |
37c7abd34d44
implements #636, lazy loading of history and authors to speed up page responsiveness.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
173 else file_last_cs) |
3237
f5dd76e2a7af
disable file editing when not on branch head fixes issue #462
Marcin Kuzminski <marcin@python-works.com>
parents:
3061
diff
changeset
|
174 #determine if we're on branch head |
f5dd76e2a7af
disable file editing when not on branch head fixes issue #462
Marcin Kuzminski <marcin@python-works.com>
parents:
3061
diff
changeset
|
175 _branches = c.rhodecode_repo.branches |
3267
7b74079beec9
coding style: fix trailing and leading spaces and tabs
Mads Kiilerich <madski@unity3d.com>
parents:
3237
diff
changeset
|
176 c.on_branch_head = revision in _branches.keys() + _branches.values() |
3001
37c7abd34d44
implements #636, lazy loading of history and authors to speed up page responsiveness.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
177 _hist = [] |
37c7abd34d44
implements #636, lazy loading of history and authors to speed up page responsiveness.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
178 c.file_history = [] |
37c7abd34d44
implements #636, lazy loading of history and authors to speed up page responsiveness.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
179 if c.load_full_history: |
37c7abd34d44
implements #636, lazy loading of history and authors to speed up page responsiveness.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
180 c.file_history, _hist = self._get_node_history(c.changeset, f_path) |
37c7abd34d44
implements #636, lazy loading of history and authors to speed up page responsiveness.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
181 |
2456
51b203e44202
Add authors into file view
Marcin Kuzminski <marcin@python-works.com>
parents:
2428
diff
changeset
|
182 c.authors = [] |
51b203e44202
Add authors into file view
Marcin Kuzminski <marcin@python-works.com>
parents:
2428
diff
changeset
|
183 for a in set([x.author for x in _hist]): |
51b203e44202
Add authors into file view
Marcin Kuzminski <marcin@python-works.com>
parents:
2428
diff
changeset
|
184 c.authors.append((h.email(a), h.person(a))) |
1190
0d7a127e6449
use cs get history instead of node.history, node history have to much reference calls
Marcin Kuzminski <marcin@python-works.com>
parents:
1189
diff
changeset
|
185 else: |
2456
51b203e44202
Add authors into file view
Marcin Kuzminski <marcin@python-works.com>
parents:
2428
diff
changeset
|
186 c.authors = c.file_history = [] |
644
c8bd0e6cc3da
some changes for #45.
Marcin Kuzminski <marcin@python-works.com>
parents:
636
diff
changeset
|
187 except RepositoryError, e: |
4077
0e1023147334
Use safe_str on flash messages.
Marcin Kuzminski <marcin@python-works.com>
parents:
4072
diff
changeset
|
188 h.flash(safe_str(e), category='error') |
3621
fe012b7df29d
missing files or bad files revisions should return 404s not redirects - ref #808
Marcin Kuzminski <marcin@python-works.com>
parents:
3591
diff
changeset
|
189 raise HTTPNotFound() |
644
c8bd0e6cc3da
some changes for #45.
Marcin Kuzminski <marcin@python-works.com>
parents:
636
diff
changeset
|
190 |
2686
269c6e0b54cc
Reimplemented file-browser using partial-ajax
Marcin Kuzminski <marcin@python-works.com>
parents:
2684
diff
changeset
|
191 if request.environ.get('HTTP_X_PARTIAL_XHR'): |
269c6e0b54cc
Reimplemented file-browser using partial-ajax
Marcin Kuzminski <marcin@python-works.com>
parents:
2684
diff
changeset
|
192 return render('files/files_ypjax.html') |
269c6e0b54cc
Reimplemented file-browser using partial-ajax
Marcin Kuzminski <marcin@python-works.com>
parents:
2684
diff
changeset
|
193 |
128
9deb6f1d5b90
Implemented file history.
Marcin Kuzminski <marcin@python-works.com>
parents:
106
diff
changeset
|
194 return render('files/files.html') |
9deb6f1d5b90
Implemented file history.
Marcin Kuzminski <marcin@python-works.com>
parents:
106
diff
changeset
|
195 |
3749
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3654
diff
changeset
|
196 @LoginRequired() |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3654
diff
changeset
|
197 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
b950b884ab87
auth decorators are not used anymore on __before__
Marcin Kuzminski <marcin@python-works.com>
parents:
3654
diff
changeset
|
198 'repository.admin') |
4116
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
199 @jsonify |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
200 def history(self, repo_name, revision, f_path): |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
201 changeset = self.__get_cs_or_redirect(revision, repo_name) |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
202 f_path = f_path |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
203 _file = changeset.get_node(f_path) |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
204 if _file.is_file(): |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
205 file_history, _hist = self._get_node_history(changeset, f_path) |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
206 |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
207 res = [] |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
208 for obj in file_history: |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
209 res.append({ |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
210 'text': obj[1], |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
211 'children': [{'id': o[0], 'text': o[1]} for o in obj[0]] |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
212 }) |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
213 |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
214 data = { |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
215 'more': False, |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
216 'results': res |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
217 } |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
218 return data |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
219 |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
220 @LoginRequired() |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
221 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
222 'repository.admin') |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
223 def authors(self, repo_name, revision, f_path): |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
224 changeset = self.__get_cs_or_redirect(revision, repo_name) |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
225 f_path = f_path |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
226 _file = changeset.get_node(f_path) |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
227 if _file.is_file(): |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
228 file_history, _hist = self._get_node_history(changeset, f_path) |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
229 c.authors = [] |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
230 for a in set([x.author for x in _hist]): |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
231 c.authors.append((h.email(a), h.person(a))) |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
232 return render('files/files_history_box.html') |
3001
37c7abd34d44
implements #636, lazy loading of history and authors to speed up page responsiveness.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
233 |
2457
01e005cabd4d
moved login required into seperate calls for files due to optional API access option
Marcin Kuzminski <marcin@python-works.com>
parents:
2456
diff
changeset
|
234 @LoginRequired() |
1305
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
235 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
236 'repository.admin') |
147
873fd2dc62c2
Added rawfile support, and few fixes for file
Marcin Kuzminski <marcin@python-works.com>
parents:
145
diff
changeset
|
237 def rawfile(self, repo_name, revision, f_path): |
1137
82344ce0a892
clean and fixes in files controller
Marcin Kuzminski <marcin@python-works.com>
parents:
1134
diff
changeset
|
238 cs = self.__get_cs_or_redirect(revision, repo_name) |
1189
a4e1b955fe07
fixes for rawfile, annotation, download. It will check now if it's a filenode.
Marcin Kuzminski <marcin@python-works.com>
parents:
1151
diff
changeset
|
239 file_node = self.__get_filenode_or_redirect(repo_name, cs, f_path) |
1045
3fc9183e05dd
another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents:
1044
diff
changeset
|
240 |
1189
a4e1b955fe07
fixes for rawfile, annotation, download. It will check now if it's a filenode.
Marcin Kuzminski <marcin@python-works.com>
parents:
1151
diff
changeset
|
241 response.content_disposition = 'attachment; filename=%s' % \ |
2255
95800dad44d0
fixes for tests on Windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2199
diff
changeset
|
242 safe_str(f_path.split(Repository.url_sep())[-1]) |
1189
a4e1b955fe07
fixes for rawfile, annotation, download. It will check now if it's a filenode.
Marcin Kuzminski <marcin@python-works.com>
parents:
1151
diff
changeset
|
243 |
160
0f7f93df5802
implemented rawdiff and diff download into diff view.
Marcin Kuzminski <marcin@python-works.com>
parents:
158
diff
changeset
|
244 response.content_type = file_node.mimetype |
147
873fd2dc62c2
Added rawfile support, and few fixes for file
Marcin Kuzminski <marcin@python-works.com>
parents:
145
diff
changeset
|
245 return file_node.content |
2461
015a42e970a6
whitespace cleanup
Marcin Kuzminski <marcin@python-works.com>
parents:
2457
diff
changeset
|
246 |
2457
01e005cabd4d
moved login required into seperate calls for files due to optional API access option
Marcin Kuzminski <marcin@python-works.com>
parents:
2456
diff
changeset
|
247 @LoginRequired() |
1305
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
248 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
249 'repository.admin') |
485
9836541b0509
added limit for showing pygemntized source codes larger than 250kb.
Marcin Kuzminski <marcin@python-works.com>
parents:
438
diff
changeset
|
250 def raw(self, repo_name, revision, f_path): |
1137
82344ce0a892
clean and fixes in files controller
Marcin Kuzminski <marcin@python-works.com>
parents:
1134
diff
changeset
|
251 cs = self.__get_cs_or_redirect(revision, repo_name) |
1189
a4e1b955fe07
fixes for rawfile, annotation, download. It will check now if it's a filenode.
Marcin Kuzminski <marcin@python-works.com>
parents:
1151
diff
changeset
|
252 file_node = self.__get_filenode_or_redirect(repo_name, cs, f_path) |
1045
3fc9183e05dd
another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents:
1044
diff
changeset
|
253 |
1241
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
254 raw_mimetype_mapping = { |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
255 # map original mimetype to a mimetype used for "show as raw" |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
256 # you can also provide a content-disposition to override the |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
257 # default "attachment" disposition. |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
258 # orig_type: (new_type, new_dispo) |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
259 |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
260 # show images inline: |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
261 'image/x-icon': ('image/x-icon', 'inline'), |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
262 'image/png': ('image/png', 'inline'), |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
263 'image/gif': ('image/gif', 'inline'), |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
264 'image/jpeg': ('image/jpeg', 'inline'), |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
265 'image/svg+xml': ('image/svg+xml', 'inline'), |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
266 } |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
267 |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
268 mimetype = file_node.mimetype |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
269 try: |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
270 mimetype, dispo = raw_mimetype_mapping[mimetype] |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
271 except KeyError: |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
272 # we don't know anything special about this, handle it safely |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
273 if file_node.is_binary: |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
274 # do same as download raw for binary files |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
275 mimetype, dispo = 'application/octet-stream', 'attachment' |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
276 else: |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
277 # do not just use the original mimetype, but force text/plain, |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
278 # otherwise it would serve text/html and that might be unsafe. |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
279 # Note: underlying vcs library fakes text/plain mimetype if the |
1245
5f2fbab7c429
PEP8ify - controllers
Marcin Kuzminski <marcin@python-works.com>
parents:
1241
diff
changeset
|
280 # mimetype can not be determined and it thinks it is not |
5f2fbab7c429
PEP8ify - controllers
Marcin Kuzminski <marcin@python-works.com>
parents:
1241
diff
changeset
|
281 # binary.This might lead to erroneous text display in some |
5f2fbab7c429
PEP8ify - controllers
Marcin Kuzminski <marcin@python-works.com>
parents:
1241
diff
changeset
|
282 # cases, but helps in other cases, like with text files |
5f2fbab7c429
PEP8ify - controllers
Marcin Kuzminski <marcin@python-works.com>
parents:
1241
diff
changeset
|
283 # without extension. |
1241
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
284 mimetype, dispo = 'text/plain', 'inline' |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
285 |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
286 if dispo == 'attachment': |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
287 dispo = 'attachment; filename=%s' % \ |
1401
b7563ad4e7ee
Unicode fixes, added safe_str method for global str() operations +better test sandboxing
Marcin Kuzminski <marcin@python-works.com>
parents:
1313
diff
changeset
|
288 safe_str(f_path.split(os.sep)[-1]) |
1241
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
289 |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
290 response.content_disposition = dispo |
ed5270522724
changed raw action to show images instead of saying about binary file
Marcin Kuzminski <marcin@python-works.com>
parents:
1224
diff
changeset
|
291 response.content_type = mimetype |
485
9836541b0509
added limit for showing pygemntized source codes larger than 250kb.
Marcin Kuzminski <marcin@python-works.com>
parents:
438
diff
changeset
|
292 return file_node.content |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
293 |
2457
01e005cabd4d
moved login required into seperate calls for files due to optional API access option
Marcin Kuzminski <marcin@python-works.com>
parents:
2456
diff
changeset
|
294 @LoginRequired() |
1305
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
295 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin') |
4116
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
296 def delete(self, repo_name, revision, f_path): |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
297 repo = c.rhodecode_db_repo |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
298 if repo.enable_locking and repo.locked[0]: |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
299 h.flash(_('This repository is has been locked by %s on %s') |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
300 % (h.person_by_id(repo.locked[0]), |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
301 h.fmt_date(h.time_to_datetime(repo.locked[1]))), |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
302 'warning') |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
303 return redirect(h.url('files_home', |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
304 repo_name=repo_name, revision='tip')) |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
305 |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
306 # check if revision is a branch identifier- basically we cannot |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
307 # create multiple heads via file editing |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
308 _branches = repo.scm_instance.branches |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
309 # check if revision is a branch name or branch hash |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
310 if revision not in _branches.keys() + _branches.values(): |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
311 h.flash(_('You can only delete files with revision ' |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
312 'being a valid branch '), category='warning') |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
313 return redirect(h.url('files_home', |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
314 repo_name=repo_name, revision='tip', |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
315 f_path=f_path)) |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
316 |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
317 r_post = request.POST |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
318 |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
319 c.cs = self.__get_cs_or_redirect(revision, repo_name) |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
320 c.file = self.__get_filenode_or_redirect(repo_name, c.cs, f_path) |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
321 |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
322 c.default_message = _('Deleted file %s via RhodeCode') % (f_path) |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
323 c.f_path = f_path |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
324 node_path = f_path |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
325 author = self.rhodecode_user.full_contact |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
326 |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
327 if r_post: |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
328 message = r_post.get('message') or c.default_message |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
329 |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
330 try: |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
331 nodes = { |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
332 node_path: { |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
333 'content': '' |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
334 } |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
335 } |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
336 self.scm_model.delete_nodes( |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
337 user=c.rhodecode_user.user_id, repo=c.rhodecode_db_repo, |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
338 message=message, |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
339 nodes=nodes, |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
340 parent_cs=c.cs, |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
341 author=author, |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
342 ) |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
343 |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
344 h.flash(_('Successfully deleted file %s') % f_path, |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
345 category='success') |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
346 except Exception: |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
347 log.error(traceback.format_exc()) |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
348 h.flash(_('Error occurred during commit'), 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
|
349 return redirect(url('changeset_home', |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
350 repo_name=c.repo_name, revision='tip')) |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
351 |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
352 return render('files/files_delete.html') |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
353 |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
354 @LoginRequired() |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
355 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin') |
1305
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
356 def edit(self, repo_name, revision, f_path): |
3237
f5dd76e2a7af
disable file editing when not on branch head fixes issue #462
Marcin Kuzminski <marcin@python-works.com>
parents:
3061
diff
changeset
|
357 repo = c.rhodecode_db_repo |
2727
5899fe08f063
Forbid adding files and editing from web interface while repo is locked
Marcin Kuzminski <marcin@python-works.com>
parents:
2688
diff
changeset
|
358 if repo.enable_locking and repo.locked[0]: |
5899fe08f063
Forbid adding files and editing from web interface while repo is locked
Marcin Kuzminski <marcin@python-works.com>
parents:
2688
diff
changeset
|
359 h.flash(_('This repository is has been locked by %s on %s') |
5899fe08f063
Forbid adding files and editing from web interface while repo is locked
Marcin Kuzminski <marcin@python-works.com>
parents:
2688
diff
changeset
|
360 % (h.person_by_id(repo.locked[0]), |
5899fe08f063
Forbid adding files and editing from web interface while repo is locked
Marcin Kuzminski <marcin@python-works.com>
parents:
2688
diff
changeset
|
361 h.fmt_date(h.time_to_datetime(repo.locked[1]))), |
4070
008e460c5b9d
fixes issue #860.
Marcin Kuzminski <marcin@python-works.com>
parents:
4060
diff
changeset
|
362 'warning') |
2727
5899fe08f063
Forbid adding files and editing from web interface while repo is locked
Marcin Kuzminski <marcin@python-works.com>
parents:
2688
diff
changeset
|
363 return redirect(h.url('files_home', |
5899fe08f063
Forbid adding files and editing from web interface while repo is locked
Marcin Kuzminski <marcin@python-works.com>
parents:
2688
diff
changeset
|
364 repo_name=repo_name, revision='tip')) |
5899fe08f063
Forbid adding files and editing from web interface while repo is locked
Marcin Kuzminski <marcin@python-works.com>
parents:
2688
diff
changeset
|
365 |
3237
f5dd76e2a7af
disable file editing when not on branch head fixes issue #462
Marcin Kuzminski <marcin@python-works.com>
parents:
3061
diff
changeset
|
366 # check if revision is a branch identifier- basically we cannot |
f5dd76e2a7af
disable file editing when not on branch head fixes issue #462
Marcin Kuzminski <marcin@python-works.com>
parents:
3061
diff
changeset
|
367 # create multiple heads via file editing |
f5dd76e2a7af
disable file editing when not on branch head fixes issue #462
Marcin Kuzminski <marcin@python-works.com>
parents:
3061
diff
changeset
|
368 _branches = repo.scm_instance.branches |
f5dd76e2a7af
disable file editing when not on branch head fixes issue #462
Marcin Kuzminski <marcin@python-works.com>
parents:
3061
diff
changeset
|
369 # check if revision is a branch name or branch hash |
f5dd76e2a7af
disable file editing when not on branch head fixes issue #462
Marcin Kuzminski <marcin@python-works.com>
parents:
3061
diff
changeset
|
370 if revision not in _branches.keys() + _branches.values(): |
f5dd76e2a7af
disable file editing when not on branch head fixes issue #462
Marcin Kuzminski <marcin@python-works.com>
parents:
3061
diff
changeset
|
371 h.flash(_('You can only edit files with revision ' |
f5dd76e2a7af
disable file editing when not on branch head fixes issue #462
Marcin Kuzminski <marcin@python-works.com>
parents:
3061
diff
changeset
|
372 'being a valid branch '), category='warning') |
f5dd76e2a7af
disable file editing when not on branch head fixes issue #462
Marcin Kuzminski <marcin@python-works.com>
parents:
3061
diff
changeset
|
373 return redirect(h.url('files_home', |
f5dd76e2a7af
disable file editing when not on branch head fixes issue #462
Marcin Kuzminski <marcin@python-works.com>
parents:
3061
diff
changeset
|
374 repo_name=repo_name, revision='tip', |
f5dd76e2a7af
disable file editing when not on branch head fixes issue #462
Marcin Kuzminski <marcin@python-works.com>
parents:
3061
diff
changeset
|
375 f_path=f_path)) |
f5dd76e2a7af
disable file editing when not on branch head fixes issue #462
Marcin Kuzminski <marcin@python-works.com>
parents:
3061
diff
changeset
|
376 |
1305
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
377 r_post = request.POST |
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
378 |
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
379 c.cs = self.__get_cs_or_redirect(revision, repo_name) |
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
380 c.file = self.__get_filenode_or_redirect(repo_name, c.cs, f_path) |
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
381 |
1313
856be614d9a4
disabled edition of binary files
Marcin Kuzminski <marcin@python-works.com>
parents:
1312
diff
changeset
|
382 if c.file.is_binary: |
856be614d9a4
disabled edition of binary files
Marcin Kuzminski <marcin@python-works.com>
parents:
1312
diff
changeset
|
383 return redirect(url('files_home', repo_name=c.repo_name, |
4070
008e460c5b9d
fixes issue #860.
Marcin Kuzminski <marcin@python-works.com>
parents:
4060
diff
changeset
|
384 revision=c.cs.raw_id, f_path=f_path)) |
3237
f5dd76e2a7af
disable file editing when not on branch head fixes issue #462
Marcin Kuzminski <marcin@python-works.com>
parents:
3061
diff
changeset
|
385 c.default_message = _('Edited file %s via RhodeCode') % (f_path) |
1305
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
386 c.f_path = f_path |
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
387 |
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
388 if r_post: |
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
389 |
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
390 old_content = c.file.content |
1306
6e1d24503383
Added support for ascendent characters for inMemoryCommit
Marcin Kuzminski <marcin@python-works.com>
parents:
1305
diff
changeset
|
391 sl = old_content.splitlines(1) |
6e1d24503383
Added support for ascendent characters for inMemoryCommit
Marcin Kuzminski <marcin@python-works.com>
parents:
1305
diff
changeset
|
392 first_line = sl[0] if sl else '' |
1305
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
393 # modes: 0 - Unix, 1 - Mac, 2 - DOS |
1306
6e1d24503383
Added support for ascendent characters for inMemoryCommit
Marcin Kuzminski <marcin@python-works.com>
parents:
1305
diff
changeset
|
394 mode = detect_mode(first_line, 0) |
3839
9dec870411e0
Added more tests for web based file edit and add
Marcin Kuzminski <marcin@python-works.com>
parents:
3749
diff
changeset
|
395 content = convert_line_endings(r_post.get('content', ''), mode) |
1306
6e1d24503383
Added support for ascendent characters for inMemoryCommit
Marcin Kuzminski <marcin@python-works.com>
parents:
1305
diff
changeset
|
396 |
3237
f5dd76e2a7af
disable file editing when not on branch head fixes issue #462
Marcin Kuzminski <marcin@python-works.com>
parents:
3061
diff
changeset
|
397 message = r_post.get('message') or c.default_message |
1311
6705eeebc41b
moved out commit into scm model, and added cache invalidation after commit.
Marcin Kuzminski <marcin@python-works.com>
parents:
1308
diff
changeset
|
398 author = self.rhodecode_user.full_contact |
1305
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
399 |
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
400 if content == old_content: |
3621
fe012b7df29d
missing files or bad files revisions should return 404s not redirects - ref #808
Marcin Kuzminski <marcin@python-works.com>
parents:
3591
diff
changeset
|
401 h.flash(_('No changes'), category='warning') |
1306
6e1d24503383
Added support for ascendent characters for inMemoryCommit
Marcin Kuzminski <marcin@python-works.com>
parents:
1305
diff
changeset
|
402 return redirect(url('changeset_home', repo_name=c.repo_name, |
6e1d24503383
Added support for ascendent characters for inMemoryCommit
Marcin Kuzminski <marcin@python-works.com>
parents:
1305
diff
changeset
|
403 revision='tip')) |
1305
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
404 try: |
1311
6705eeebc41b
moved out commit into scm model, and added cache invalidation after commit.
Marcin Kuzminski <marcin@python-works.com>
parents:
1308
diff
changeset
|
405 self.scm_model.commit_change(repo=c.rhodecode_repo, |
6705eeebc41b
moved out commit into scm model, and added cache invalidation after commit.
Marcin Kuzminski <marcin@python-works.com>
parents:
1308
diff
changeset
|
406 repo_name=repo_name, cs=c.cs, |
3487
b39cb4d4e0be
it's safer to user user_id for IMC
Marcin Kuzminski <marcin@python-works.com>
parents:
3440
diff
changeset
|
407 user=self.rhodecode_user.user_id, |
1311
6705eeebc41b
moved out commit into scm model, and added cache invalidation after commit.
Marcin Kuzminski <marcin@python-works.com>
parents:
1308
diff
changeset
|
408 author=author, message=message, |
6705eeebc41b
moved out commit into scm model, and added cache invalidation after commit.
Marcin Kuzminski <marcin@python-works.com>
parents:
1308
diff
changeset
|
409 content=content, f_path=f_path) |
2570 | 410 h.flash(_('Successfully committed to %s') % f_path, |
1305
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
411 category='success') |
1311
6705eeebc41b
moved out commit into scm model, and added cache invalidation after commit.
Marcin Kuzminski <marcin@python-works.com>
parents:
1308
diff
changeset
|
412 except Exception: |
1305
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
413 log.error(traceback.format_exc()) |
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
414 h.flash(_('Error occurred during commit'), category='error') |
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
415 return redirect(url('changeset_home', |
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
416 repo_name=c.repo_name, revision='tip')) |
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
417 |
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
418 return render('files/files_edit.html') |
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
419 |
2457
01e005cabd4d
moved login required into seperate calls for files due to optional API access option
Marcin Kuzminski <marcin@python-works.com>
parents:
2456
diff
changeset
|
420 @LoginRequired() |
1483
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
421 @HasRepoPermissionAnyDecorator('repository.write', 'repository.admin') |
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
422 def add(self, repo_name, revision, f_path): |
2727
5899fe08f063
Forbid adding files and editing from web interface while repo is locked
Marcin Kuzminski <marcin@python-works.com>
parents:
2688
diff
changeset
|
423 |
5899fe08f063
Forbid adding files and editing from web interface while repo is locked
Marcin Kuzminski <marcin@python-works.com>
parents:
2688
diff
changeset
|
424 repo = Repository.get_by_repo_name(repo_name) |
5899fe08f063
Forbid adding files and editing from web interface while repo is locked
Marcin Kuzminski <marcin@python-works.com>
parents:
2688
diff
changeset
|
425 if repo.enable_locking and repo.locked[0]: |
5899fe08f063
Forbid adding files and editing from web interface while repo is locked
Marcin Kuzminski <marcin@python-works.com>
parents:
2688
diff
changeset
|
426 h.flash(_('This repository is has been locked by %s on %s') |
5899fe08f063
Forbid adding files and editing from web interface while repo is locked
Marcin Kuzminski <marcin@python-works.com>
parents:
2688
diff
changeset
|
427 % (h.person_by_id(repo.locked[0]), |
5899fe08f063
Forbid adding files and editing from web interface while repo is locked
Marcin Kuzminski <marcin@python-works.com>
parents:
2688
diff
changeset
|
428 h.fmt_date(h.time_to_datetime(repo.locked[1]))), |
5899fe08f063
Forbid adding files and editing from web interface while repo is locked
Marcin Kuzminski <marcin@python-works.com>
parents:
2688
diff
changeset
|
429 'warning') |
5899fe08f063
Forbid adding files and editing from web interface while repo is locked
Marcin Kuzminski <marcin@python-works.com>
parents:
2688
diff
changeset
|
430 return redirect(h.url('files_home', |
5899fe08f063
Forbid adding files and editing from web interface while repo is locked
Marcin Kuzminski <marcin@python-works.com>
parents:
2688
diff
changeset
|
431 repo_name=repo_name, revision='tip')) |
5899fe08f063
Forbid adding files and editing from web interface while repo is locked
Marcin Kuzminski <marcin@python-works.com>
parents:
2688
diff
changeset
|
432 |
1483
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
433 r_post = request.POST |
1485
269905fac50a
added uploading of files from web interface directly into repo
Marcin Kuzminski <marcin@python-works.com>
parents:
1484
diff
changeset
|
434 c.cs = self.__get_cs_or_redirect(revision, repo_name, |
1483
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
435 redirect_after=False) |
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
436 if c.cs is None: |
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
437 c.cs = EmptyChangeset(alias=c.rhodecode_repo.alias) |
3237
f5dd76e2a7af
disable file editing when not on branch head fixes issue #462
Marcin Kuzminski <marcin@python-works.com>
parents:
3061
diff
changeset
|
438 c.default_message = (_('Added file via RhodeCode')) |
1483
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
439 c.f_path = f_path |
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
440 |
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
441 if r_post: |
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
442 unix_mode = 0 |
3839
9dec870411e0
Added more tests for web based file edit and add
Marcin Kuzminski <marcin@python-works.com>
parents:
3749
diff
changeset
|
443 content = convert_line_endings(r_post.get('content', ''), unix_mode) |
1483
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
444 |
3237
f5dd76e2a7af
disable file editing when not on branch head fixes issue #462
Marcin Kuzminski <marcin@python-works.com>
parents:
3061
diff
changeset
|
445 message = r_post.get('message') or c.default_message |
3559
328eb707fe3f
added more strict checks for file path in add file controller
Marcin Kuzminski <marcin@python-works.com>
parents:
3547
diff
changeset
|
446 filename = r_post.get('filename') |
3839
9dec870411e0
Added more tests for web based file edit and add
Marcin Kuzminski <marcin@python-works.com>
parents:
3749
diff
changeset
|
447 location = r_post.get('location', '') |
1485
269905fac50a
added uploading of files from web interface directly into repo
Marcin Kuzminski <marcin@python-works.com>
parents:
1484
diff
changeset
|
448 file_obj = r_post.get('upload_file', None) |
269905fac50a
added uploading of files from web interface directly into repo
Marcin Kuzminski <marcin@python-works.com>
parents:
1484
diff
changeset
|
449 |
269905fac50a
added uploading of files from web interface directly into repo
Marcin Kuzminski <marcin@python-works.com>
parents:
1484
diff
changeset
|
450 if file_obj is not None and hasattr(file_obj, 'filename'): |
269905fac50a
added uploading of files from web interface directly into repo
Marcin Kuzminski <marcin@python-works.com>
parents:
1484
diff
changeset
|
451 filename = file_obj.filename |
269905fac50a
added uploading of files from web interface directly into repo
Marcin Kuzminski <marcin@python-works.com>
parents:
1484
diff
changeset
|
452 content = file_obj.file |
269905fac50a
added uploading of files from web interface directly into repo
Marcin Kuzminski <marcin@python-works.com>
parents:
1484
diff
changeset
|
453 |
4072
bf5c2c75c976
fixes issue #856 file upload >1000 bytes on windows throws exception.
Marcin Kuzminski <marcin@python-works.com>
parents:
4070
diff
changeset
|
454 if hasattr(content, 'file'): |
bf5c2c75c976
fixes issue #856 file upload >1000 bytes on windows throws exception.
Marcin Kuzminski <marcin@python-works.com>
parents:
4070
diff
changeset
|
455 # non posix systems store real file under file attr |
bf5c2c75c976
fixes issue #856 file upload >1000 bytes on windows throws exception.
Marcin Kuzminski <marcin@python-works.com>
parents:
4070
diff
changeset
|
456 content = content.file |
bf5c2c75c976
fixes issue #856 file upload >1000 bytes on windows throws exception.
Marcin Kuzminski <marcin@python-works.com>
parents:
4070
diff
changeset
|
457 |
1483
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
458 if not content: |
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
459 h.flash(_('No content'), category='warning') |
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
460 return redirect(url('changeset_home', repo_name=c.repo_name, |
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
461 revision='tip')) |
1484
1db451a44504
fixed small issues with adding new filenodes
Marcin Kuzminski <marcin@python-works.com>
parents:
1483
diff
changeset
|
462 if not filename: |
1db451a44504
fixed small issues with adding new filenodes
Marcin Kuzminski <marcin@python-works.com>
parents:
1483
diff
changeset
|
463 h.flash(_('No filename'), category='warning') |
1db451a44504
fixed small issues with adding new filenodes
Marcin Kuzminski <marcin@python-works.com>
parents:
1483
diff
changeset
|
464 return redirect(url('changeset_home', repo_name=c.repo_name, |
1485
269905fac50a
added uploading of files from web interface directly into repo
Marcin Kuzminski <marcin@python-works.com>
parents:
1484
diff
changeset
|
465 revision='tip')) |
3840
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3839
diff
changeset
|
466 #strip all crap out of file, just leave the basename |
3559
328eb707fe3f
added more strict checks for file path in add file controller
Marcin Kuzminski <marcin@python-works.com>
parents:
3547
diff
changeset
|
467 filename = os.path.basename(filename) |
328eb707fe3f
added more strict checks for file path in add file controller
Marcin Kuzminski <marcin@python-works.com>
parents:
3547
diff
changeset
|
468 node_path = os.path.join(location, filename) |
328eb707fe3f
added more strict checks for file path in add file controller
Marcin Kuzminski <marcin@python-works.com>
parents:
3547
diff
changeset
|
469 author = self.rhodecode_user.full_contact |
1483
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
470 |
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
471 try: |
3840
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3839
diff
changeset
|
472 nodes = { |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3839
diff
changeset
|
473 node_path: { |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3839
diff
changeset
|
474 'content': content |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3839
diff
changeset
|
475 } |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3839
diff
changeset
|
476 } |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3839
diff
changeset
|
477 self.scm_model.create_nodes( |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3839
diff
changeset
|
478 user=c.rhodecode_user.user_id, repo=c.rhodecode_db_repo, |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3839
diff
changeset
|
479 message=message, |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3839
diff
changeset
|
480 nodes=nodes, |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3839
diff
changeset
|
481 parent_cs=c.cs, |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3839
diff
changeset
|
482 author=author, |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3839
diff
changeset
|
483 ) |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3839
diff
changeset
|
484 |
2570 | 485 h.flash(_('Successfully committed to %s') % node_path, |
1483
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
486 category='success') |
3840
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3839
diff
changeset
|
487 except NonRelativePathError, e: |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3839
diff
changeset
|
488 h.flash(_('Location must be relative path and must not ' |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3839
diff
changeset
|
489 'contain .. in path'), category='warning') |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3839
diff
changeset
|
490 return redirect(url('changeset_home', repo_name=c.repo_name, |
dc4644865e8b
Implemented simple gist functionality ref #530.
Marcin Kuzminski <marcin@python-works.com>
parents:
3839
diff
changeset
|
491 revision='tip')) |
3559
328eb707fe3f
added more strict checks for file path in add file controller
Marcin Kuzminski <marcin@python-works.com>
parents:
3547
diff
changeset
|
492 except (NodeError, NodeAlreadyExistsError), e: |
1485
269905fac50a
added uploading of files from web interface directly into repo
Marcin Kuzminski <marcin@python-works.com>
parents:
1484
diff
changeset
|
493 h.flash(_(e), category='error') |
1483
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
494 except Exception: |
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
495 log.error(traceback.format_exc()) |
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
496 h.flash(_('Error occurred during commit'), category='error') |
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
497 return redirect(url('changeset_home', |
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
498 repo_name=c.repo_name, revision='tip')) |
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
499 |
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
500 return render('files/files_add.html') |
7b67b0dcad6d
Added initial support for creating new nodes in repos
Marcin Kuzminski <marcin@python-works.com>
parents:
1480
diff
changeset
|
501 |
2457
01e005cabd4d
moved login required into seperate calls for files due to optional API access option
Marcin Kuzminski <marcin@python-works.com>
parents:
2456
diff
changeset
|
502 @LoginRequired() |
1305
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
503 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
504 'repository.admin') |
872
b956e6f415a2
implemented #91,
Marcin Kuzminski <marcin@python-works.com>
parents:
813
diff
changeset
|
505 def archivefile(self, repo_name, fname): |
945
05b59c48556f
fixed error when trying to make download on empty repository
Marcin Kuzminski <marcin@python-works.com>
parents:
942
diff
changeset
|
506 |
942
32318ec7bfc1
added branch/tag options to download links in summary
Marcin Kuzminski <marcin@python-works.com>
parents:
915
diff
changeset
|
507 fileformat = None |
32318ec7bfc1
added branch/tag options to download links in summary
Marcin Kuzminski <marcin@python-works.com>
parents:
915
diff
changeset
|
508 revision = None |
948
85ee0ea183e7
fixed archival in rhodecode to use new functions from vcs
Marcin Kuzminski <marcin@python-works.com>
parents:
945
diff
changeset
|
509 ext = None |
1450
2a8bf2a3da98
fixes #214 added support for downloading subrepos in download menu.
Marcin Kuzminski <marcin@python-works.com>
parents:
1401
diff
changeset
|
510 subrepos = request.GET.get('subrepos') == 'true' |
945
05b59c48556f
fixed error when trying to make download on empty repository
Marcin Kuzminski <marcin@python-works.com>
parents:
942
diff
changeset
|
511 |
1480
daa29da0f783
fixes for vcs settings module
Marcin Kuzminski <marcin@python-works.com>
parents:
1452
diff
changeset
|
512 for a_type, ext_data in settings.ARCHIVE_SPECS.items(): |
948
85ee0ea183e7
fixed archival in rhodecode to use new functions from vcs
Marcin Kuzminski <marcin@python-works.com>
parents:
945
diff
changeset
|
513 archive_spec = fname.split(ext_data[1]) |
85ee0ea183e7
fixed archival in rhodecode to use new functions from vcs
Marcin Kuzminski <marcin@python-works.com>
parents:
945
diff
changeset
|
514 if len(archive_spec) == 2 and archive_spec[1] == '': |
85ee0ea183e7
fixed archival in rhodecode to use new functions from vcs
Marcin Kuzminski <marcin@python-works.com>
parents:
945
diff
changeset
|
515 fileformat = a_type or ext_data[1] |
942
32318ec7bfc1
added branch/tag options to download links in summary
Marcin Kuzminski <marcin@python-works.com>
parents:
915
diff
changeset
|
516 revision = archive_spec[0] |
948
85ee0ea183e7
fixed archival in rhodecode to use new functions from vcs
Marcin Kuzminski <marcin@python-works.com>
parents:
945
diff
changeset
|
517 ext = ext_data[1] |
872
b956e6f415a2
implemented #91,
Marcin Kuzminski <marcin@python-works.com>
parents:
813
diff
changeset
|
518 |
b956e6f415a2
implemented #91,
Marcin Kuzminski <marcin@python-works.com>
parents:
813
diff
changeset
|
519 try: |
1045
3fc9183e05dd
another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents:
1044
diff
changeset
|
520 dbrepo = RepoModel().get_by_repo_name(repo_name) |
3625
260a7a01b054
follow Python conventions for boolean values
Mads Kiilerich <madski@unity3d.com>
parents:
3621
diff
changeset
|
521 if not dbrepo.enable_downloads: |
3654
ec6354949623
Fix a lot of casings - use standard casing in most places
Mads Kiilerich <madski@unity3d.com>
parents:
3625
diff
changeset
|
522 return _('Downloads disabled') |
962
72f008ed9b18
implemented #84 downloads can be enabled/disabled per each repository from now.
Marcin Kuzminski <marcin@python-works.com>
parents:
961
diff
changeset
|
523 |
1809
ef0066e95be5
fix archive download for git
Marcin Kuzminski <marcin@python-works.com>
parents:
1789
diff
changeset
|
524 if c.rhodecode_repo.alias == 'hg': |
ef0066e95be5
fix archive download for git
Marcin Kuzminski <marcin@python-works.com>
parents:
1789
diff
changeset
|
525 # patch and reset hooks section of UI config to not run any |
ef0066e95be5
fix archive download for git
Marcin Kuzminski <marcin@python-works.com>
parents:
1789
diff
changeset
|
526 # hooks on fetching archives with subrepos |
ef0066e95be5
fix archive download for git
Marcin Kuzminski <marcin@python-works.com>
parents:
1789
diff
changeset
|
527 for k, v in c.rhodecode_repo._repo.ui.configitems('hooks'): |
ef0066e95be5
fix archive download for git
Marcin Kuzminski <marcin@python-works.com>
parents:
1789
diff
changeset
|
528 c.rhodecode_repo._repo.ui.setconfig('hooks', k, None) |
1664
65386911df2a
fixes issue with mercurial 2.0 and archival of subrepos.
Marcin Kuzminski <marcin@python-works.com>
parents:
1568
diff
changeset
|
529 |
1045
3fc9183e05dd
another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents:
1044
diff
changeset
|
530 cs = c.rhodecode_repo.get_changeset(revision) |
1480
daa29da0f783
fixes for vcs settings module
Marcin Kuzminski <marcin@python-works.com>
parents:
1452
diff
changeset
|
531 content_type = settings.ARCHIVE_SPECS[fileformat][0] |
872
b956e6f415a2
implemented #91,
Marcin Kuzminski <marcin@python-works.com>
parents:
813
diff
changeset
|
532 except ChangesetDoesNotExistError: |
b956e6f415a2
implemented #91,
Marcin Kuzminski <marcin@python-works.com>
parents:
813
diff
changeset
|
533 return _('Unknown revision %s') % revision |
945
05b59c48556f
fixed error when trying to make download on empty repository
Marcin Kuzminski <marcin@python-works.com>
parents:
942
diff
changeset
|
534 except EmptyRepositoryError: |
05b59c48556f
fixed error when trying to make download on empty repository
Marcin Kuzminski <marcin@python-works.com>
parents:
942
diff
changeset
|
535 return _('Empty repository') |
961
840ca7492dbe
fixed typo in exception
Marcin Kuzminski <marcin@python-works.com>
parents:
953
diff
changeset
|
536 except (ImproperArchiveTypeError, KeyError): |
948
85ee0ea183e7
fixed archival in rhodecode to use new functions from vcs
Marcin Kuzminski <marcin@python-works.com>
parents:
945
diff
changeset
|
537 return _('Unknown archive type') |
3490
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
538 # archive cache |
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
539 from rhodecode import CONFIG |
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
540 rev_name = cs.raw_id[:12] |
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
541 archive_name = '%s-%s%s' % (safe_str(repo_name.replace('/', '_')), |
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
542 safe_str(rev_name), ext) |
872
b956e6f415a2
implemented #91,
Marcin Kuzminski <marcin@python-works.com>
parents:
813
diff
changeset
|
543 |
3490
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
544 use_cached_archive = False # defines if we use cached version of archive |
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
545 archive_cache_enabled = CONFIG.get('archive_cache_dir') |
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
546 if not subrepos and archive_cache_enabled: |
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
547 #check if we it's ok to write |
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
548 if not os.path.isdir(CONFIG['archive_cache_dir']): |
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
549 os.makedirs(CONFIG['archive_cache_dir']) |
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
550 cached_archive_path = os.path.join(CONFIG['archive_cache_dir'], archive_name) |
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
551 if os.path.isfile(cached_archive_path): |
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
552 log.debug('Found cached archive in %s' % cached_archive_path) |
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
553 fd, archive = None, cached_archive_path |
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
554 use_cached_archive = True |
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
555 else: |
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
556 log.debug('Archive %s is not yet cached' % (archive_name)) |
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
557 |
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
558 if not use_cached_archive: |
4116
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
559 # generate new archive |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
560 temp_stream = None |
3490
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
561 try: |
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
562 fd, archive = tempfile.mkstemp() |
4116
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
563 temp_stream = open(archive, 'wb') |
3490
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
564 log.debug('Creating new temp archive in %s' % archive) |
4116
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
565 cs.fill_archive(stream=temp_stream, kind=fileformat, subrepos=subrepos) |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
566 if not subrepos and archive_cache_enabled: |
3490
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
567 #if we generated the archive and use cache rename that |
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
568 log.debug('Storing new archive in %s' % cached_archive_path) |
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
569 shutil.move(archive, cached_archive_path) |
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
570 archive = cached_archive_path |
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
571 finally: |
4116
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
572 if temp_stream: |
ffd45b185016
Imported some of the GPLv3'd changes from RhodeCode v2.2.5.
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents:
4077
diff
changeset
|
573 temp_stream.close() |
2294
3c1d991755df
Use paste fileapp to properly send the archive size
Marcin Kuzminski <marcin@python-works.com>
parents:
2291
diff
changeset
|
574 |
2318
058e2743e7b7
fixes issue #455 Creating an archive generates an exception on Windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2294
diff
changeset
|
575 def get_chunked_archive(archive): |
058e2743e7b7
fixes issue #455 Creating an archive generates an exception on Windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2294
diff
changeset
|
576 stream = open(archive, 'rb') |
058e2743e7b7
fixes issue #455 Creating an archive generates an exception on Windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2294
diff
changeset
|
577 while True: |
058e2743e7b7
fixes issue #455 Creating an archive generates an exception on Windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2294
diff
changeset
|
578 data = stream.read(16 * 1024) |
058e2743e7b7
fixes issue #455 Creating an archive generates an exception on Windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2294
diff
changeset
|
579 if not data: |
058e2743e7b7
fixes issue #455 Creating an archive generates an exception on Windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2294
diff
changeset
|
580 stream.close() |
3490
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
581 if fd: # fd means we used temporary file |
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
582 os.close(fd) |
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
583 if not archive_cache_enabled: |
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
584 log.debug('Destroing temp archive %s' % archive) |
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
585 os.remove(archive) |
2318
058e2743e7b7
fixes issue #455 Creating an archive generates an exception on Windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2294
diff
changeset
|
586 break |
058e2743e7b7
fixes issue #455 Creating an archive generates an exception on Windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2294
diff
changeset
|
587 yield data |
3868
e262494ca099
store download archive actions in journal
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
588 # store download action |
e262494ca099
store download archive actions in journal
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
589 action_logger(user=c.rhodecode_user, |
e262494ca099
store download archive actions in journal
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
590 action='user_downloaded_archive:%s' % (archive_name), |
e262494ca099
store download archive actions in journal
Marcin Kuzminski <marcin@python-works.com>
parents:
3840
diff
changeset
|
591 repo=repo_name, ipaddr=self.ip_addr, commit=True) |
3490
c0ac34b8eb07
initial version of #788 tarball cache
Marcin Kuzminski <marcin@python-works.com>
parents:
3488
diff
changeset
|
592 response.content_disposition = str('attachment; filename=%s' % (archive_name)) |
2318
058e2743e7b7
fixes issue #455 Creating an archive generates an exception on Windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2294
diff
changeset
|
593 response.content_type = str(content_type) |
058e2743e7b7
fixes issue #455 Creating an archive generates an exception on Windows
Marcin Kuzminski <marcin@python-works.com>
parents:
2294
diff
changeset
|
594 return get_chunked_archive(archive) |
948
85ee0ea183e7
fixed archival in rhodecode to use new functions from vcs
Marcin Kuzminski <marcin@python-works.com>
parents:
945
diff
changeset
|
595 |
2457
01e005cabd4d
moved login required into seperate calls for files due to optional API access option
Marcin Kuzminski <marcin@python-works.com>
parents:
2456
diff
changeset
|
596 @LoginRequired() |
1305
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
597 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
166317d464f3
Added server side file editing with commit
Marcin Kuzminski <marcin@python-works.com>
parents:
1273
diff
changeset
|
598 'repository.admin') |
129
42d46deb124d
implemented simple diffs for history of files.
Marcin Kuzminski <marcin@python-works.com>
parents:
128
diff
changeset
|
599 def diff(self, repo_name, f_path): |
1752
f28dc032adf0
Added handling of ignore whitespace flag in changesets
Marcin Kuzminski <marcin@python-works.com>
parents:
1737
diff
changeset
|
600 ignore_whitespace = request.GET.get('ignorews') == '1' |
1768
5610fd9b6803
added line context control to diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1753
diff
changeset
|
601 line_context = request.GET.get('context', 3) |
1789
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
602 diff1 = request.GET.get('diff1', '') |
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
603 diff2 = request.GET.get('diff2', '') |
337
fa3835d34fc1
fixed bug when diff command was different than available options
Marcin Kuzminski <marcin@python-works.com>
parents:
335
diff
changeset
|
604 c.action = request.GET.get('diff') |
131
49c7e191c2cd
Implemented mercurial style diff-lib
Marcin Kuzminski <marcin@python-works.com>
parents:
130
diff
changeset
|
605 c.no_changes = diff1 == diff2 |
129
42d46deb124d
implemented simple diffs for history of files.
Marcin Kuzminski <marcin@python-works.com>
parents:
128
diff
changeset
|
606 c.f_path = f_path |
1273
64cb9612f9aa
Added show as raw into big diff
Marcin Kuzminski <marcin@python-works.com>
parents:
1245
diff
changeset
|
607 c.big_diff = False |
1789
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
608 c.anchor_url = anchor_url |
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
609 c.ignorews_url = _ignorews_url |
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
610 c.context_url = _context_url |
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
611 c.changes = OrderedDict() |
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
612 c.changes[diff2] = [] |
2931
4c7cc3a4c330
fixed issue with show at revision button. Some JS were not properly loaded due to ajaxified files view.
Marcin Kuzminski <marcin@python-works.com>
parents:
2930
diff
changeset
|
613 |
4c7cc3a4c330
fixed issue with show at revision button. Some JS were not properly loaded due to ajaxified files view.
Marcin Kuzminski <marcin@python-works.com>
parents:
2930
diff
changeset
|
614 #special case if we want a show rev only, it's impl here |
4c7cc3a4c330
fixed issue with show at revision button. Some JS were not properly loaded due to ajaxified files view.
Marcin Kuzminski <marcin@python-works.com>
parents:
2930
diff
changeset
|
615 #to reduce JS and callbacks |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2981
diff
changeset
|
616 |
2931
4c7cc3a4c330
fixed issue with show at revision button. Some JS were not properly loaded due to ajaxified files view.
Marcin Kuzminski <marcin@python-works.com>
parents:
2930
diff
changeset
|
617 if request.GET.get('show_rev'): |
4c7cc3a4c330
fixed issue with show at revision button. Some JS were not properly loaded due to ajaxified files view.
Marcin Kuzminski <marcin@python-works.com>
parents:
2930
diff
changeset
|
618 if str2bool(request.GET.get('annotate', 'False')): |
4c7cc3a4c330
fixed issue with show at revision button. Some JS were not properly loaded due to ajaxified files view.
Marcin Kuzminski <marcin@python-works.com>
parents:
2930
diff
changeset
|
619 _url = url('files_annotate_home', repo_name=c.repo_name, |
4c7cc3a4c330
fixed issue with show at revision button. Some JS were not properly loaded due to ajaxified files view.
Marcin Kuzminski <marcin@python-works.com>
parents:
2930
diff
changeset
|
620 revision=diff1, f_path=c.f_path) |
4c7cc3a4c330
fixed issue with show at revision button. Some JS were not properly loaded due to ajaxified files view.
Marcin Kuzminski <marcin@python-works.com>
parents:
2930
diff
changeset
|
621 else: |
4c7cc3a4c330
fixed issue with show at revision button. Some JS were not properly loaded due to ajaxified files view.
Marcin Kuzminski <marcin@python-works.com>
parents:
2930
diff
changeset
|
622 _url = url('files_home', repo_name=c.repo_name, |
4c7cc3a4c330
fixed issue with show at revision button. Some JS were not properly loaded due to ajaxified files view.
Marcin Kuzminski <marcin@python-works.com>
parents:
2930
diff
changeset
|
623 revision=diff1, f_path=c.f_path) |
4c7cc3a4c330
fixed issue with show at revision button. Some JS were not properly loaded due to ajaxified files view.
Marcin Kuzminski <marcin@python-works.com>
parents:
2930
diff
changeset
|
624 |
4c7cc3a4c330
fixed issue with show at revision button. Some JS were not properly loaded due to ajaxified files view.
Marcin Kuzminski <marcin@python-works.com>
parents:
2930
diff
changeset
|
625 return redirect(_url) |
275
2d61aa00e855
fixed bugs when putting empty or unknown changesets into diff
Marcin Kuzminski <marcin@python-works.com>
parents:
272
diff
changeset
|
626 try: |
544
d8778cde98f0
added limits to single file diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
512
diff
changeset
|
627 if diff1 not in ['', None, 'None', '0' * 12, '0' * 40]: |
1045
3fc9183e05dd
another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents:
1044
diff
changeset
|
628 c.changeset_1 = c.rhodecode_repo.get_changeset(diff1) |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2981
diff
changeset
|
629 try: |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2981
diff
changeset
|
630 node1 = c.changeset_1.get_node(f_path) |
3440
4725d097c3c0
check if given f_path in diff is not a dir by any chance
Marcin Kuzminski <marcin@python-works.com>
parents:
3267
diff
changeset
|
631 if node1.is_dir(): |
3563
8d8c4dddd174
fixed bad raise statement
Marcin Kuzminski <marcin@python-works.com>
parents:
3559
diff
changeset
|
632 raise NodeError('%s path is a %s not a file' |
8d8c4dddd174
fixed bad raise statement
Marcin Kuzminski <marcin@python-works.com>
parents:
3559
diff
changeset
|
633 % (node1, type(node1))) |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2981
diff
changeset
|
634 except NodeDoesNotExistError: |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2981
diff
changeset
|
635 c.changeset_1 = EmptyChangeset(cs=diff1, |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2981
diff
changeset
|
636 revision=c.changeset_1.revision, |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2981
diff
changeset
|
637 repo=c.rhodecode_repo) |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2981
diff
changeset
|
638 node1 = FileNode(f_path, '', changeset=c.changeset_1) |
275
2d61aa00e855
fixed bugs when putting empty or unknown changesets into diff
Marcin Kuzminski <marcin@python-works.com>
parents:
272
diff
changeset
|
639 else: |
1224
e76833cd555a
files: fixes error when passing a diff without parameters and caused server crash
Marcin Kuzminski <marcin@python-works.com>
parents:
1212
diff
changeset
|
640 c.changeset_1 = EmptyChangeset(repo=c.rhodecode_repo) |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2981
diff
changeset
|
641 node1 = FileNode(f_path, '', changeset=c.changeset_1) |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
642 |
544
d8778cde98f0
added limits to single file diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
512
diff
changeset
|
643 if diff2 not in ['', None, 'None', '0' * 12, '0' * 40]: |
1045
3fc9183e05dd
another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents:
1044
diff
changeset
|
644 c.changeset_2 = c.rhodecode_repo.get_changeset(diff2) |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2981
diff
changeset
|
645 try: |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2981
diff
changeset
|
646 node2 = c.changeset_2.get_node(f_path) |
3563
8d8c4dddd174
fixed bad raise statement
Marcin Kuzminski <marcin@python-works.com>
parents:
3559
diff
changeset
|
647 if node2.is_dir(): |
8d8c4dddd174
fixed bad raise statement
Marcin Kuzminski <marcin@python-works.com>
parents:
3559
diff
changeset
|
648 raise NodeError('%s path is a %s not a file' |
8d8c4dddd174
fixed bad raise statement
Marcin Kuzminski <marcin@python-works.com>
parents:
3559
diff
changeset
|
649 % (node2, type(node2))) |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2981
diff
changeset
|
650 except NodeDoesNotExistError: |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2981
diff
changeset
|
651 c.changeset_2 = EmptyChangeset(cs=diff2, |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2981
diff
changeset
|
652 revision=c.changeset_2.revision, |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2981
diff
changeset
|
653 repo=c.rhodecode_repo) |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2981
diff
changeset
|
654 node2 = FileNode(f_path, '', changeset=c.changeset_2) |
275
2d61aa00e855
fixed bugs when putting empty or unknown changesets into diff
Marcin Kuzminski <marcin@python-works.com>
parents:
272
diff
changeset
|
655 else: |
1224
e76833cd555a
files: fixes error when passing a diff without parameters and caused server crash
Marcin Kuzminski <marcin@python-works.com>
parents:
1212
diff
changeset
|
656 c.changeset_2 = EmptyChangeset(repo=c.rhodecode_repo) |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2981
diff
changeset
|
657 node2 = FileNode(f_path, '', changeset=c.changeset_2) |
3037
789f20683559
fix error when diff path is a directory, edge case generated by google bots
Marcin Kuzminski <marcin@python-works.com>
parents:
3009
diff
changeset
|
658 except (RepositoryError, NodeError): |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2981
diff
changeset
|
659 log.error(traceback.format_exc()) |
1818
cf51bbfb120e
auto white-space removal
Marcin Kuzminski <marcin@python-works.com>
parents:
1810
diff
changeset
|
660 return redirect(url('files_home', repo_name=c.repo_name, |
1789
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
661 f_path=f_path)) |
275
2d61aa00e855
fixed bugs when putting empty or unknown changesets into diff
Marcin Kuzminski <marcin@python-works.com>
parents:
272
diff
changeset
|
662 |
337
fa3835d34fc1
fixed bug when diff command was different than available options
Marcin Kuzminski <marcin@python-works.com>
parents:
335
diff
changeset
|
663 if c.action == 'download': |
1753
1d1ccb873d00
moved soon-to-be-deleted code from vcs to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents:
1752
diff
changeset
|
664 _diff = diffs.get_gitdiff(node1, node2, |
1768
5610fd9b6803
added line context control to diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1753
diff
changeset
|
665 ignore_whitespace=ignore_whitespace, |
5610fd9b6803
added line context control to diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1753
diff
changeset
|
666 context=line_context) |
1789
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
667 diff = diffs.DiffProcessor(_diff, format='gitdiff') |
1044
f3402cb92fdf
changed raw and download diffs to gitdiff
Marcin Kuzminski <marcin@python-works.com>
parents:
1043
diff
changeset
|
668 |
160
0f7f93df5802
implemented rawdiff and diff download into diff view.
Marcin Kuzminski <marcin@python-works.com>
parents:
158
diff
changeset
|
669 diff_name = '%s_vs_%s.diff' % (diff1, diff2) |
0f7f93df5802
implemented rawdiff and diff download into diff view.
Marcin Kuzminski <marcin@python-works.com>
parents:
158
diff
changeset
|
670 response.content_type = 'text/plain' |
2083
60115135b77e
fixed raw_changeset for git, accidentally it was generated with hg patch headers
Marcin Kuzminski <marcin@python-works.com>
parents:
2046
diff
changeset
|
671 response.content_disposition = ( |
60115135b77e
fixed raw_changeset for git, accidentally it was generated with hg patch headers
Marcin Kuzminski <marcin@python-works.com>
parents:
2046
diff
changeset
|
672 'attachment; filename=%s' % diff_name |
60115135b77e
fixed raw_changeset for git, accidentally it was generated with hg patch headers
Marcin Kuzminski <marcin@python-works.com>
parents:
2046
diff
changeset
|
673 ) |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2981
diff
changeset
|
674 return diff.as_raw() |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
675 |
337
fa3835d34fc1
fixed bug when diff command was different than available options
Marcin Kuzminski <marcin@python-works.com>
parents:
335
diff
changeset
|
676 elif c.action == 'raw': |
1753
1d1ccb873d00
moved soon-to-be-deleted code from vcs to rhodecode
Marcin Kuzminski <marcin@python-works.com>
parents:
1752
diff
changeset
|
677 _diff = diffs.get_gitdiff(node1, node2, |
1768
5610fd9b6803
added line context control to diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1753
diff
changeset
|
678 ignore_whitespace=ignore_whitespace, |
5610fd9b6803
added line context control to diffs
Marcin Kuzminski <marcin@python-works.com>
parents:
1753
diff
changeset
|
679 context=line_context) |
1789
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
680 diff = diffs.DiffProcessor(_diff, format='gitdiff') |
649
3765f0f479a2
fixed raw diff as purly raw without html
Marcin Kuzminski <marcin@python-works.com>
parents:
644
diff
changeset
|
681 response.content_type = 'text/plain' |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2981
diff
changeset
|
682 return diff.as_raw() |
662
373ee7031003
fixed annotation bug, added history to annotation.
Marcin Kuzminski <marcin@python-works.com>
parents:
649
diff
changeset
|
683 |
337
fa3835d34fc1
fixed bug when diff command was different than available options
Marcin Kuzminski <marcin@python-works.com>
parents:
335
diff
changeset
|
684 else: |
1789
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
685 fid = h.FID(diff2, node2.path) |
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
686 line_context_lcl = get_line_ctx(fid, request.GET) |
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
687 ign_whitespace_lcl = get_ignore_ws(fid, request.GET) |
1149
d162de13caec
memory optimizations, call diffs only when needed ie. after checking for binary, and cutoff limit.
Marcin Kuzminski <marcin@python-works.com>
parents:
1137
diff
changeset
|
688 |
1789
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
689 lim = request.GET.get('fulldiff') or self.cut_off_limit |
2109 | 690 _, cs1, cs2, diff, st = diffs.wrapped_diff(filenode_old=node1, |
1789
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
691 filenode_new=node2, |
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
692 cut_off_limit=lim, |
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
693 ignore_whitespace=ign_whitespace_lcl, |
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
694 line_context=line_context_lcl, |
17caf4efe15c
implements #308 rewrote diffs to enable displaying full diff on each file
Marcin Kuzminski <marcin@python-works.com>
parents:
1768
diff
changeset
|
695 enable_comments=False) |
2995
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2981
diff
changeset
|
696 op = '' |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2981
diff
changeset
|
697 filename = node1.path |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2981
diff
changeset
|
698 cs_changes = { |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2981
diff
changeset
|
699 'fid': [cs1, cs2, op, filename, diff, st] |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2981
diff
changeset
|
700 } |
32471bd1f4ee
Implemented generation of changesets based
Marcin Kuzminski <marcin@python-works.com>
parents:
2981
diff
changeset
|
701 c.changes = cs_changes |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
702 |
129
42d46deb124d
implemented simple diffs for history of files.
Marcin Kuzminski <marcin@python-works.com>
parents:
128
diff
changeset
|
703 return render('files/file_diff.html') |
636
ffd07396d315
Fixes for raw_id, needed for git
Marcin Kuzminski <marcin@python-works.com>
parents:
629
diff
changeset
|
704 |
4043
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
705 @LoginRequired() |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
706 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
707 'repository.admin') |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
708 def diff_2way(self, repo_name, f_path): |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
709 diff1 = request.GET.get('diff1', '') |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
710 diff2 = request.GET.get('diff2', '') |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
711 try: |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
712 if diff1 not in ['', None, 'None', '0' * 12, '0' * 40]: |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
713 c.changeset_1 = c.rhodecode_repo.get_changeset(diff1) |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
714 try: |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
715 node1 = c.changeset_1.get_node(f_path) |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
716 if node1.is_dir(): |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
717 raise NodeError('%s path is a %s not a file' |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
718 % (node1, type(node1))) |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
719 except NodeDoesNotExistError: |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
720 c.changeset_1 = EmptyChangeset(cs=diff1, |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
721 revision=c.changeset_1.revision, |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
722 repo=c.rhodecode_repo) |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
723 node1 = FileNode(f_path, '', changeset=c.changeset_1) |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
724 else: |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
725 c.changeset_1 = EmptyChangeset(repo=c.rhodecode_repo) |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
726 node1 = FileNode(f_path, '', changeset=c.changeset_1) |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
727 |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
728 if diff2 not in ['', None, 'None', '0' * 12, '0' * 40]: |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
729 c.changeset_2 = c.rhodecode_repo.get_changeset(diff2) |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
730 try: |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
731 node2 = c.changeset_2.get_node(f_path) |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
732 if node2.is_dir(): |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
733 raise NodeError('%s path is a %s not a file' |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
734 % (node2, type(node2))) |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
735 except NodeDoesNotExistError: |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
736 c.changeset_2 = EmptyChangeset(cs=diff2, |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
737 revision=c.changeset_2.revision, |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
738 repo=c.rhodecode_repo) |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
739 node2 = FileNode(f_path, '', changeset=c.changeset_2) |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
740 else: |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
741 c.changeset_2 = EmptyChangeset(repo=c.rhodecode_repo) |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
742 node2 = FileNode(f_path, '', changeset=c.changeset_2) |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
743 except (RepositoryError, NodeError): |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
744 log.error(traceback.format_exc()) |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
745 return redirect(url('files_home', repo_name=c.repo_name, |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
746 f_path=f_path)) |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
747 c.node1 = node1 |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
748 c.node2 = node2 |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
749 c.cs1 = c.changeset_1 |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
750 c.cs2 = c.changeset_2 |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
751 |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
752 return render('files/diff_2way.html') |
a1bc4af25ec5
Implemented issue #387 side-by-side diffs view
Marcin Kuzminski <marcin@python-works.com>
parents:
3960
diff
changeset
|
753 |
2456
51b203e44202
Add authors into file view
Marcin Kuzminski <marcin@python-works.com>
parents:
2428
diff
changeset
|
754 def _get_node_history(self, cs, f_path, changesets=None): |
2977
cff9d4e1d821
Fixed issue when node didn't exists at 'tip' and we tried calculate history based on that assumption.
Marcin Kuzminski <marcin@python-works.com>
parents:
2973
diff
changeset
|
755 """ |
cff9d4e1d821
Fixed issue when node didn't exists at 'tip' and we tried calculate history based on that assumption.
Marcin Kuzminski <marcin@python-works.com>
parents:
2973
diff
changeset
|
756 get changesets history for given node |
cff9d4e1d821
Fixed issue when node didn't exists at 'tip' and we tried calculate history based on that assumption.
Marcin Kuzminski <marcin@python-works.com>
parents:
2973
diff
changeset
|
757 |
cff9d4e1d821
Fixed issue when node didn't exists at 'tip' and we tried calculate history based on that assumption.
Marcin Kuzminski <marcin@python-works.com>
parents:
2973
diff
changeset
|
758 :param cs: changeset to calculate history |
cff9d4e1d821
Fixed issue when node didn't exists at 'tip' and we tried calculate history based on that assumption.
Marcin Kuzminski <marcin@python-works.com>
parents:
2973
diff
changeset
|
759 :param f_path: path for node to calculate history for |
cff9d4e1d821
Fixed issue when node didn't exists at 'tip' and we tried calculate history based on that assumption.
Marcin Kuzminski <marcin@python-works.com>
parents:
2973
diff
changeset
|
760 :param changesets: if passed don't calculate history and take |
cff9d4e1d821
Fixed issue when node didn't exists at 'tip' and we tried calculate history based on that assumption.
Marcin Kuzminski <marcin@python-works.com>
parents:
2973
diff
changeset
|
761 changesets defined in this list |
cff9d4e1d821
Fixed issue when node didn't exists at 'tip' and we tried calculate history based on that assumption.
Marcin Kuzminski <marcin@python-works.com>
parents:
2973
diff
changeset
|
762 """ |
cff9d4e1d821
Fixed issue when node didn't exists at 'tip' and we tried calculate history based on that assumption.
Marcin Kuzminski <marcin@python-works.com>
parents:
2973
diff
changeset
|
763 # calculate history based on tip |
cff9d4e1d821
Fixed issue when node didn't exists at 'tip' and we tried calculate history based on that assumption.
Marcin Kuzminski <marcin@python-works.com>
parents:
2973
diff
changeset
|
764 tip_cs = c.rhodecode_repo.get_changeset() |
2456
51b203e44202
Add authors into file view
Marcin Kuzminski <marcin@python-works.com>
parents:
2428
diff
changeset
|
765 if changesets is None: |
2977
cff9d4e1d821
Fixed issue when node didn't exists at 'tip' and we tried calculate history based on that assumption.
Marcin Kuzminski <marcin@python-works.com>
parents:
2973
diff
changeset
|
766 try: |
cff9d4e1d821
Fixed issue when node didn't exists at 'tip' and we tried calculate history based on that assumption.
Marcin Kuzminski <marcin@python-works.com>
parents:
2973
diff
changeset
|
767 changesets = tip_cs.get_file_history(f_path) |
2981
6cd0f8f8aef1
Let the function calculating changeset history do all the work
Marcin Kuzminski <marcin@python-works.com>
parents:
2977
diff
changeset
|
768 except (NodeDoesNotExistError, ChangesetError): |
2977
cff9d4e1d821
Fixed issue when node didn't exists at 'tip' and we tried calculate history based on that assumption.
Marcin Kuzminski <marcin@python-works.com>
parents:
2973
diff
changeset
|
769 #this node is not present at tip ! |
cff9d4e1d821
Fixed issue when node didn't exists at 'tip' and we tried calculate history based on that assumption.
Marcin Kuzminski <marcin@python-works.com>
parents:
2973
diff
changeset
|
770 changesets = cs.get_file_history(f_path) |
128
9deb6f1d5b90
Implemented file history.
Marcin Kuzminski <marcin@python-works.com>
parents:
106
diff
changeset
|
771 hist_l = [] |
774
c47152c5fe01
added tags, and branches to file history select box, fixed annotation changeset errors crash on wrongly given revions
Marcin Kuzminski <marcin@python-works.com>
parents:
691
diff
changeset
|
772 |
c47152c5fe01
added tags, and branches to file history select box, fixed annotation changeset errors crash on wrongly given revions
Marcin Kuzminski <marcin@python-works.com>
parents:
691
diff
changeset
|
773 changesets_group = ([], _("Changesets")) |
c47152c5fe01
added tags, and branches to file history select box, fixed annotation changeset errors crash on wrongly given revions
Marcin Kuzminski <marcin@python-works.com>
parents:
691
diff
changeset
|
774 branches_group = ([], _("Branches")) |
c47152c5fe01
added tags, and branches to file history select box, fixed annotation changeset errors crash on wrongly given revions
Marcin Kuzminski <marcin@python-works.com>
parents:
691
diff
changeset
|
775 tags_group = ([], _("Tags")) |
2046
4e1e265af5ca
remove branch from git filenode history drop-down
Marcin Kuzminski <marcin@python-works.com>
parents:
2007
diff
changeset
|
776 _hg = cs.repository.alias == 'hg' |
128
9deb6f1d5b90
Implemented file history.
Marcin Kuzminski <marcin@python-works.com>
parents:
106
diff
changeset
|
777 for chs in changesets: |
3001
37c7abd34d44
implements #636, lazy loading of history and authors to speed up page responsiveness.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
778 #_branch = '(%s)' % chs.branch if _hg else '' |
37c7abd34d44
implements #636, lazy loading of history and authors to speed up page responsiveness.
Marcin Kuzminski <marcin@python-works.com>
parents:
2995
diff
changeset
|
779 _branch = chs.branch |
3009
f0e19116f154
fixed file history tests
Marcin Kuzminski <marcin@python-works.com>
parents:
3001
diff
changeset
|
780 n_desc = 'r%s:%s (%s)' % (chs.revision, chs.short_id, _branch) |
774
c47152c5fe01
added tags, and branches to file history select box, fixed annotation changeset errors crash on wrongly given revions
Marcin Kuzminski <marcin@python-works.com>
parents:
691
diff
changeset
|
781 changesets_group[0].append((chs.raw_id, n_desc,)) |
c47152c5fe01
added tags, and branches to file history select box, fixed annotation changeset errors crash on wrongly given revions
Marcin Kuzminski <marcin@python-works.com>
parents:
691
diff
changeset
|
782 hist_l.append(changesets_group) |
c47152c5fe01
added tags, and branches to file history select box, fixed annotation changeset errors crash on wrongly given revions
Marcin Kuzminski <marcin@python-works.com>
parents:
691
diff
changeset
|
783 |
1045
3fc9183e05dd
another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents:
1044
diff
changeset
|
784 for name, chs in c.rhodecode_repo.branches.items(): |
774
c47152c5fe01
added tags, and branches to file history select box, fixed annotation changeset errors crash on wrongly given revions
Marcin Kuzminski <marcin@python-works.com>
parents:
691
diff
changeset
|
785 branches_group[0].append((chs, name),) |
c47152c5fe01
added tags, and branches to file history select box, fixed annotation changeset errors crash on wrongly given revions
Marcin Kuzminski <marcin@python-works.com>
parents:
691
diff
changeset
|
786 hist_l.append(branches_group) |
c47152c5fe01
added tags, and branches to file history select box, fixed annotation changeset errors crash on wrongly given revions
Marcin Kuzminski <marcin@python-works.com>
parents:
691
diff
changeset
|
787 |
1045
3fc9183e05dd
another major codes rewrite:
Marcin Kuzminski <marcin@python-works.com>
parents:
1044
diff
changeset
|
788 for name, chs in c.rhodecode_repo.tags.items(): |
774
c47152c5fe01
added tags, and branches to file history select box, fixed annotation changeset errors crash on wrongly given revions
Marcin Kuzminski <marcin@python-works.com>
parents:
691
diff
changeset
|
789 tags_group[0].append((chs, name),) |
c47152c5fe01
added tags, and branches to file history select box, fixed annotation changeset errors crash on wrongly given revions
Marcin Kuzminski <marcin@python-works.com>
parents:
691
diff
changeset
|
790 hist_l.append(tags_group) |
3009
f0e19116f154
fixed file history tests
Marcin Kuzminski <marcin@python-works.com>
parents:
3001
diff
changeset
|
791 |
2981
6cd0f8f8aef1
Let the function calculating changeset history do all the work
Marcin Kuzminski <marcin@python-works.com>
parents:
2977
diff
changeset
|
792 return hist_l, changesets |
1452
8585fbf3ed06
Implemented #111 copy github node finder solution
Marcin Kuzminski <marcin@python-works.com>
parents:
1450
diff
changeset
|
793 |
2457
01e005cabd4d
moved login required into seperate calls for files due to optional API access option
Marcin Kuzminski <marcin@python-works.com>
parents:
2456
diff
changeset
|
794 @LoginRequired() |
1452
8585fbf3ed06
Implemented #111 copy github node finder solution
Marcin Kuzminski <marcin@python-works.com>
parents:
1450
diff
changeset
|
795 @HasRepoPermissionAnyDecorator('repository.read', 'repository.write', |
8585fbf3ed06
Implemented #111 copy github node finder solution
Marcin Kuzminski <marcin@python-works.com>
parents:
1450
diff
changeset
|
796 'repository.admin') |
2457
01e005cabd4d
moved login required into seperate calls for files due to optional API access option
Marcin Kuzminski <marcin@python-works.com>
parents:
2456
diff
changeset
|
797 @jsonify |
1452
8585fbf3ed06
Implemented #111 copy github node finder solution
Marcin Kuzminski <marcin@python-works.com>
parents:
1450
diff
changeset
|
798 def nodelist(self, repo_name, revision, f_path): |
8585fbf3ed06
Implemented #111 copy github node finder solution
Marcin Kuzminski <marcin@python-works.com>
parents:
1450
diff
changeset
|
799 if request.environ.get('HTTP_X_PARTIAL_XHR'): |
8585fbf3ed06
Implemented #111 copy github node finder solution
Marcin Kuzminski <marcin@python-works.com>
parents:
1450
diff
changeset
|
800 cs = self.__get_cs_or_redirect(revision, repo_name) |
1810
203af05539e0
implements #330 api method for listing nodes at particular revision
Marcin Kuzminski <marcin@python-works.com>
parents:
1809
diff
changeset
|
801 _d, _f = ScmModel().get_nodes(repo_name, cs.raw_id, f_path, |
203af05539e0
implements #330 api method for listing nodes at particular revision
Marcin Kuzminski <marcin@python-works.com>
parents:
1809
diff
changeset
|
802 flat=False) |
2428
530bd12fc18a
removed JSON array envelope from filter files function
Marcin Kuzminski <marcin@python-works.com>
parents:
2318
diff
changeset
|
803 return {'nodes': _d + _f} |