comparison pylons_app/controllers/files.py @ 158:f905f45c457e

moved diff libs to vcs. updated htmls and css for diff and source
author Marcin Kuzminski <marcin@python-works.com>
date Mon, 17 May 2010 01:51:47 +0200
parents 0c00fbaff55a
children 0f7f93df5802
comparison
equal deleted inserted replaced
157:a72fb7d330bd 158:f905f45c457e
4 from pylons.controllers.util import abort, redirect 4 from pylons.controllers.util import abort, redirect
5 5
6 from pylons_app.lib.base import BaseController, render 6 from pylons_app.lib.base import BaseController, render
7 from pylons_app.lib.utils import get_repo_slug 7 from pylons_app.lib.utils import get_repo_slug
8 from pylons_app.model.hg_model import HgModel 8 from pylons_app.model.hg_model import HgModel
9 from difflib import unified_diff 9 from vcs.utils import diffs as differ
10 from pylons_app.lib.differ import render_udiff
11 from vcs.exceptions import RepositoryError, ChangesetError 10 from vcs.exceptions import RepositoryError, ChangesetError
12 11
13 log = logging.getLogger(__name__) 12 log = logging.getLogger(__name__)
14 13
15 class FilesController(BaseController): 14 class FilesController(BaseController):
81 c.no_changes = diff1 == diff2 80 c.no_changes = diff1 == diff2
82 c.f_path = f_path 81 c.f_path = f_path
83 c.repo = hg_model.get_repo(c.repo_name) 82 c.repo = hg_model.get_repo(c.repo_name)
84 c.changeset_1 = c.repo.get_changeset(diff1) 83 c.changeset_1 = c.repo.get_changeset(diff1)
85 c.changeset_2 = c.repo.get_changeset(diff2) 84 c.changeset_2 = c.repo.get_changeset(diff2)
86 f1 = c.changeset_1.get_node(f_path)
87 f2 = c.changeset_2.get_node(f_path)
88 85
89 c.diff1 = 'r%s:%s' % (c.changeset_1.revision, c.changeset_1._short) 86 c.diff1 = 'r%s:%s' % (c.changeset_1.revision, c.changeset_1._short)
90 c.diff2 = 'r%s:%s' % (c.changeset_2.revision, c.changeset_2._short) 87 c.diff2 = 'r%s:%s' % (c.changeset_2.revision, c.changeset_2._short)
91
92 f_udiff = unified_diff(f1.content.splitlines(True),
93 f2.content.splitlines(True),
94 f1.name,
95 f2.name)
96 88
97 c.diff_files = render_udiff(udiff=f_udiff, differ='difflib') 89
98 print c.diff_files 90 f_udiff = differ.get_udiff(c.changeset_1.get_node(f_path),
99 if len(c.diff_files) < 1: 91 c.changeset_2.get_node(f_path))
100 c.no_changes = True 92 c.differ = differ.DiffProcessor(f_udiff)
101 return render('files/file_diff.html') 93 return render('files/file_diff.html')
102 94
103 def _get_history(self, repo, node, f_path): 95 def _get_history(self, repo, node, f_path):
104 from vcs.nodes import NodeKind 96 from vcs.nodes import NodeKind
105 if not node.kind is NodeKind.FILE: 97 if not node.kind is NodeKind.FILE: