Mercurial > kallithea
comparison rhodecode/controllers/files.py @ 691:7486da5f0628 beta
Refactor codes for scm model
Some test updates, added test for admin user controller
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sun, 14 Nov 2010 22:54:16 +0100 |
parents | 373ee7031003 |
children | c47152c5fe01 |
comparison
equal
deleted
inserted
replaced
690:4685f3eafd35 | 691:7486da5f0628 |
---|---|
27 from pylons.i18n.translation import _ | 27 from pylons.i18n.translation import _ |
28 from pylons.controllers.util import redirect | 28 from pylons.controllers.util import redirect |
29 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator | 29 from rhodecode.lib.auth import LoginRequired, HasRepoPermissionAnyDecorator |
30 from rhodecode.lib.base import BaseController, render | 30 from rhodecode.lib.base import BaseController, render |
31 from rhodecode.lib.utils import EmptyChangeset | 31 from rhodecode.lib.utils import EmptyChangeset |
32 from rhodecode.model.hg import HgModel | 32 from rhodecode.model.scm import ScmModel |
33 from vcs.exceptions import RepositoryError, ChangesetError | 33 from vcs.exceptions import RepositoryError, ChangesetError |
34 from vcs.nodes import FileNode | 34 from vcs.nodes import FileNode |
35 from vcs.utils import diffs as differ | 35 from vcs.utils import diffs as differ |
36 import logging | 36 import logging |
37 import rhodecode.lib.helpers as h | 37 import rhodecode.lib.helpers as h |
47 def __before__(self): | 47 def __before__(self): |
48 super(FilesController, self).__before__() | 48 super(FilesController, self).__before__() |
49 c.file_size_limit = 250 * 1024 #limit of file size to display | 49 c.file_size_limit = 250 * 1024 #limit of file size to display |
50 | 50 |
51 def index(self, repo_name, revision, f_path): | 51 def index(self, repo_name, revision, f_path): |
52 hg_model = HgModel() | 52 hg_model = ScmModel() |
53 c.repo = hg_model.get_repo(c.repo_name) | 53 c.repo = hg_model.get_repo(c.repo_name) |
54 revision = request.POST.get('at_rev', None) or revision | 54 revision = request.POST.get('at_rev', None) or revision |
55 | 55 |
56 def get_next_rev(cur): | 56 def get_next_rev(cur): |
57 max_rev = len(c.repo.revisions) - 1 | 57 max_rev = len(c.repo.revisions) - 1 |
93 | 93 |
94 | 94 |
95 return render('files/files.html') | 95 return render('files/files.html') |
96 | 96 |
97 def rawfile(self, repo_name, revision, f_path): | 97 def rawfile(self, repo_name, revision, f_path): |
98 hg_model = HgModel() | 98 hg_model = ScmModel() |
99 c.repo = hg_model.get_repo(c.repo_name) | 99 c.repo = hg_model.get_repo(c.repo_name) |
100 file_node = c.repo.get_changeset(revision).get_node(f_path) | 100 file_node = c.repo.get_changeset(revision).get_node(f_path) |
101 response.content_type = file_node.mimetype | 101 response.content_type = file_node.mimetype |
102 response.content_disposition = 'attachment; filename=%s' \ | 102 response.content_disposition = 'attachment; filename=%s' \ |
103 % f_path.split('/')[-1] | 103 % f_path.split('/')[-1] |
104 return file_node.content | 104 return file_node.content |
105 | 105 |
106 def raw(self, repo_name, revision, f_path): | 106 def raw(self, repo_name, revision, f_path): |
107 hg_model = HgModel() | 107 hg_model = ScmModel() |
108 c.repo = hg_model.get_repo(c.repo_name) | 108 c.repo = hg_model.get_repo(c.repo_name) |
109 file_node = c.repo.get_changeset(revision).get_node(f_path) | 109 file_node = c.repo.get_changeset(revision).get_node(f_path) |
110 response.content_type = 'text/plain' | 110 response.content_type = 'text/plain' |
111 | 111 |
112 return file_node.content | 112 return file_node.content |
113 | 113 |
114 def annotate(self, repo_name, revision, f_path): | 114 def annotate(self, repo_name, revision, f_path): |
115 hg_model = HgModel() | 115 hg_model = ScmModel() |
116 c.repo = hg_model.get_repo(c.repo_name) | 116 c.repo = hg_model.get_repo(c.repo_name) |
117 c.cs = c.repo.get_changeset(revision) | 117 c.cs = c.repo.get_changeset(revision) |
118 c.file = c.cs.get_node(f_path) | 118 c.file = c.cs.get_node(f_path) |
119 c.file_history = self._get_history(c.repo, c.file, f_path) | 119 c.file_history = self._get_history(c.repo, c.file, f_path) |
120 | 120 |
139 if not data: | 139 if not data: |
140 break | 140 break |
141 yield data | 141 yield data |
142 | 142 |
143 archive = tempfile.TemporaryFile() | 143 archive = tempfile.TemporaryFile() |
144 repo = HgModel().get_repo(repo_name).repo | 144 repo = ScmModel().get_repo(repo_name).repo |
145 fname = '%s-%s%s' % (repo_name, revision, fileformat) | 145 fname = '%s-%s%s' % (repo_name, revision, fileformat) |
146 archival.archive(repo, archive, revision, archive_specs[fileformat][1], | 146 archival.archive(repo, archive, revision, archive_specs[fileformat][1], |
147 prefix='%s-%s' % (repo_name, revision)) | 147 prefix='%s-%s' % (repo_name, revision)) |
148 response.content_type = archive_specs[fileformat][0] | 148 response.content_type = archive_specs[fileformat][0] |
149 response.content_disposition = 'attachment; filename=%s' % fname | 149 response.content_disposition = 'attachment; filename=%s' % fname |
150 archive.seek(0) | 150 archive.seek(0) |
151 return read_in_chunks(archive) | 151 return read_in_chunks(archive) |
152 | 152 |
153 def diff(self, repo_name, f_path): | 153 def diff(self, repo_name, f_path): |
154 hg_model = HgModel() | 154 hg_model = ScmModel() |
155 diff1 = request.GET.get('diff1') | 155 diff1 = request.GET.get('diff1') |
156 diff2 = request.GET.get('diff2') | 156 diff2 = request.GET.get('diff2') |
157 c.action = request.GET.get('diff') | 157 c.action = request.GET.get('diff') |
158 c.no_changes = diff1 == diff2 | 158 c.no_changes = diff1 == diff2 |
159 c.f_path = f_path | 159 c.f_path = f_path |