diff rhodecode/lib/__init__.py @ 1466:ad5a543a9b2f beta

Code cleanup - extended repository models with scm functions - moved get_changeset_safe function to lib
author Marcin Kuzminski <marcin@python-works.com>
date Mon, 12 Sep 2011 02:42:06 +0300
parents b7563ad4e7ee
children 76b358f81926
line wrap: on
line diff
--- a/rhodecode/lib/__init__.py	Mon Sep 12 02:24:52 2011 +0300
+++ b/rhodecode/lib/__init__.py	Mon Sep 12 02:42:06 2011 +0300
@@ -140,7 +140,7 @@
 
 def generate_api_key(username, salt=None):
     """
-    Generates unique API key for given username,if salt is not given
+    Generates unique API key for given username, if salt is not given
     it'll be generated from some random string
 
     :param username: username as string
@@ -342,3 +342,23 @@
 
     return ''.join(uri)
 
+def get_changeset_safe(repo, rev):
+    """
+    Safe version of get_changeset if this changeset doesn't exists for a 
+    repo it returns a Dummy one instead
+    
+    :param repo:
+    :param rev:
+    """
+    from vcs.backends.base import BaseRepository
+    from vcs.exceptions import RepositoryError
+    if not isinstance(repo, BaseRepository):
+        raise Exception('You must pass an Repository '
+                        'object as first argument got %s', type(repo))
+
+    try:
+        cs = repo.get_changeset(rev)
+    except RepositoryError:
+        from rhodecode.lib.utils import EmptyChangeset
+        cs = EmptyChangeset(requested_revision=rev)
+    return cs
\ No newline at end of file