56 lines
2.0 KiB
Python
56 lines
2.0 KiB
Python
# backend/communications/management/commands/init_reactions.py
|
|
"""Команда для инициализации дефолтных реакций"""
|
|
|
|
from django.core.management.base import BaseCommand
|
|
|
|
from communications.models import AvailableReaction
|
|
|
|
|
|
class Command(BaseCommand):
|
|
help = "Инициализирует дефолтные реакции в БД"
|
|
|
|
def handle(self, *args, **options):
|
|
default_reactions = [
|
|
("👍", "Лайк", 1),
|
|
("❤️", "Сердце", 2),
|
|
("😂", "Смех", 3),
|
|
("😮", "Удивление", 4),
|
|
("😢", "Грусть", 5),
|
|
("🙏", "Спасибо", 6),
|
|
("👏", "Аплодисменты", 7),
|
|
("🔥", "Огонь", 8),
|
|
]
|
|
|
|
created_count = 0
|
|
updated_count = 0
|
|
|
|
for emoji, name, order in default_reactions:
|
|
reaction, created = AvailableReaction.objects.get_or_create(
|
|
emoji=emoji, defaults={"name": name, "order": order, "is_active": True}
|
|
)
|
|
|
|
if created:
|
|
created_count += 1
|
|
self.stdout.write(
|
|
self.style.SUCCESS(f"✓ Создана реакция: {emoji} {name}")
|
|
)
|
|
else:
|
|
# Обновляем порядок если изменился
|
|
if reaction.order != order:
|
|
reaction.order = order
|
|
reaction.save(update_fields=["order"])
|
|
updated_count += 1
|
|
self.stdout.write(
|
|
self.style.WARNING(f"↻ Обновлён порядок: {emoji} {name}")
|
|
)
|
|
else:
|
|
self.stdout.write(
|
|
self.style.NOTICE(f"- Уже существует: {emoji} {name}")
|
|
)
|
|
|
|
self.stdout.write(
|
|
self.style.SUCCESS(
|
|
f"\nГотово! Создано: {created_count}, Обновлено: {updated_count}"
|
|
)
|
|
)
|