From ff4f3f0575ddd3a34fa1ff0654ef0a7a6330bd9a Mon Sep 17 00:00:00 2001 From: ievgenii vdovenko Date: Fri, 25 Jul 2025 11:04:21 +0200 Subject: [PATCH] feature: made migration moe robust --- rhodecode/lib/dbmigrate/schema/db_4_20_0_1.py | 8 ++++++ .../dbmigrate/versions/117_version_5_7_0.py | 25 ++++++++++--------- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/rhodecode/lib/dbmigrate/schema/db_4_20_0_1.py b/rhodecode/lib/dbmigrate/schema/db_4_20_0_1.py index 0f4b751e..16a4add2 100644 --- a/rhodecode/lib/dbmigrate/schema/db_4_20_0_1.py +++ b/rhodecode/lib/dbmigrate/schema/db_4_20_0_1.py @@ -4091,6 +4091,14 @@ class _PullRequestBase(BaseModel): "reviewer_data_json", MutationObj.as_mutable(JsonType(dialect_map=dict(mysql=UnicodeText(16384)))) ) + settings = Column( + "settings_json", + MutationObj.as_mutable( + JsonType(dialect_map=dict(mysql=UnicodeText(16384))), + ), + default=dict, + ) + @property def reviewer_data_json(self): return json.dumps(self.reviewer_data) diff --git a/rhodecode/lib/dbmigrate/versions/117_version_5_7_0.py b/rhodecode/lib/dbmigrate/versions/117_version_5_7_0.py index 37fb2ee3..7582ab92 100644 --- a/rhodecode/lib/dbmigrate/versions/117_version_5_7_0.py +++ b/rhodecode/lib/dbmigrate/versions/117_version_5_7_0.py @@ -27,19 +27,20 @@ def upgrade(migrate_engine): UserModel: User = db.User - ghost_user = UserModel() - ghost_user.name = UserModel.GHOST_USER.capitalize() - ghost_user.username = UserModel.GHOST_USER - ghost_user.lastname = "User" - ghost_user.strict_creation_check = False - ghost_user.email = UserModel.GHOST_USER_EMAIL - ghost_user.active = False - ghost_user.description = "System user to own assets of deleted users (does not consume license slot)" - ghost_user.is_new_user = False + if not User.get_by_username(UserModel.GHOST_USER): + ghost_user = UserModel() + ghost_user.name = UserModel.GHOST_USER.capitalize() + ghost_user.username = UserModel.GHOST_USER + ghost_user.lastname = "User" + ghost_user.strict_creation_check = False + ghost_user.email = UserModel.GHOST_USER_EMAIL + ghost_user.active = False + ghost_user.description = "System user to own assets of deleted users (does not consume license slot)" + ghost_user.is_new_user = False - session = meta.Session() - session.add(ghost_user) - session.commit() + session = meta.Session() + session.add(ghost_user) + session.commit() def downgrade(migrate_engine):