TorbatYar/backend/services/delivery/app/policies/drivers.py
Mortezakoohjani 5c6a2e78cf feat(platform): seed service registry, deploy all modules, and fix homepage catalog.
Register all active platform services and base features in core DB so admin can manage them, add delivery/hospitality/sports-center backend phases, update apps catalog and production deploy tooling.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-27 12:39:51 +03:30

36 lines
1.0 KiB
Python

"""Driver domain policies — Phase 10.1."""
from __future__ import annotations
from app.models.types import DriverLifecycleAction, DriverStatus
from app.validators.drivers import (
ensure_driver_lifecycle_transition,
target_status_for,
validate_reason,
)
class DriverLifecyclePolicy:
"""Enforces legal driver status transitions and reason rules."""
REQUIRES_REASON = frozenset(
{
DriverLifecycleAction.SUSPEND,
DriverLifecycleAction.BLOCK,
DriverLifecycleAction.DEACTIVATE,
DriverLifecycleAction.ARCHIVE,
}
)
def assert_transition(
self,
*,
action: DriverLifecycleAction,
current: DriverStatus,
reason: str | None = None,
) -> tuple[DriverStatus, str | None]:
ensure_driver_lifecycle_transition(action=action, current=current)
cleaned = validate_reason(
reason, required=action in self.REQUIRES_REASON
)
return target_status_for(action), cleaned