From 436b0d39f754ba2000b257630e2a16bb69abc8c3 Mon Sep 17 00:00:00 2001 From: Andrii V Date: Mon, 4 Aug 2025 12:39:59 +0200 Subject: [PATCH] feat: migration for default value for prepopulate option --- .../dbmigrate/versions/118_version_5_7_0.py | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 rhodecode/lib/dbmigrate/versions/118_version_5_7_0.py diff --git a/rhodecode/lib/dbmigrate/versions/118_version_5_7_0.py b/rhodecode/lib/dbmigrate/versions/118_version_5_7_0.py new file mode 100644 index 00000000..a16cc702 --- /dev/null +++ b/rhodecode/lib/dbmigrate/versions/118_version_5_7_0.py @@ -0,0 +1,50 @@ +import logging +from sqlalchemy import * + +from rhodecode.lib.dbmigrate.versions import _reset_base +from rhodecode.model import meta, init_model_encryption + + +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_4_20_0_1 as db + + init_model_encryption(db) + + # Add default PR target branch pre-population setting + fixups(db, meta.Session) + + +def downgrade(migrate_engine): + pass + + +def fixups(models, _SESSION): + def get_by_name(cls, key): + return cls.query().filter(cls.app_settings_name == key).scalar() + + def create_or_update(cls, key, val="True", type_="bool"): + res = get_by_name(cls, key) + if not res: + res = cls(key, val, type_) + print(f"Creating new setting: {key} = {val}") + else: + print(f"Setting {key} already exists, skipping") + return res + + # Add global default setting + setting_name = "pr_target_branch_prepopulate" + setting_value = "True" # Default to True to maintain existing behavior + setting_type = "bool" + + sett = create_or_update(models.RhodeCodeSetting, setting_name, setting_value, setting_type) + _SESSION().add(sett) + _SESSION().commit()