changeset 136:36102488d634

Added empty changeset to use in newly created repository, and used this inside a hg model in repos list
author Marcin Kuzminski <marcin@python-works.com>
date Sun, 09 May 2010 14:13:20 +0200
parents 28f28d423268
children cf32c4cc26e8
files pylons_app/lib/utils.py pylons_app/model/hg_model.py
diffstat 2 files changed, 22 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/pylons_app/lib/utils.py	Sun May 09 13:20:52 2010 +0200
+++ b/pylons_app/lib/utils.py	Sun May 09 14:13:20 2010 +0200
@@ -90,5 +90,17 @@
     
     return baseui
 
+from vcs.backends.base import BaseChangeset
+from vcs.utils.lazy import LazyProperty
+class EmptyChangeset(BaseChangeset):
+    
+    revision = -1
 
+    @LazyProperty
+    def raw_id(self):
+        """
+        Returns raw string identifing this changeset, useful for web
+        representation.
+        """
+        return '0' * 12
 
--- a/pylons_app/model/hg_model.py	Sun May 09 13:20:52 2010 +0200
+++ b/pylons_app/model/hg_model.py	Sun May 09 14:13:20 2010 +0200
@@ -3,6 +3,7 @@
 #
 # Copyright (c) 2010 marcink.  All rights reserved.
 #
+from vcs.exceptions import RepositoryError
 '''
 Created on Apr 9, 2010
 
@@ -37,8 +38,12 @@
                 continue
             
             last_change = mercurial_repo.last_change
-            tip_rev = mercurial_repo._get_revision('tip')
-            tip = mercurial_repo.get_changeset(tip_rev)
+            try:
+                tip = mercurial_repo.get_changeset('tip')
+            except RepositoryError:
+                from pylons_app.lib.utils import EmptyChangeset
+                tip = EmptyChangeset()
+                
             tmp_d = {}
             tmp_d['name'] = mercurial_repo.name
             tmp_d['name_sort'] = tmp_d['name']
@@ -46,9 +51,9 @@
             tmp_d['description_sort'] = tmp_d['description']
             tmp_d['last_change'] = last_change
             tmp_d['last_change_sort'] = last_change[1] - last_change[0]
-            tmp_d['tip'] = tip._short
-            tmp_d['tip_sort'] = tip_rev
-            tmp_d['rev'] = tip_rev
+            tmp_d['tip'] = tip.raw_id
+            tmp_d['tip_sort'] = tip.revision 
+            tmp_d['rev'] = tip.revision
             tmp_d['contact'] = mercurial_repo.contact
             tmp_d['contact_sort'] = tmp_d['contact']
             tmp_d['repo_archives'] = list(mercurial_repo._get_archives())