Add multilingual audit CI pipeline + extract mandelblog_content_guard
This commit is contained in:
26
mandelblog_content_guard/signals.py
Normal file
26
mandelblog_content_guard/signals.py
Normal file
@@ -0,0 +1,26 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from functools import lru_cache
|
||||
|
||||
from django.db.models.signals import pre_save
|
||||
from django.dispatch import receiver
|
||||
from wagtail.models import Page
|
||||
from wagtail.snippets.models import get_snippet_models
|
||||
|
||||
from .validators.multilingual import validate_instance_or_raise
|
||||
|
||||
|
||||
@lru_cache(maxsize=1)
|
||||
def _snippet_models():
|
||||
return tuple(get_snippet_models())
|
||||
|
||||
|
||||
def _is_snippet_instance(instance) -> bool:
|
||||
instance_model = instance.__class__
|
||||
return any(model == instance_model for model in _snippet_models())
|
||||
|
||||
|
||||
@receiver(pre_save)
|
||||
def enforce_multilingual_integrity(sender, instance, **kwargs):
|
||||
if isinstance(instance, Page) or _is_snippet_instance(instance):
|
||||
validate_instance_or_raise(instance)
|
||||
Reference in New Issue
Block a user