changeset 2036:872d5f0aafe4 beta

don't crash whole migrations if we cannot drop constraints. Those aren't so important. It might happen than older versions of rhodecode don't have those.
author Marcin Kuzminski <marcin@python-works.com>
date Sun, 26 Feb 2012 19:30:47 +0200
parents 3816bf3d0a5b
children 9388e2888b72 b64b809a3cae
files rhodecode/lib/dbmigrate/versions/005_version_1_3_0.py
diffstat 1 files changed, 19 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/lib/dbmigrate/versions/005_version_1_3_0.py	Sun Feb 26 19:05:04 2012 +0200
+++ b/rhodecode/lib/dbmigrate/versions/005_version_1_3_0.py	Sun Feb 26 19:30:47 2012 +0200
@@ -26,17 +26,24 @@
     tbl = UserRepoToPerm().__table__
     new_cons = UniqueConstraint('user_id', 'repository_id', 'permission_id', table=tbl)
     new_cons.create()
-
+    old_cons = None
     if migrate_engine.name in ['mysql']:
         old_cons = UniqueConstraint('user_id', 'repository_id', table=tbl, name="user_id")
-        old_cons.drop()
     elif migrate_engine.name in ['postgresql']:
         old_cons = UniqueConstraint('user_id', 'repository_id', table=tbl)
-        old_cons.drop()
     else:
         # sqlite doesn't support dropping constraints...
         print """Please manually drop UniqueConstraint('user_id', 'repository_id')"""
 
+    if old_cons:
+        try:
+            old_cons.drop()
+        except Exception, e:
+            # we don't care if this fails really... better to pass migration than
+            # leave this in intermidiate state
+            print 'Failed to remove Unique for user_id, repository_id reason %s' % e
+
+
     #==========================================================================
     # fix uniques of table `user_repo_group_to_perm`
     #==========================================================================
@@ -44,19 +51,26 @@
     tbl = UserRepoGroupToPerm().__table__
     new_cons = UniqueConstraint('group_id', 'permission_id', 'user_id', table=tbl)
     new_cons.create()
+    old_cons = None
 
     # fix uniqueConstraints
     if migrate_engine.name in ['mysql']:
         #mysql is givinig troubles here...
         old_cons = UniqueConstraint('group_id', 'permission_id', table=tbl, name="group_id")
-        old_cons.drop()
     elif migrate_engine.name in ['postgresql']:
         old_cons = UniqueConstraint('group_id', 'permission_id', table=tbl, name='group_to_perm_group_id_permission_id_key')
-        old_cons.drop()
     else:
         # sqlite doesn't support dropping constraints...
         print """Please manually drop UniqueConstraint('group_id', 'permission_id')"""
 
+    if old_cons:
+        try:
+            old_cons.drop()
+        except Exception, e:
+            # we don't care if this fails really... better to pass migration than
+            # leave this in intermidiate state
+            print 'Failed to remove Unique for user_id, repository_id reason %s' % e
+
     return