Mercurial > public > src > rhodecode
comparison pylons_app/controllers/files.py @ 160:0f7f93df5802
implemented rawdiff and diff download into diff view.
Few css changes
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Wed, 19 May 2010 00:18:48 +0200 |
parents | f905f45c457e |
children | b68b2246e5a6 |
comparison
equal
deleted
inserted
replaced
159:96285f905073 | 160:0f7f93df5802 |
---|---|
63 | 63 |
64 def rawfile(self, repo_name, revision, f_path): | 64 def rawfile(self, repo_name, revision, f_path): |
65 hg_model = HgModel() | 65 hg_model = HgModel() |
66 c.repo = hg_model.get_repo(c.repo_name) | 66 c.repo = hg_model.get_repo(c.repo_name) |
67 file_node = c.repo.get_changeset(revision).get_node(f_path) | 67 file_node = c.repo.get_changeset(revision).get_node(f_path) |
68 response.headers['Content-type'] = file_node.mimetype | 68 response.content_type = file_node.mimetype |
69 response.headers['Content-disposition'] = 'attachment; filename=%s' \ | 69 response.content_disposition = 'attachment; filename=%s' \ |
70 % f_path.split('/')[-1] | 70 % f_path.split('/')[-1] |
71 return file_node.content | 71 return file_node.content |
72 | 72 |
73 def archivefile(self, repo_name, revision, fileformat): | 73 def archivefile(self, repo_name, revision, fileformat): |
74 return '%s %s %s' % (repo_name, revision, fileformat) | 74 return '%s %s %s' % (repo_name, revision, fileformat) |
75 | 75 |
76 def diff(self, repo_name, f_path): | 76 def diff(self, repo_name, f_path): |
77 hg_model = HgModel() | 77 hg_model = HgModel() |
78 diff1 = request.GET.get('diff1') | 78 diff1 = request.GET.get('diff1') |
79 diff2 = request.GET.get('diff2') | 79 diff2 = request.GET.get('diff2') |
80 c.action = action = request.GET.get('diff') | |
80 c.no_changes = diff1 == diff2 | 81 c.no_changes = diff1 == diff2 |
81 c.f_path = f_path | 82 c.f_path = f_path |
82 c.repo = hg_model.get_repo(c.repo_name) | 83 c.repo = hg_model.get_repo(c.repo_name) |
83 c.changeset_1 = c.repo.get_changeset(diff1) | 84 c.changeset_1 = c.repo.get_changeset(diff1) |
84 c.changeset_2 = c.repo.get_changeset(diff2) | 85 c.changeset_2 = c.repo.get_changeset(diff2) |
85 | 86 |
86 c.diff1 = 'r%s:%s' % (c.changeset_1.revision, c.changeset_1._short) | 87 c.diff1 = 'r%s:%s' % (c.changeset_1.revision, c.changeset_1._short) |
87 c.diff2 = 'r%s:%s' % (c.changeset_2.revision, c.changeset_2._short) | 88 c.diff2 = 'r%s:%s' % (c.changeset_2.revision, c.changeset_2._short) |
88 | |
89 | |
90 f_udiff = differ.get_udiff(c.changeset_1.get_node(f_path), | 89 f_udiff = differ.get_udiff(c.changeset_1.get_node(f_path), |
91 c.changeset_2.get_node(f_path)) | 90 c.changeset_2.get_node(f_path)) |
92 c.differ = differ.DiffProcessor(f_udiff) | 91 |
92 diff = differ.DiffProcessor(f_udiff) | |
93 | |
94 if action == 'download': | |
95 diff_name = '%s_vs_%s.diff' % (diff1, diff2) | |
96 response.content_type = 'text/plain' | |
97 response.content_disposition = 'attachment; filename=%s' \ | |
98 % diff_name | |
99 return diff.raw_diff() | |
100 | |
101 elif action == 'raw': | |
102 c.cur_diff = '<pre class="raw">%s</pre>' % diff.raw_diff() | |
103 elif action == 'diff': | |
104 c.cur_diff = diff.as_html() | |
105 | |
93 return render('files/file_diff.html') | 106 return render('files/file_diff.html') |
94 | 107 |
95 def _get_history(self, repo, node, f_path): | 108 def _get_history(self, repo, node, f_path): |
96 from vcs.nodes import NodeKind | 109 from vcs.nodes import NodeKind |
97 if not node.kind is NodeKind.FILE: | 110 if not node.kind is NodeKind.FILE: |