uchill/backend/apps/schedule/management/commands/init_subjects.py

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}'
)
)