This commit is contained in:
Timothy Jaeryang Baek 2026-08-13 15:02:18 -06:00
parent 8d25ad00e2
commit 5c05608e3a
2 changed files with 21 additions and 7 deletions

View file

@ -39,7 +39,7 @@ from open_webui.utils.json_codec import JSONCodec
async def seed_registered_defaults():
await Config.rename_prefix('rag.web', 'web')
await Config.repair_flattened_dict_configs()
await Config.repair_config_rows()
await Config.seed_defaults(DEFAULT_CONFIG)

View file

@ -300,14 +300,16 @@ class Config(Base):
)
@staticmethod
async def repair_flattened_dict_configs() -> None:
"""Reassemble dict config values flattened by the per-key migration."""
async def repair_config_rows() -> None:
"""Repair known legacy config row shapes."""
if not Config.PERSISTENT_ENABLED:
return
async with get_async_db() as db:
repaired_keys: list[str] = []
orphan_keys: list[str] = []
default_model_keys: list[str] = []
now = int(time.time())
for config_key, aliases in DICT_CONFIG_KEY_ALIASES.items():
prefixes = (config_key, *aliases)
@ -355,14 +357,26 @@ class Config(Base):
if existing:
existing.value = repaired
existing.updated_at = int(time.time())
existing.updated_at = now
else:
db.add(Config(key=config_key, value=repaired, updated_at=int(time.time())))
db.add(Config(key=config_key, value=repaired, updated_at=now))
repaired_keys.append(config_key)
if orphan_keys:
await db.execute(delete(Config).where(Config.key.in_(orphan_keys)))
if repaired_keys or orphan_keys:
for key in ('ui.default_models', 'ui.default_pinned_models'):
row = await db.get(Config, key)
if not row or not isinstance(row.value, list):
continue
row.value = ','.join(model_id for model_id in (str(item).strip() for item in row.value) if model_id)
row.updated_at = now
default_model_keys.append(key)
if repaired_keys or orphan_keys or default_model_keys:
await db.commit()
log.info('Repaired flattened dict config rows for %s', ', '.join(repaired_keys))
if repaired_keys or orphan_keys:
log.info('Repaired flattened dict config rows for %s', ', '.join(repaired_keys))
if default_model_keys:
log.info('Repaired default model config rows for %s', ', '.join(default_model_keys))