Files
mandelstudio/mandelblog_content_guard/mixins.py

20 lines
690 B
Python

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]})