Source code for app.portfolio.models.entity.dependency_event_handler.impl

# SPDX-License-Identifier: GPLv3-or-later
# Copyright © 2025 pygaindalf Rui Pinheiro


from abc import ABCMeta, abstractmethod
from typing import TYPE_CHECKING, Any, override

from ..entity_record import EntityRecord
from .base import EntityDependencyEventHandlerBase


if TYPE_CHECKING:
    from .type_enum import EntityDependencyEventType


# MARK: Implementation Record
[docs] class EntityDependencyEventHandlerImpl[ T_Owner: EntityRecord, T_Record: EntityRecord, ]( EntityDependencyEventHandlerBase[T_Owner, T_Record], metaclass=ABCMeta, ):
[docs] @staticmethod @override def entity_matchers(owner: T_Owner, record: T_Record) -> bool: return True
[docs] @staticmethod @override def attribute_matchers(owner: T_Owner, record: T_Record, attribute: str, value: Any) -> bool: return True
[docs] @staticmethod @override @abstractmethod def handler(owner: T_Owner, event: EntityDependencyEventType, record: T_Record, *, matched_attributes: frozenset[str] | None = None) -> None: msg = "EntityDependencyEventHandlerImplRecord.handler must be overridden in subclasses." raise NotImplementedError(msg)
def __init_subclass__(cls, *args, init: bool = False, **kwargs) -> None: super().__init_subclass__(*args, **kwargs) if (on_updated := getattr(cls, "on_updated", None)) is None or not isinstance(on_updated, bool): msg = f"{cls.__name__} must define the on_updated class attribute." raise NotImplementedError(msg) if (on_deleted := getattr(cls, "on_deleted", None)) is None or not isinstance(on_deleted, bool): msg = f"{cls.__name__} must define the on_deleted class attribute." raise NotImplementedError(msg)