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: