Files
backend-v1/core/apps/chat/signals/chat.py
2026-04-17 18:14:24 +05:00

56 lines
1.8 KiB
Python

from asgiref.sync import async_to_sync
from channels.layers import get_channel_layer
from django.conf import settings
from django.db.models.signals import post_save
from django.dispatch import receiver
from core.apps.chat.models import ChatmessageModel, ChatroomModel
# @receiver(post_save, sender=ChatmessageModel)
# def broadcast_new_message(sender, instance, created, **kwargs):
# """Yangi xabar saqlanganda xonadagi barcha WS ulanishlariga yuboradi."""
# if not created:
# return
# channel_layer = get_channel_layer()
# if channel_layer is None:
# return
# sender_obj = instance.sender
# if sender_obj:
# full_name = sender_obj.get_full_name().strip() or str(sender_obj.phone)
# sender_data = {
# "id": sender_obj.id,
# "full_name": full_name,
# "role": sender_obj.role,
# }
# else:
# sender_data = None
# site_url = getattr(settings, "SITE_URL", "").rstrip("/")
# file_url = (site_url + instance.file.url) if instance.file else None
# async_to_sync(channel_layer.group_send)(
# f"chat_room_{instance.room_id}",
# {
# "type": "chat_message",
# "id": instance.id,
# "message_type": instance.message_type,
# "text": instance.text,
# "file_url": file_url,
# "sender": sender_data,
# "created_at": instance.created_at.isoformat(),
# },
# )
@receiver(post_save, sender="evaluation.AutoEvaluationModel")
def auto_create_chatroom(sender, instance, created, **kwargs):
"""AutoEvaluation yaratilganda avtomatik chat xonasi ochiladi."""
if created:
ChatroomModel.objects.get_or_create(
auto_evaluation=instance,
defaults={"type": "auto_evaluation"},
)