Source code for cadrumo.application.modelo.calculation_revision_gate
"""Single application gate for persisted calculation-revision coordinates."""
from __future__ import annotations
from typing import TYPE_CHECKING
from ...domain.modelos.calculation_revision import CalculationRevision
from ..calculations.revision_carry_gate import revision_carry_outcome
from .action_errors import WorkUnitRevisionDivergenceError
if TYPE_CHECKING:
from ...domain.calculations.registry.authority import PinnedAuthorityOperation
[docs]
def require_calculation_revision_coordinates_current(
revision: CalculationRevision,
*,
operation: PinnedAuthorityOperation,
) -> None:
"""Refuse a persisted calculation whose producing registry coordinate diverges.
Core types:
:class:`~cadrumo.domain.modelos.calculation_revision.CalculationRevision`.
"""
outcome = revision_carry_outcome(revision.registry_snapshot_ref, operation=operation)
if not outcome.refused:
return
snapshot_ref = revision.registry_snapshot_ref
raise WorkUnitRevisionDivergenceError(
translated_message="application.modelo.errors.work_unit_revision_divergence",
context={
"work_unit_id": revision.work_unit_id,
"modelo": str(snapshot_ref.modelo),
"filing_year": str(snapshot_ref.modelo_year),
"period": str(snapshot_ref.period),
"work_unit_revision": str(snapshot_ref.revision_id),
"law_revision": str(outcome.selected_revision_id or "unresolvable"),
},
)
__all__ = ["require_calculation_revision_coordinates_current"]