fix: add reference check before deleting audio processing template
Prevent deleting templates that are still referenced by ProcessedAudioSource entities. Returns 400 with source names.
This commit is contained in:
@@ -6,6 +6,7 @@ from wled_controller.api.auth import AuthRequired
|
|||||||
from wled_controller.api.dependencies import (
|
from wled_controller.api.dependencies import (
|
||||||
fire_entity_event,
|
fire_entity_event,
|
||||||
get_audio_processing_template_store,
|
get_audio_processing_template_store,
|
||||||
|
get_audio_source_store,
|
||||||
get_processor_manager,
|
get_processor_manager,
|
||||||
)
|
)
|
||||||
from wled_controller.api.schemas.audio_processing import (
|
from wled_controller.api.schemas.audio_processing import (
|
||||||
@@ -158,6 +159,12 @@ async def delete_audio_processing_template(
|
|||||||
):
|
):
|
||||||
"""Delete an audio processing template."""
|
"""Delete an audio processing template."""
|
||||||
try:
|
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)
|
store.delete_template(template_id)
|
||||||
fire_entity_event("audio_processing_template", "deleted", template_id)
|
fire_entity_event("audio_processing_template", "deleted", template_id)
|
||||||
# Hot-update: rebuild filter pipelines for running streams that used this template
|
# Hot-update: rebuild filter pipelines for running streams that used this template
|
||||||
|
|||||||
Reference in New Issue
Block a user