Mercurial > public > src > rhodecode
comparison pylons_app/controllers/files.py @ 147:873fd2dc62c2
Added rawfile support, and few fixes for file
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Tue, 11 May 2010 22:07:43 +0200 |
parents | 3f01d02c2cc6 |
children | b3c93efd1c97 |
comparison
equal
deleted
inserted
replaced
146:8bd3ce1dace3 | 147:873fd2dc62c2 |
---|---|
29 max_rev = len(c.repo.revisions) - 1 | 29 max_rev = len(c.repo.revisions) - 1 |
30 if revision > max_rev: | 30 if revision > max_rev: |
31 revision = max_rev | 31 revision = max_rev |
32 | 32 |
33 c.f_path = f_path | 33 c.f_path = f_path |
34 | |
35 | |
34 try: | 36 try: |
35 c.changeset = repo.get_changeset(repo._get_revision(revision)) | 37 c.changeset = repo.get_changeset(repo._get_revision(revision)) |
38 try: | |
39 c.file_msg = c.changeset.get_file_message(f_path) | |
40 except: | |
41 c.file_msg = None | |
42 | |
36 c.cur_rev = c.changeset.raw_id | 43 c.cur_rev = c.changeset.raw_id |
37 c.rev_nr = c.changeset.revision | 44 c.rev_nr = c.changeset.revision |
38 c.files_list = c.changeset.get_node(f_path) | 45 c.files_list = c.changeset.get_node(f_path) |
39 c.file_history = self._get_history(repo, c.files_list, f_path) | 46 c.file_history = self._get_history(repo, c.files_list, f_path) |
47 | |
40 except (RepositoryError, ChangesetError): | 48 except (RepositoryError, ChangesetError): |
41 c.files_list = None | 49 c.files_list = None |
42 | 50 |
43 return render('files/files.html') | 51 return render('files/files.html') |
44 | 52 |
53 def rawfile(self, repo_name, revision, f_path): | |
54 hg_model = HgModel() | |
55 c.repo = hg_model.get_repo(c.repo_name) | |
56 file_node = c.repo.get_changeset(revision).get_node(f_path) | |
57 response.headers['Content-type'] = file_node.mimetype | |
58 response.headers['Content-disposition'] = 'attachment; filename=%s' \ | |
59 % f_path.split('/')[-1] | |
60 return file_node.content | |
61 | |
45 def diff(self, repo_name, f_path): | 62 def diff(self, repo_name, f_path): |
46 hg_model = HgModel() | 63 hg_model = HgModel() |
47 diff1 = request.GET.get('diff1') | 64 diff1 = request.GET.get('diff1') |
48 diff2 = request.GET.get('diff2') | 65 diff2 = request.GET.get('diff2') |
49 c.no_changes = diff1 == diff2 | 66 c.no_changes = diff1 == diff2 |
50 c.f_path = f_path | 67 c.f_path = f_path |
51 c.repo = hg_model.get_repo(c.repo_name) | 68 c.repo = hg_model.get_repo(c.repo_name) |
52 c.changeset_1 = c.repo.get_changeset(diff1) | 69 c.changeset_1 = c.repo.get_changeset(diff1) |
53 c.changeset_2 = c.repo.get_changeset(diff2) | 70 c.changeset_2 = c.repo.get_changeset(diff2) |
54 | 71 |
55 c.file_1 = c.changeset_1.get_node(f_path).content | 72 c.file_1 = c.changeset_1.get_file_content(f_path) |
56 c.file_2 = c.changeset_2.get_node(f_path).content | 73 c.file_2 = c.changeset_2.get_file_content(f_path) |
57 c.diff1 = 'r%s:%s' % (c.changeset_1.revision, c.changeset_1._short) | 74 c.diff1 = 'r%s:%s' % (c.changeset_1.revision, c.changeset_1._short) |
58 c.diff2 = 'r%s:%s' % (c.changeset_2.revision, c.changeset_2._short) | 75 c.diff2 = 'r%s:%s' % (c.changeset_2.revision, c.changeset_2._short) |
59 | 76 |
60 d2 = unified_diff(c.file_1.splitlines(1), c.file_2.splitlines(1)) | 77 d2 = unified_diff(c.file_1.splitlines(1), c.file_2.splitlines(1)) |
61 c.diff_files = render_udiff(udiff=d2) | 78 c.diff_files = render_udiff(udiff=d2) |