from __future__ import annotations from django.core.exceptions import ValidationError class MultilingualValidationMixin: """Opt-in mixin for project models that want explicit clean()-time enforcement.""" def clean(self): from .types import format_issue from .validators.multilingual import validate_snippet_instance super_clean = getattr(super(), "clean", None) if callable(super_clean): super_clean() issues = validate_snippet_instance(self) blocking = [issue for issue in issues if issue.blocks] if blocking: raise ValidationError({"content_guard": [format_issue(issue) for issue in blocking]})