From da097a88d997477bd66f0b8fea6d285bacc0005e Mon Sep 17 00:00:00 2001 From: Kelketek Date: Fri, 19 Jul 2013 17:13:57 -0500 Subject: [PATCH] Fixed an issue with case sensitivity in table names for the migrations. Fixed issue with transactions when converting nicks and aliases. --- .../migrations/0024_rename_tmp_to_player.py | 2 +- ...4_copy_nicks_to_liteattrs_aliases_to_tags.py | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/players/migrations/0024_rename_tmp_to_player.py b/src/players/migrations/0024_rename_tmp_to_player.py index 85db97515e..f89371f9ef 100644 --- a/src/players/migrations/0024_rename_tmp_to_player.py +++ b/src/players/migrations/0024_rename_tmp_to_player.py @@ -8,7 +8,7 @@ class Migration(SchemaMigration): def forwards(self, orm): - db.rename_table('players_PlayerDBtmp', 'players_PlayerDB') + db.rename_table('players_playerdbtmp', 'players_playerdb') def backwards(self, orm): raise RuntimeError("Cannot revert this migration.") diff --git a/src/typeclasses/migrations/0004_copy_nicks_to_liteattrs_aliases_to_tags.py b/src/typeclasses/migrations/0004_copy_nicks_to_liteattrs_aliases_to_tags.py index 17d6456cea..1192ca32da 100644 --- a/src/typeclasses/migrations/0004_copy_nicks_to_liteattrs_aliases_to_tags.py +++ b/src/typeclasses/migrations/0004_copy_nicks_to_liteattrs_aliases_to_tags.py @@ -13,32 +13,49 @@ class Migration(DataMigration): # Note: Don't use "from appname.models import ModelName". # Use orm.ModelName to refer to models in this application, # and orm['appname.ModelName'] for models in other applications. + + # Each alias and nick is its own case. By default, this function starts + # in a transaction, so we'll close that and make our own transactions. + db.commit_transaction() + for alias in orm['objects.Alias'].objects.all(): # convert all Aliases to tags try: + db.start_transaction() tag = orm.Tag(db_key=alias.db_key, db_category="object_alias", db_data=None) tag.save() obj = alias.db_obj obj.db_tags.add(tag) + db.commit_transaction() except IntegrityError: + db.commit_transaction() print "Tag already exists: %s for %s" % (alias.db_key, alias.db_obj.db_key) # convert all nicks to LiteAttrs for nick in orm['objects.ObjectNick'].objects.all(): try: + db.start_transaction() lattr = orm.LiteAttribute(db_key=nick.db_nick, db_category="object_nick_%s" % nick.db_type, db_data=nick.db_real) lattr.save() obj = nick.db_obj obj.db_liteattributes.add(lattr) + db.commit_transaction() except IntegrityError: + db.commit_transaction() print "Nick already exists: %s for %s" % (nick.db_nick, nick.db_obj.db_key) for nick in orm['players.PlayerNick'].objects.all(): try: + db.start_transaction() lattr = orm.LiteAttribute(db_key=nick.db_nick, db_category="player_nick_%s" % nick.db_type, db_data=nick.db_real) lattr.save() obj = nick.db_obj obj.db_liteattributes.add(lattr) + db.commit_transaction() except IntegrityError: + db.commit_transaction() print "Nick already exists: %s for %s" % (nick.db_nick, nick.db_obj.db_key) + # South expects the migration to be transaction managed. So start up a + # new transaction for it to close immediately when it exits this function. + db.commit_transaction() def backwards(self, orm):