from django.db.models.signals import post_save, post_delete from django.dispatch import receiver from django.core.cache import cache from .models import Product, Category, ProductTree @receiver([post_save, post_delete], sender=Product) def clear_product_cache(sender, instance, **kwargs): """ Product modeli güncellendiğinde, silindiğinde veya yeni bir ürün eklendiğinde ilgili cache'leri temizler. """ cache.delete('product:products:list') cache.delete('product:products:featured') cache.delete(f'product:product:{instance.slug}') @receiver([post_save, post_delete], sender=Category) def clear_category_cache(sender, instance, **kwargs): """ Category modeli güncellendiğinde, silindiğinde veya yeni bir kategori eklendiğinde ilgili cache'leri temizler. """ cache.delete('product:categories:list') cache.delete(f'product:category:{instance.slug}') # Eğer alt kategoriler varsa, üst kategorinin de cache'ini temizlemek gerekebilir. if instance.parent: cache.delete(f'product:category:{instance.parent.slug}') @receiver([post_save, post_delete], sender=ProductTree) def clear_product_tree_cache(sender, instance, **kwargs): """ ProductTree modeli güncellendiğinde, silindiğinde veya yeni bir nesne eklendiğinde ilgili cache'i temizler. """ cache.delete('product:product_trees:list')