mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-28 15:33:22 +00:00
feat: Gestion des inscriptions [#1] feat(frontend): Création des vues pour le paramétrage de l'école [#2] feat: Gestion du login [#6] fix: Correction lors de la migration des modèle [#8] feat: Révision du menu principal [#9] feat: Ajout d'un footer [#10] feat: Création des dockers compose pour les environnements de développement et de production [#12] doc(ci): Mise en place de Husky et d'un suivi de version automatique [#14]
44 lines
1.7 KiB
Python
44 lines
1.7 KiB
Python
from django.db.models.signals import post_save, post_delete, m2m_changed
|
|
from django.dispatch import receiver
|
|
from django.core.cache import cache
|
|
|
|
from GestionInscriptions.models import FicheInscription, Eleve, Responsable
|
|
from GestionLogin.models import Profil
|
|
from N3wtSchool import settings
|
|
from N3wtSchool.redis_client import redis_client
|
|
|
|
def clear_cache():
|
|
# Préfixes des clés à supprimer
|
|
prefixes = ['N3WT_']
|
|
|
|
for prefix in prefixes:
|
|
# Utiliser le motif pour obtenir les clés correspondant au préfixe
|
|
pattern = f'*{prefix}*'
|
|
print(f'pattern : {pattern}')
|
|
for key in redis_client.scan_iter(pattern):
|
|
redis_client.delete(key)
|
|
print(f'deleting : {key}')
|
|
|
|
@receiver(post_save, sender=FicheInscription)
|
|
@receiver(post_delete, sender=FicheInscription)
|
|
def clear_cache_after_change(sender, instance, **kwargs):
|
|
clear_cache()
|
|
|
|
@receiver(m2m_changed, sender=Eleve.responsables.through)
|
|
def check_orphan_reponsables(sender, **kwargs):
|
|
action = kwargs.pop('action', None)
|
|
instance = kwargs.pop('instance', None)
|
|
# pre_clear : lors de la suppression d'une FI (on fait un "clear" sur chaque relation)
|
|
if action in ('post_remove', 'post_clear'):
|
|
if instance.responsables.all():
|
|
Responsable.objects.filter(eleve=None).delete()
|
|
|
|
@receiver(m2m_changed, sender=Eleve.profils.through)
|
|
def check_orphan_profils(sender, **kwargs):
|
|
action = kwargs.pop('action', None)
|
|
instance = kwargs.pop('instance', None)
|
|
# pre_clear : lors de la suppression d'une FI (on fait un "clear" sur chaque relation)
|
|
if action in ('post_remove', 'post_clear'):
|
|
if instance.profils.all():
|
|
Profil.objects.filter(eleve=None).delete()
|