#!/usr/bin/env python """ Быстрый тест signals без Unicode символов. """ import os import django os.environ.setdefault("DJANGO_SETTINGS_MODULE", "eusrr_backend.settings") django.setup() from django.contrib.auth import get_user_model from communications.models import Chat, Message from notifications.models import Notification Employee = get_user_model() print("\n" + "=" * 60) print(" БЫСТРЫЙ ТЕСТ СИСТЕМЫ УВЕДОМЛЕНИЙ") print("=" * 60 + "\n") # Создаем пользователей user1, _ = Employee.objects.get_or_create( email="quicktest1@test.com", defaults={ "first_name": "User", "last_name": "One", "phone_number": "+79991111111", "is_active": True, }, ) user2, _ = Employee.objects.get_or_create( email="quicktest2@test.com", defaults={ "first_name": "User", "last_name": "Two", "phone_number": "+79992222222", "is_active": True, }, ) print(f"[INFO] Пользователи: {user1.email}, {user2.email}\n") # Очищаем старые уведомления Notification.objects.filter(recipient__in=[user1, user2]).delete() # ТЕСТ 1: Приватный чат и сообщение print("=" * 60) print(" ТЕСТ: Communications - Сообщения и упоминания") print("=" * 60) chat = Chat.objects.create(type="private") chat.participants.add(user1, user2) print(f"[OK] Создан чат #{chat.id}") # Простое сообщение msg1 = Message.objects.create(chat=chat, author=user1, content="Привет! Как дела?") count = Notification.objects.filter( recipient=user2, notification_type__code="chat_new_message" ).count() print(f"[{'OK' if count > 0 else 'FAIL'}] Уведомление о новом сообщении: {count}") # Упоминание msg2 = Message.objects.create( chat=chat, author=user1, content=f"@{user2.email} нужна помощь!" ) count = Notification.objects.filter( recipient=user2, notification_type__code="chat_mention" ).count() print(f"[{'OK' if count > 0 else 'FAIL'}] Уведомление об упоминании: {count}") # Ответ на сообщение msg3 = Message.objects.create( chat=chat, author=user2, content="Конечно!", reply_to=msg1 ) count = Notification.objects.filter( recipient=user1, notification_type__code="chat_reply" ).count() print(f"[{'OK' if count > 0 else 'FAIL'}] Уведомление об ответе: {count}") # Итого total = Notification.objects.filter(recipient__in=[user1, user2]).count() print(f"\n[INFO] Всего создано уведомлений: {total}") # Показываем список print("\nСозданные уведомления:") for notif in Notification.objects.filter(recipient__in=[user1, user2])[:10]: print( f" - {notif.recipient.email}: [{notif.notification_type.code}] {notif.title}" ) print("\n" + "=" * 60) print(" ТЕСТ ЗАВЕРШЕН!") print("=" * 60 + "\n")