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