Encapsulate target-type dispatch via polymorphism (Phase 1)

Replace isinstance checks with polymorphic methods on PictureTarget
hierarchy: register_with_manager, sync_with_manager, update_fields,
and has_picture_source property.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-20 02:20:33 +03:00
parent 3101894ab5
commit 99f47fdbf9
6 changed files with 109 additions and 69 deletions

View File

@@ -23,8 +23,6 @@ from wled_controller.storage.postprocessing_template_store import Postprocessing
from wled_controller.storage.pattern_template_store import PatternTemplateStore
from wled_controller.storage.picture_source_store import PictureSourceStore
from wled_controller.storage.picture_target_store import PictureTargetStore
from wled_controller.storage.wled_picture_target import WledPictureTarget
from wled_controller.storage.key_colors_picture_target import KeyColorsPictureTarget
from wled_controller.storage.profile_store import ProfileStore
from wled_controller.core.profiles.profile_engine import ProfileEngine
from wled_controller.utils import setup_logging, get_logger
@@ -182,29 +180,12 @@ async def lifespan(app: FastAPI):
targets = picture_target_store.get_all_targets()
registered_targets = 0
for target in targets:
if isinstance(target, WledPictureTarget) and target.device_id:
try:
processor_manager.add_target(
target_id=target.id,
device_id=target.device_id,
settings=target.settings,
picture_source_id=target.picture_source_id,
)
registered_targets += 1
logger.info(f"Registered target: {target.name} ({target.id})")
except Exception as e:
logger.error(f"Failed to register target {target.id}: {e}")
elif isinstance(target, KeyColorsPictureTarget):
try:
processor_manager.add_kc_target(
target_id=target.id,
picture_source_id=target.picture_source_id,
settings=target.settings,
)
registered_targets += 1
logger.info(f"Registered KC target: {target.name} ({target.id})")
except Exception as e:
logger.error(f"Failed to register KC target {target.id}: {e}")
try:
target.register_with_manager(processor_manager)
registered_targets += 1
logger.info(f"Registered target: {target.name} ({target.id})")
except Exception as e:
logger.error(f"Failed to register target {target.id}: {e}")
logger.info(f"Registered {registered_targets} picture target(s)")