diff --git a/awx/conf/migrations/0005_v330_rename_two_session_settings.py b/awx/conf/migrations/0005_v330_rename_two_session_settings.py index 1dd9c040e8..4e4b561ec4 100644 --- a/awx/conf/migrations/0005_v330_rename_two_session_settings.py +++ b/awx/conf/migrations/0005_v330_rename_two_session_settings.py @@ -5,13 +5,13 @@ from awx.conf.migrations import _rename_setting def copy_session_settings(apps, schema_editor): - _rename_setting.rename_setting(apps, schema_editor, old_key='AUTH_TOKEN_PER_USER', new_key='SESSION_COOKIE_AGE') - _rename_setting.rename_setting(apps, schema_editor, old_key='AUTH_TOKEN_EXPIRATION', new_key='SESSIONS_PER_USER') + _rename_setting.rename_setting(apps, schema_editor, old_key='AUTH_TOKEN_PER_USER', new_key='SESSIONS_PER_USER') + _rename_setting.rename_setting(apps, schema_editor, old_key='AUTH_TOKEN_EXPIRATION', new_key='SESSION_COOKIE_AGE') def reverse_copy_session_settings(apps, schema_editor): - _rename_setting.rename_setting(apps, schema_editor, old_key='SESSION_COOKIE_AGE', new_key='AUTH_TOKEN_PER_USER') - _rename_setting.rename_setting(apps, schema_editor, old_key='SESSIONS_PER_USER', new_key='SESSIONS_PER_USER''AUTH_TOKEN_EXPIRATION') + _rename_setting.rename_setting(apps, schema_editor, old_key='SESSION_COOKIE_AGE', new_key='AUTH_TOKEN_EXPIRATION') + _rename_setting.rename_setting(apps, schema_editor, old_key='SESSIONS_PER_USER', new_key='AUTH_TOKEN_PER_USER') class Migration(migrations.Migration): diff --git a/awx/conf/migrations/_rename_setting.py b/awx/conf/migrations/_rename_setting.py index 1d9c91884f..dbbc347edf 100644 --- a/awx/conf/migrations/_rename_setting.py +++ b/awx/conf/migrations/_rename_setting.py @@ -2,6 +2,7 @@ from __future__ import unicode_literals import logging from django.utils.timezone import now +from django.conf import settings logger = logging.getLogger('awx.conf.settings') @@ -9,20 +10,23 @@ __all__ = ['rename_setting'] def rename_setting(apps, schema_editor, old_key, new_key): - + + old_setting = None Setting = apps.get_model('conf', 'Setting') - - if Setting.objects.filter(key=new_key).exists(): + if Setting.objects.filter(key=new_key).exists() or hasattr(settings, new_key): logger.info('Setting ' + new_key + ' unexpectedly exists before this migration, it will be replaced by the value of the ' + old_key + ' setting.') Setting.objects.filter(key=new_key).delete() - - old_setting = Setting.objects.filter(key=old_key).first() + # Look for db setting, which wouldn't be picked up by SettingsWrapper because the register method is gone + if Setting.objects.filter(key=old_key).exists(): + old_setting = Setting.objects.filter(key=old_key).last().value + Setting.objects.filter(key=old_key).delete() + # Look for "on-disk" setting (/etc/tower/conf.d) + if hasattr(settings, old_key): + old_setting = getattr(settings, old_key) if old_setting is not None: Setting.objects.create(key=new_key, - value=old_setting.value, + value=old_setting, created=now(), modified=now() ) - Setting.objects.filter(key=old_key).delete() - \ No newline at end of file