import logging from sqlalchemy import * from rhodecode.model import init_model_encryption, meta from rhodecode.lib.utils2 import safe_str from rhodecode.lib.dbmigrate.versions import _reset_base, notify log = logging.getLogger(__name__) def get_all_settings(models): settings = { 'rhodecode_' + result.app_settings_name: result.app_settings_value for result in models.RhodeCodeSetting.query() } return settings def get_ui_by_section_and_key(models, section, key): q = models.RhodeCodeUi.query() q = q.filter(models.RhodeCodeUi.ui_section == section) q = q.filter(models.RhodeCodeUi.ui_key == key) return q.scalar() def create_ui_section_value(models, Session, section, val, key=None, active=True): new_ui = models.RhodeCodeUi() new_ui.ui_section = section new_ui.ui_value = val new_ui.ui_active = active new_ui.ui_key = key Session().add(new_ui) return new_ui def create_or_update_ui( models, Session, section, key, value=None, active=None): ui = get_ui_by_section_and_key(models, section, key) if not ui: active = True if active is None else active create_ui_section_value( models, Session, section, value, key=key, active=active) else: if active is not None: ui.ui_active = active if value is not None: ui.ui_value = value Session().add(ui) 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_4_4_0_1 init_model_encryption(db_4_4_0_1) fixups(db_4_4_0_1, meta.Session) def downgrade(migrate_engine): meta = MetaData() meta.bind = migrate_engine def fixups(models, Session): current_settings = get_all_settings(models) svn_proxy_enabled = safe_str(current_settings.get( 'rhodecode_proxy_subversion_http_requests', 'False')) svn_proxy_url = current_settings.get( 'rhodecode_subversion_http_server_url', '') create_or_update_ui( models, Session, 'vcs_svn_proxy', 'http_requests_enabled', value=svn_proxy_enabled) create_or_update_ui( models, Session, 'vcs_svn_proxy', 'http_server_url', value=svn_proxy_url) Session().commit()