"""
Run with: python manage.py shell < seed_modules.py
Or:       python seed_modules.py  (from backend/ with Django settings configured)
"""
import django, os, sys
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'core.settings')
django.setup()

from master_admin.models import SchoolModule

MODULES = [
    {
        'code': 'academics',
        'name': 'Academics',
        'description': 'Academic years, terms, standards, sections, classes',
        'icon': 'school',
        'is_default': True,
        'is_active': True,
        'order': 0,
    },
    {
        'code': 'subjects',
        'name': 'Subjects',
        'description': 'Subject categories, groups, class subjects, student subject groups',
        'icon': 'book_open',
        'is_default': True,
        'is_active': True,
        'order': 1,
    },
    {
        'code': 'students',
        'name': 'Students',
        'description': 'Student enrollments, subjects, promotions',
        'icon': 'backpack',
        'is_default': True,
        'is_active': True,
        'order': 2,
    },
    {
        'code': 'teachers',
        'name': 'Teachers',
        'description': 'Teacher management, subject assignments',
        'icon': 'user_check',
        'is_default': True,
        'is_active': True,
        'order': 3,
    },
    {
        'code': 'fee',
        'name': 'Fee',
        'description': 'Fee categories, components, class fee structures, student fee assignments',
        'icon': 'payments',
        'is_default': False,
        'is_active': True,
        'order': 4,
    },
    {
        'code': 'transport',
        'name': 'Transport',
        'description': 'Transport types, vehicles, routes, stops, student and teacher transport assignments',
        'icon': 'directions_bus',
        'is_default': False,
        'is_active': True,
        'order': 5,
    },
    {
        'code': 'attendance',
        'name': 'Attendance',
        'description': 'Student attendance sessions and tracking',
        'icon': 'event_available',
        'is_default': False,
        'is_active': True,
        'order': 6,
    },
    {
        'code': 'exams',
        'name': 'Exams',
        'description': 'Exam types, schedules, registrations, exam subjects',
        'icon': 'quiz',
        'is_default': False,
        'is_active': True,
        'order': 7,
    },
    {
        'code': 'announcements',
        'name': 'Announcements',
        'description': 'Class, student, teacher and common announcements',
        'icon': 'campaign',
        'is_default': False,
        'is_active': True,
        'order': 8,
    },
    {
        'code': 'pay',
        'name': 'Payroll',
        'description': 'Pay structures, monthly payslips, payment transactions, payslip templates',
        'icon': 'receipt_long',
        'is_default': False,
        'is_active': True,
        'order': 9,
    },
    {
        'code': 'schedules',
        'name': 'Schedules',
        'description': 'Week days configuration and class timetables',
        'icon': 'calendar_month',
        'is_default': False,
        'is_active': True,
        'order': 10,
    },
    {
        'code': 'tasks',
        'name': 'Tasks',
        'description': 'Task management for students and teachers',
        'icon': 'check_circle',
        'is_default': False,
        'is_active': True,
        'order': 10,
    },
]

created = 0
updated = 0
for data in MODULES:
    obj, was_created = SchoolModule.objects.get_or_create(
        code=data['code'],
        defaults=data
    )
    if not was_created:
        for k, v in data.items():
            if k != 'code':
                setattr(obj, k, v)
        obj.save()
        updated += 1
    else:
        created += 1

print(f"Done. Created: {created}, Updated: {updated}")
for m in SchoolModule.objects.all().order_by('order'):
    tag = '[DEFAULT]' if m.is_default else '[OPTIONAL]'
    print(f"  {m.order:2d}. {tag:10s} {m.code:15s} {m.name}")
