78 lines
2.7 KiB
Python
78 lines
2.7 KiB
Python
"""
|
|
Команда для инициализации предметов.
|
|
Создает стандартный список предметов в базе данных.
|
|
"""
|
|
from django.core.management.base import BaseCommand
|
|
from apps.schedule.models import Subject
|
|
|
|
|
|
SUBJECTS = [
|
|
'Русский язык',
|
|
'Литература',
|
|
'Родной язык и литература',
|
|
'Математика',
|
|
'Алгебра',
|
|
'Геометрия',
|
|
'Информатика и ИКТ',
|
|
'Иностранный язык',
|
|
'Второй иностранный язык',
|
|
'История',
|
|
'Обществознание',
|
|
'География',
|
|
'Биология',
|
|
'Физика',
|
|
'Химия',
|
|
'Окружающий мир',
|
|
'Основы религиозных культур и светской этики',
|
|
'Основы безопасности и защиты Родины (ОБЖ)',
|
|
'Астрономия',
|
|
'Музыка',
|
|
'Изобразительное искусство (ИЗО)',
|
|
'Технология',
|
|
'Физическая культура',
|
|
'Индивидуальный проект',
|
|
]
|
|
|
|
|
|
class Command(BaseCommand):
|
|
help = 'Инициализирует стандартный список предметов'
|
|
|
|
def handle(self, *args, **options):
|
|
created_count = 0
|
|
existing_count = 0
|
|
|
|
for subject_name in SUBJECTS:
|
|
subject, created = Subject.objects.get_or_create(
|
|
name=subject_name,
|
|
defaults={'is_active': True}
|
|
)
|
|
|
|
if created:
|
|
created_count += 1
|
|
self.stdout.write(
|
|
self.style.SUCCESS(f'✓ Создан предмет: {subject_name}')
|
|
)
|
|
else:
|
|
existing_count += 1
|
|
# Активируем предмет, если он был неактивен
|
|
if not subject.is_active:
|
|
subject.is_active = True
|
|
subject.save()
|
|
self.stdout.write(
|
|
self.style.WARNING(f'→ Активирован предмет: {subject_name}')
|
|
)
|
|
else:
|
|
self.stdout.write(
|
|
self.style.NOTICE(f' Предмет уже существует: {subject_name}')
|
|
)
|
|
|
|
self.stdout.write(
|
|
self.style.SUCCESS(
|
|
f'\nГотово! Создано: {created_count}, уже существовало: {existing_count}'
|
|
)
|
|
)
|
|
|
|
|
|
|
|
|