From 82a068e61077e50ea0151752869d3c6be90aba30 Mon Sep 17 00:00:00 2001 From: Will Miao <13051207myq@gmail.com> Date: Wed, 30 Jul 2025 10:08:21 +0800 Subject: [PATCH] feat: auto set default root paths for loras, checkpoints, and embeddings in settings --- py/config.py | 3 +++ py/services/settings_manager.py | 23 +++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/py/config.py b/py/config.py index b0c944c3..b0f0f059 100644 --- a/py/config.py +++ b/py/config.py @@ -59,6 +59,9 @@ class Config: if self.checkpoints_roots and len(self.checkpoints_roots) == 1 and "default_checkpoint_root" not in settings: settings["default_checkpoint_root"] = self.checkpoints_roots[0] + + if self.embeddings_roots and len(self.embeddings_roots) == 1 and "default_embedding_root" not in settings: + settings["default_embedding_root"] = self.embeddings_roots[0] # Save settings with open(settings_path, 'w', encoding='utf-8') as f: diff --git a/py/services/settings_manager.py b/py/services/settings_manager.py index a003c2df..d9e2d866 100644 --- a/py/services/settings_manager.py +++ b/py/services/settings_manager.py @@ -9,6 +9,7 @@ class SettingsManager: def __init__(self): self.settings_file = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), 'settings.json') self.settings = self._load_settings() + self._auto_set_default_roots() self._check_environment_variables() def _load_settings(self) -> Dict[str, Any]: @@ -21,6 +22,28 @@ class SettingsManager: logger.error(f"Error loading settings: {e}") return self._get_default_settings() + def _auto_set_default_roots(self): + """Auto set default root paths if only one folder is present and default is empty.""" + folder_paths = self.settings.get('folder_paths', {}) + updated = False + # loras + loras = folder_paths.get('loras', []) + if isinstance(loras, list) and len(loras) == 1 and not self.settings.get('default_lora_root'): + self.settings['default_lora_root'] = loras[0] + updated = True + # checkpoints + checkpoints = folder_paths.get('checkpoints', []) + if isinstance(checkpoints, list) and len(checkpoints) == 1 and not self.settings.get('default_checkpoint_root'): + self.settings['default_checkpoint_root'] = checkpoints[0] + updated = True + # embeddings + embeddings = folder_paths.get('embeddings', []) + if isinstance(embeddings, list) and len(embeddings) == 1 and not self.settings.get('default_embedding_root'): + self.settings['default_embedding_root'] = embeddings[0] + updated = True + if updated: + self._save_settings() + def _check_environment_variables(self) -> None: """Check for environment variables and update settings if needed""" env_api_key = os.environ.get('CIVITAI_API_KEY')