- Создана структура docs/ с категориями: completed, guides, architecture, diagnostic, in-progress, reports - Перемещено 47+ MD файлов из корня проекта в docs/ - Удалено 6 устаревших/дублирующихся файлов - Создана структура backend/scripts/ для тестов и утилит - Перемещено 35 Python скриптов в backend/scripts/ - Создана структура backend/docs/ для технической документации - Перемещено 12 MD файлов backend в backend/docs/ - Перемещены LDAP тестовые данные в backend/tests/fixtures/ - Добавлены README файлы для навигации - Добавлены правила в .github/copilot-instructions.md для размещения документации Результат: - Корень проекта: только README.md - Корень backend/: только manage.py и Django приложения - Вся документация организована в структурированные папки
109 lines
3.0 KiB
Python
109 lines
3.0 KiB
Python
#!/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")
|