""" Сигналы для пользователей. """ from django.db.models.signals import post_save, post_delete, m2m_changed from django.dispatch import receiver from django.core.cache import cache from .models import MentorStudentConnection, Group def _invalidate_manage_clients_cache(mentor_id): """Очистить кеш manage/clients для ментора (после удаления/изменения связи).""" for page in range(1, 10): for size in [10, 20, 50, 100, 1000]: cache.delete(f'manage_clients_{mentor_id}_{page}_{size}') @receiver(post_delete, sender=MentorStudentConnection) def mentor_student_connection_deleted(sender, instance, **kwargs): """При удалении связи — очистить кеш списка клиентов ментора.""" if instance.mentor_id: _invalidate_manage_clients_cache(instance.mentor_id) @receiver(post_save, sender=MentorStudentConnection) def mentor_student_connection_changed(sender, instance, created, **kwargs): """При изменении связи — очистить кеш (статус и т.д.).""" if instance.mentor_id: _invalidate_manage_clients_cache(instance.mentor_id) @receiver(post_save, sender=Group) def group_saved(sender, instance, created, **kwargs): """При создании/обновлении группы — синхронизировать групповой чат.""" try: from apps.chat.services import ChatService ChatService.get_or_create_group_chat(instance) except Exception: pass @receiver(m2m_changed, sender=Group.students.through) def group_students_changed(sender, instance, action, **kwargs): """При изменении участников группы — синхронизировать участников чата.""" if action in ('post_add', 'post_remove', 'post_clear'): try: from apps.chat.services import ChatService ChatService.get_or_create_group_chat(instance) except Exception: pass