051_version_4_0_0.py
75 lines
| 2.6 KiB
| text/x-python
|
PythonLexer
r5042 | ||||
r1 | ||||
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() | ||||