TorbatYar/backend/services/experience/app/policies/publishing.py
Mortezakoohjani 203671a7bf feat(experience): ship Experience Platform phases 11.0-11.10
Add the experience service with sites through analytics/AI hooks, migrations through 0011, and phase docs/manifests marking the track complete.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-27 11:43:10 +03:30

65 lines
1.8 KiB
Python

"""Publishing / SEO / PWA policies — Phase 11.7."""
from __future__ import annotations
from app.models.types import (
DomainEdgeStatus,
PublishReleaseStatus,
PwaStatus,
RobotsStatus,
SeoStatus,
SitemapStatus,
)
from app.validators.publishing import (
ensure_edge_status_transition,
ensure_publish_status_transition,
ensure_simple_status_transition,
)
class PublishReleasePolicy:
def assert_status_change(
self, *, current: PublishReleaseStatus, target: PublishReleaseStatus
) -> PublishReleaseStatus:
ensure_publish_status_transition(current, target)
return target
class DomainEdgeBindingPolicy:
def assert_status_change(
self, *, current: DomainEdgeStatus, target: DomainEdgeStatus
) -> DomainEdgeStatus:
ensure_edge_status_transition(current, target)
return target
class SeoPolicy:
def assert_status_change(
self, *, current: SeoStatus, target: SeoStatus
) -> SeoStatus:
ensure_simple_status_transition(current, target, label="seo")
return target
class SitemapPolicy:
def assert_status_change(
self, *, current: SitemapStatus, target: SitemapStatus
) -> SitemapStatus:
ensure_simple_status_transition(current, target, label="sitemap")
return target
class RobotsPolicy:
def assert_status_change(
self, *, current: RobotsStatus, target: RobotsStatus
) -> RobotsStatus:
ensure_simple_status_transition(current, target, label="robots")
return target
class PwaPolicy:
def assert_status_change(
self, *, current: PwaStatus, target: PwaStatus
) -> PwaStatus:
ensure_simple_status_transition(current, target, label="pwa")
return target