# HG changeset patch # User Marcin Kuzminski # Date 1276471017 -7200 # Node ID 42f5c36820efa89ef7cbe8e8fffa3500f9ca2497 # Parent c4caeca9dd665b5a8840b65bca298b3c04ab815e few validation bugfixes/ new repo changesets, first commit changesets diff -r c4caeca9dd66 -r 42f5c36820ef pylons_app/controllers/changeset.py --- a/pylons_app/controllers/changeset.py Mon Jun 14 00:17:08 2010 +0200 +++ b/pylons_app/controllers/changeset.py Mon Jun 14 01:16:57 2010 +0200 @@ -2,6 +2,16 @@ # encoding: utf-8 # changeset controller for pylons # Copyright (C) 2009-2010 Marcin Kuzminski +from pylons import tmpl_context as c, url +from pylons.controllers.util import redirect +from pylons_app.lib.auth import LoginRequired +from pylons_app.lib.base import BaseController, render +from pylons_app.model.hg_model import HgModel +from vcs.exceptions import RepositoryError +from vcs.nodes import FileNode +from vcs.utils import diffs as differ +import logging +import traceback # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -22,13 +32,6 @@ changeset controller for pylons @author: marcink """ -from pylons import tmpl_context as c -from pylons_app.lib.auth import LoginRequired -from pylons_app.lib.base import BaseController, render -from pylons_app.model.hg_model import HgModel -from vcs.utils import diffs as differ -import logging -from vcs.nodes import FileNode log = logging.getLogger(__name__) @@ -41,46 +44,53 @@ def index(self, revision): hg_model = HgModel() - c.changeset = hg_model.get_repo(c.repo_name).get_changeset(revision) - c.changeset_old = c.changeset.parents[0] - c.changes = [] - + try: + c.changeset = hg_model.get_repo(c.repo_name).get_changeset(revision) + except RepositoryError: + log.error(traceback.format_exc()) + return redirect(url('hg_home')) + else: + try: + c.changeset_old = c.changeset.parents[0] + except IndexError: + c.changeset_old = None + c.changes = [] + + for node in c.changeset.added: + filenode_old = FileNode(node.path, '') + if filenode_old.is_binary or node.is_binary: + diff = 'binary file' + else: + f_udiff = differ.get_udiff(filenode_old, node) + diff = differ.DiffProcessor(f_udiff).as_html() + try: + diff = unicode(diff) + except: + log.warning('Decoding failed of %s', filenode_old) + log.warning('Decoding failed of %s', node) + diff = 'unsupported type' + cs1 = None + cs2 = node.last_changeset.raw_id + c.changes.append(('added', node, diff, cs1, cs2)) - for node in c.changeset.added: - filenode_old = FileNode(node.path, '') - if filenode_old.is_binary or node.is_binary: - diff = 'binary file' - else: - f_udiff = differ.get_udiff(filenode_old, node) - diff = differ.DiffProcessor(f_udiff).as_html() - try: - diff = unicode(diff) - except: - log.warning('Decoding failed of %s', filenode_old) - log.warning('Decoding failed of %s', node) - diff = 'unsupported type' - cs1 = None - cs2 = node.last_changeset.raw_id - c.changes.append(('added', node, diff, cs1, cs2)) - - for node in c.changeset.changed: - filenode_old = c.changeset_old.get_node(node.path) - if filenode_old.is_binary or node.is_binary: - diff = 'binary file' - else: - f_udiff = differ.get_udiff(filenode_old, node) - diff = differ.DiffProcessor(f_udiff).as_html() - try: - diff = unicode(diff) - except: - log.warning('Decoding failed of %s', filenode_old) - log.warning('Decoding failed of %s', node) - diff = 'unsupported type' - cs1 = filenode_old.last_changeset.raw_id - cs2 = node.last_changeset.raw_id - c.changes.append(('changed', node, diff, cs1, cs2)) - - for node in c.changeset.removed: - c.changes.append(('removed', node, None, None, None)) + for node in c.changeset.changed: + filenode_old = c.changeset_old.get_node(node.path) + if filenode_old.is_binary or node.is_binary: + diff = 'binary file' + else: + f_udiff = differ.get_udiff(filenode_old, node) + diff = differ.DiffProcessor(f_udiff).as_html() + try: + diff = unicode(diff) + except: + log.warning('Decoding failed of %s', filenode_old) + log.warning('Decoding failed of %s', node) + diff = 'unsupported type' + cs1 = filenode_old.last_changeset.raw_id + cs2 = node.last_changeset.raw_id + c.changes.append(('changed', node, diff, cs1, cs2)) + + for node in c.changeset.removed: + c.changes.append(('removed', node, None, None, None)) return render('changeset/changeset.html') diff -r c4caeca9dd66 -r 42f5c36820ef pylons_app/templates/changeset/changeset.html --- a/pylons_app/templates/changeset/changeset.html Mon Jun 14 00:17:08 2010 +0200 +++ b/pylons_app/templates/changeset/changeset.html Mon Jun 14 01:16:57 2010 +0200 @@ -26,7 +26,7 @@
${_('Date')}: ${c.changeset.date}
${_('Author')}: ${c.changeset.author}
- ${c.changeset.message} + ${h.wrap_paragraphs(c.changeset.message)}
diff -r c4caeca9dd66 -r 42f5c36820ef pylons_app/templates/index.html --- a/pylons_app/templates/index.html Mon Jun 14 00:17:08 2010 +0200 +++ b/pylons_app/templates/index.html Mon Jun 14 01:16:57 2010 +0200 @@ -36,7 +36,7 @@ h.url('summary_home',repo_name=repo['name']))} ${h.truncate(repo['description'],60)} ${h.age(repo['last_change'])} - ${h.link_to('r%s:%s' % (repo['rev'],repo['tip']), + ${h.link_to_if(repo['rev']>=0,'r%s:%s' % (repo['rev'],repo['tip']), h.url('changeset_home',repo_name=repo['name'],revision=repo['tip']), class_="tooltip", tooltip_title=h.tooltip(repo['last_msg']))}