From 77fa10304b172c7c83e65925b80cf11cb3e863e0 Mon Sep 17 00:00:00 2001 From: Aditya Toshniwal Date: Mon, 23 Jun 2025 15:51:42 +0530 Subject: [PATCH] Fixed a UI layout issue that occurred after upgrading from pgAdmin v9.2 when all tabs had been closed prior to the upgrade. #8830 --- web/migrations/versions/c62bcc14c3d6_.py | 31 +++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/web/migrations/versions/c62bcc14c3d6_.py b/web/migrations/versions/c62bcc14c3d6_.py index 2f0cd36f6..7229a5357 100644 --- a/web/migrations/versions/c62bcc14c3d6_.py +++ b/web/migrations/versions/c62bcc14c3d6_.py @@ -15,6 +15,7 @@ Create Date: 2025-06-02 21:45:20.653669 """ import sqlalchemy as sa from alembic import op +import json # revision identifiers, used by Alembic. revision = 'c62bcc14c3d6' @@ -26,7 +27,7 @@ depends_on = None def upgrade(): # Add 'change_password' permission to all roles except 'Administrator'. meta = sa.MetaData() - meta.reflect(op.get_bind(), only=('role',)) + meta.reflect(op.get_bind(), only=('role', 'setting')) role_table = sa.Table('role', meta) perm = role_table.c.permissions @@ -40,6 +41,34 @@ def upgrade(): )) ) + # With latest rc-dock, we need to add panelLock to saved layout + # as default layout has panelLock. + setting_table = sa.Table('setting', meta) + rows = op.get_bind().execute( + setting_table.select().where( + setting_table.c.setting == 'Browser/Layout' + ) + ).fetchall() + + for row in rows: + if row.value: + try: + layout = json.loads(row.value) + layout['dockbox']['children'][1]['panelLock'] = { + "panelStyle": "playground" + } + op.execute( + setting_table.update().where( + setting_table.c.user_id == row.user_id, + setting_table.c.setting == 'Browser/Layout' + ).values( + value=json.dumps(layout) + ) + ) + except Exception as _: + # ignore any errors + continue + op.create_table( 'application_state', sa.Column('uid', sa.Integer(), nullable=False),