uchill/backend/apps/referrals/management/commands/init_referral_levels.py

87 lines
2.9 KiB
Python

"""
Команда для инициализации уровней реферальной программы.
"""
from django.core.management.base import BaseCommand
from apps.referrals.models import ReferralLevel
class Command(BaseCommand):
"""Создать начальные уровни реферальной программы."""
help = 'Создать начальные уровни реферальной программы'
def handle(self, *args, **options):
levels_data = [
{
'level': 1,
'name': 'Новичок',
'points_required': 0,
'bonus_payment_percent': 60,
'icon': '🌱'
},
{
'level': 2,
'name': 'Активный',
'points_required': 50,
'bonus_payment_percent': 70,
'icon': '🌿'
},
{
'level': 3,
'name': 'Продвинутый',
'points_required': 110, # 50 + 60
'bonus_payment_percent': 80,
'icon': '🌳'
},
{
'level': 4,
'name': 'Эксперт',
'points_required': 180, # 50 + 60 + 70
'bonus_payment_percent': 90,
'icon': ''
},
{
'level': 5,
'name': 'Мастер',
'points_required': 270, # 50 + 60 + 70 + 90
'bonus_payment_percent': 95,
'icon': '👑'
},
]
created_count = 0
updated_count = 0
for data in levels_data:
level, created = ReferralLevel.objects.update_or_create(
level=data['level'],
defaults={
'name': data['name'],
'points_required': data['points_required'],
'bonus_payment_percent': data['bonus_payment_percent'],
'icon': data['icon']
}
)
if created:
created_count += 1
self.stdout.write(
self.style.SUCCESS(
f'✅ Создан уровень {level.level}: {level.name}'
)
)
else:
updated_count += 1
self.stdout.write(
self.style.WARNING(
f'🔄 Обновлен уровень {level.level}: {level.name}'
)
)
self.stdout.write(
self.style.SUCCESS(
f'\n✅ Готово! Создано: {created_count}, Обновлено: {updated_count}'
)
)