fix(settings): improve logic for auto-setting default root paths based on folder presence

This commit is contained in:
Will Miao
2025-09-25 10:56:09 +08:00
parent c4e357793f
commit da52e5b9dd

View File

@@ -111,24 +111,30 @@ class SettingsManager:
logger.info("Migration completed") logger.info("Migration completed")
def _auto_set_default_roots(self): def _auto_set_default_roots(self):
"""Auto set default root paths if only one folder is present and default is empty.""" """Auto set default root paths when only one folder is present and the current default is unset or not among the options."""
folder_paths = self.settings.get('folder_paths', {}) folder_paths = self.settings.get('folder_paths', {})
updated = False updated = False
# loras # loras
loras = folder_paths.get('loras', []) loras = folder_paths.get('loras', [])
if isinstance(loras, list) and len(loras) == 1 and not self.settings.get('default_lora_root'): if isinstance(loras, list) and len(loras) == 1:
self.settings['default_lora_root'] = loras[0] current_lora_root = self.settings.get('default_lora_root')
updated = True if current_lora_root not in loras:
self.settings['default_lora_root'] = loras[0]
updated = True
# checkpoints # checkpoints
checkpoints = folder_paths.get('checkpoints', []) checkpoints = folder_paths.get('checkpoints', [])
if isinstance(checkpoints, list) and len(checkpoints) == 1 and not self.settings.get('default_checkpoint_root'): if isinstance(checkpoints, list) and len(checkpoints) == 1:
self.settings['default_checkpoint_root'] = checkpoints[0] current_checkpoint_root = self.settings.get('default_checkpoint_root')
updated = True if current_checkpoint_root not in checkpoints:
self.settings['default_checkpoint_root'] = checkpoints[0]
updated = True
# embeddings # embeddings
embeddings = folder_paths.get('embeddings', []) embeddings = folder_paths.get('embeddings', [])
if isinstance(embeddings, list) and len(embeddings) == 1 and not self.settings.get('default_embedding_root'): if isinstance(embeddings, list) and len(embeddings) == 1:
self.settings['default_embedding_root'] = embeddings[0] current_embedding_root = self.settings.get('default_embedding_root')
updated = True if current_embedding_root not in embeddings:
self.settings['default_embedding_root'] = embeddings[0]
updated = True
if updated: if updated:
self._save_settings() self._save_settings()