from django.core.cache import cache
from django.db.models.signals import post_delete, post_save
from django.dispatch import receiver

from apps.taxonomy.models import Category

from .models import Annonce, Article

PUBLIC_CACHE_KEYS = ["public.nav_categories", "public.flash_infos", "public.home"]


@receiver([post_save, post_delete], sender=Article)
@receiver([post_save, post_delete], sender=Annonce)
@receiver([post_save, post_delete], sender=Category)
def _on_change(sender, **kwargs):
    flush_public_cache()


def flush_public_cache():
    cache.delete_many(PUBLIC_CACHE_KEYS)
