2222 serialize_stem_options ,
2323 settings_default_selection ,
2424)
25- from backend .services .storage import resolve_storage_paths
25+ from backend .services .storage import resolve_storage_paths , storage_path_from_setting
2626
2727DEFAULT_TEMP_MAX_AGE_HOURS = 24
2828DEFAULT_EXPORT_BUNDLE_MAX_AGE_DAYS = 7
@@ -45,6 +45,10 @@ def _resolve_storage_directory(raw_value: str) -> str:
4545 return str (Path (cleaned ).expanduser ().resolve ())
4646
4747
48+ def _storage_directory_or_default (value : Any , default : Path ) -> str :
49+ return str (storage_path_from_setting (value , default ))
50+
51+
4852def get_or_create_settings (session : Session , runtime_settings : RuntimeSettings ) -> AppSettings :
4953 settings = session .get (AppSettings , 1 )
5054 if settings is None :
@@ -80,16 +84,22 @@ def get_or_create_settings(session: Session, runtime_settings: RuntimeSettings)
8084def _backfill_settings (settings : AppSettings , runtime_settings : RuntimeSettings ) -> bool :
8185 changed = False
8286 defaults = {
83- "uploads_directory" : str ( runtime_settings .uploads_dir . resolve ()) ,
84- "outputs_directory" : str ( runtime_settings .output_dir . resolve ()) ,
85- "exports_directory" : str ( runtime_settings .exports_dir . resolve ()) ,
86- "temp_directory" : str ( runtime_settings .temp_dir . resolve ()) ,
87- "model_cache_directory" : str ( runtime_settings .model_cache_dir . resolve ()) ,
87+ "uploads_directory" : runtime_settings .uploads_dir ,
88+ "outputs_directory" : runtime_settings .output_dir ,
89+ "exports_directory" : runtime_settings .exports_dir ,
90+ "temp_directory" : runtime_settings .temp_dir ,
91+ "model_cache_directory" : runtime_settings .model_cache_dir ,
8892 "temp_max_age_hours" : DEFAULT_TEMP_MAX_AGE_HOURS ,
8993 "export_bundle_max_age_days" : DEFAULT_EXPORT_BUNDLE_MAX_AGE_DAYS ,
9094 }
9195 for field_name , value in defaults .items ():
92- if getattr (settings , field_name ) is None :
96+ if field_name .endswith ("_directory" ):
97+ normalized = _storage_directory_or_default (getattr (settings , field_name ), value )
98+ if getattr (settings , field_name ) == normalized :
99+ continue
100+ setattr (settings , field_name , normalized )
101+ changed = True
102+ elif getattr (settings , field_name ) is None :
93103 setattr (settings , field_name , value )
94104 changed = True
95105 if not isinstance (settings .default_stem_selection , dict ):
@@ -117,11 +127,14 @@ def serialize_settings(settings: AppSettings, runtime_settings: RuntimeSettings)
117127 default_selection = settings_default_selection (settings )
118128 storage = StorageSettingsResponse (
119129 database_path = str (runtime_settings .database_path .expanduser ().resolve ()),
120- uploads_directory = settings .uploads_directory or "" ,
121- outputs_directory = settings .outputs_directory ,
122- exports_directory = settings .exports_directory or "" ,
123- temp_directory = settings .temp_directory or "" ,
124- model_cache_directory = settings .model_cache_directory ,
130+ uploads_directory = _storage_directory_or_default (settings .uploads_directory , runtime_settings .uploads_dir ),
131+ outputs_directory = _storage_directory_or_default (settings .outputs_directory , runtime_settings .output_dir ),
132+ exports_directory = _storage_directory_or_default (settings .exports_directory , runtime_settings .exports_dir ),
133+ temp_directory = _storage_directory_or_default (settings .temp_directory , runtime_settings .temp_dir ),
134+ model_cache_directory = _storage_directory_or_default (
135+ settings .model_cache_directory ,
136+ runtime_settings .model_cache_dir ,
137+ ),
125138 )
126139 return SettingsResponse (
127140 storage = storage ,
0 commit comments