changeset 285:42f5c36820ef

few validation bugfixes/ new repo changesets, first commit changesets
author Marcin Kuzminski <marcin@python-works.com>
date Mon, 14 Jun 2010 01:16:57 +0200
parents c4caeca9dd66
children 6603c9891b91
files pylons_app/controllers/changeset.py pylons_app/templates/changeset/changeset.html pylons_app/templates/index.html
diffstat 3 files changed, 59 insertions(+), 49 deletions(-) [+]
line wrap: on
line diff
--- 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 <marcin@python-works.com>
+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')
--- 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 @@
 				<div class="date">${_('Date')}: ${c.changeset.date}</div>
 				<div class="author">${_('Author')}: ${c.changeset.author}</div>
 				<div class="message">
-					${c.changeset.message}
+					${h.wrap_paragraphs(c.changeset.message)}
 				</div>
 			</div>	
 			<div class="right">
--- 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']))}</td>
 		    <td title="${repo['description']}">${h.truncate(repo['description'],60)}</td>
 	        <td>${h.age(repo['last_change'])}</td>
-	        <td>${h.link_to('r%s:%s' % (repo['rev'],repo['tip']),
+	        <td>${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']))}</td>