87 lines
2.9 KiB
Python
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}'
|
|
)
|
|
)
|
|
|