diff --git a/evennia/comms/migrations/0013_auto_20170705_1726.py b/evennia/comms/migrations/0013_auto_20170705_1726.py index f74bf9566e..b48b822b7b 100644 --- a/evennia/comms/migrations/0013_auto_20170705_1726.py +++ b/evennia/comms/migrations/0013_auto_20170705_1726.py @@ -2,7 +2,17 @@ # Generated by Django 1.11.2 on 2017-07-05 17:26 from __future__ import unicode_literals -from django.db import migrations, models +from django.db import migrations, models, connection +from django.db import OperationalError + +def _table_exists(db_cursor, tablename): + "Returns bool if table exists or not" + sql_check_exists = "SELECT * from %s;" % tablename + try: + db_cursor.execute(sql_check_exists) + return True + except OperationalError: + return False class Migration(migrations.Migration): @@ -12,40 +22,47 @@ class Migration(migrations.Migration): ('comms', '0012_merge_20170617_2017'), ] - operations = [ - migrations.AddField( - model_name='channeldb', - name='db_account_subscriptions', - field=models.ManyToManyField(blank=True, db_index=True, related_name='account_subscription_set', to='accounts.AccountDB', verbose_name=b'account subscriptions'), - ), - migrations.AddField( - model_name='msg', - name='db_hide_from_accounts', - field=models.ManyToManyField(blank=True, related_name='hide_from_accounts_set', to='accounts.AccountDB'), - ), - migrations.AddField( - model_name='msg', - name='db_receivers_accounts', - field=models.ManyToManyField(blank=True, help_text=b'account receivers', related_name='receiver_account_set', to='accounts.AccountDB'), - ), - migrations.AddField( - model_name='msg', - name='db_sender_accounts', - field=models.ManyToManyField(blank=True, db_index=True, related_name='sender_account_set', to='accounts.AccountDB', verbose_name=b'sender(account)'), - ), - migrations.AlterField( - model_name='channeldb', - name='db_object_subscriptions', - field=models.ManyToManyField(blank=True, db_index=True, related_name='object_subscription_set', to='objects.ObjectDB', verbose_name=b'object subscriptions'), - ), - migrations.AlterField( - model_name='msg', - name='db_receivers_scripts', - field=models.ManyToManyField(blank=True, help_text=b'script_receivers', related_name='receiver_script_set', to='scripts.ScriptDB'), - ), - migrations.AlterField( - model_name='msg', - name='db_sender_scripts', - field=models.ManyToManyField(blank=True, db_index=True, related_name='sender_script_set', to='scripts.ScriptDB', verbose_name=b'sender(script)'), - ), - ] + db_cursor = connection.cursor() + + if not _table_exists(db_cursor, 'comms_msg_db_hide_from_players'): + # OBS - this is run BEFORE migrations are run! + # not a migration of an existing database + operations = [] + else: + operations = [ + migrations.AddField( + model_name='channeldb', + name='db_account_subscriptions', + field=models.ManyToManyField(blank=True, db_index=True, related_name='account_subscription_set', to='accounts.AccountDB', verbose_name=b'account subscriptions'), + ), + migrations.AddField( + model_name='msg', + name='db_hide_from_accounts', + field=models.ManyToManyField(blank=True, related_name='hide_from_accounts_set', to='accounts.AccountDB'), + ), + migrations.AddField( + model_name='msg', + name='db_receivers_accounts', + field=models.ManyToManyField(blank=True, help_text=b'account receivers', related_name='receiver_account_set', to='accounts.AccountDB'), + ), + migrations.AddField( + model_name='msg', + name='db_sender_accounts', + field=models.ManyToManyField(blank=True, db_index=True, related_name='sender_account_set', to='accounts.AccountDB', verbose_name=b'sender(account)'), + ), + migrations.AlterField( + model_name='channeldb', + name='db_object_subscriptions', + field=models.ManyToManyField(blank=True, db_index=True, related_name='object_subscription_set', to='objects.ObjectDB', verbose_name=b'object subscriptions'), + ), + migrations.AlterField( + model_name='msg', + name='db_receivers_scripts', + field=models.ManyToManyField(blank=True, help_text=b'script_receivers', related_name='receiver_script_set', to='scripts.ScriptDB'), + ), + migrations.AlterField( + model_name='msg', + name='db_sender_scripts', + field=models.ManyToManyField(blank=True, db_index=True, related_name='sender_script_set', to='scripts.ScriptDB', verbose_name=b'sender(script)'), + ), + ]