From d04192ffb79ad634453cd96e61ff122347c55752 Mon Sep 17 00:00:00 2001 From: "alexei.dolgolyov" Date: Wed, 1 Apr 2026 23:28:48 +0300 Subject: [PATCH] fix: add reference check before deleting audio processing template Prevent deleting templates that are still referenced by ProcessedAudioSource entities. Returns 400 with source names. --- .../api/routes/audio_processing_templates.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/server/src/wled_controller/api/routes/audio_processing_templates.py b/server/src/wled_controller/api/routes/audio_processing_templates.py index e1ac218..d917628 100644 --- a/server/src/wled_controller/api/routes/audio_processing_templates.py +++ b/server/src/wled_controller/api/routes/audio_processing_templates.py @@ -6,6 +6,7 @@ from wled_controller.api.auth import AuthRequired from wled_controller.api.dependencies import ( fire_entity_event, get_audio_processing_template_store, + get_audio_source_store, get_processor_manager, ) from wled_controller.api.schemas.audio_processing import ( @@ -158,6 +159,12 @@ async def delete_audio_processing_template( ): """Delete an audio processing template.""" try: + # Check for references from audio sources + audio_source_store = get_audio_source_store() + refs = audio_source_store.get_sources_referencing_template(template_id) + if refs: + names = ", ".join(r.name for r in refs) + raise ValueError(f"Template is in use by audio source(s): {names}") store.delete_template(template_id) fire_entity_event("audio_processing_template", "deleted", template_id) # Hot-update: rebuild filter pipelines for running streams that used this template