67 lines
2.3 KiB
Python
67 lines
2.3 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}, '
|
|
f'Обновлено: {updated_count}'
|
|
)
|
|
)
|