import logging from sqlalchemy.orm.attributes import flag_modified from rhodecode.lib.dbmigrate.versions import _reset_base from rhodecode.model import init_model_encryption, meta log = logging.getLogger(__name__) def upgrade(migrate_engine): """ Upgrade operations go here. Don't create your own engine; bind migrate_engine to your metadata """ _reset_base(migrate_engine) from rhodecode.lib.dbmigrate.schema import db_3_7_0_0 init_model_encryption(db_3_7_0_0) fixups(db_3_7_0_0, meta.Session) def downgrade(migrate_engine): pass AUTH_PLUGINS_SETTING = "auth_plugins" PLUGIN_ID_MAP = { 'rhodecode.lib.auth_modules.auth_crowd': 'egg:rhodecode-enterprise-ce#crowd', 'rhodecode.lib.auth_modules.auth_container': 'egg:rhodecode-enterprise-ce#container', 'rhodecode.lib.auth_modules.auth_jasig_cas': 'egg:rhodecode-enterprise-ce#jasig_cas', 'rhodecode.lib.auth_modules.auth_ldap': 'egg:rhodecode-enterprise-ce#ldap', 'rhodecode.lib.auth_modules.auth_pam': 'egg:rhodecode-enterprise-ce#pam', 'rhodecode.lib.auth_modules.auth_rhodecode': 'egg:rhodecode-enterprise-ce#rhodecode', 'rhodecode.lib.auth_modules.auth_bitbucket': 'egg:rhodecode-enterprise-ee#bitbucket', 'rhodecode.lib.auth_modules.auth_github': 'egg:rhodecode-enterprise-ee#github', 'rhodecode.lib.auth_modules.auth_google': 'egg:rhodecode-enterprise-ee#google', 'rhodecode.lib.auth_modules.auth_ldap_group': 'egg:rhodecode-enterprise-ee#ldap_group', 'rhodecode.lib.auth_modules.auth_token': 'egg:rhodecode-enterprise-ee#token', 'rhodecode.lib.auth_modules.auth_twitter': 'egg:rhodecode-enterprise-ee#twitter', } def fixups(models, Session): query = models.RhodeCodeSetting.query().filter( models.RhodeCodeSetting.app_settings_name == AUTH_PLUGINS_SETTING) plugin_setting = query.scalar() plugins = plugin_setting.app_settings_value new_plugins = [] missed_plugins = [] for plugin_id in plugins: new_plugin_id = PLUGIN_ID_MAP.get(plugin_id, None) if new_plugin_id: new_plugins.append(new_plugin_id) else: new_plugins.append(plugin_id) missed_plugins.append(plugin_id) plugin_setting.app_settings_value = ','.join(new_plugins) log.info("Migration of the auth plugin IDs") log.info("Original setting value: %s", plugins) log.info("New setting value: %s", new_plugins) if missed_plugins: log.warning("Unknown plugin ids: %s", missed_plugins) log.warning( "Please check the auth settings and re-enable needed plugins.") Session().commit()