"""
Seed the Language catalog in the master DB.
English is the default (always enabled for every school); Tamil, Hindi,
Malayalam, Kannada and Telugu are seeded so each school admin can enable
the languages their organization needs.

Run with: python seed_languages.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 Language

LANGUAGES = [
    {
        'code': 'en',
        'name': 'English',
        'native_name': 'English',
        'is_default': True,
        'is_active': True,
        'order': 0,
    },
    {
        'code': 'ta',
        'name': 'Tamil',
        'native_name': 'தமிழ்',
        'is_default': False,
        'is_active': True,
        'order': 1,
    },
    {
        'code': 'hi',
        'name': 'Hindi',
        'native_name': 'हिन्दी',
        'is_default': False,
        'is_active': True,
        'order': 2,
    },
    {
        'code': 'ml',
        'name': 'Malayalam',
        'native_name': 'മലയാളം',
        'is_default': False,
        'is_active': True,
        'order': 3,
    },
    {
        'code': 'kn',
        'name': 'Kannada',
        'native_name': 'ಕನ್ನಡ',
        'is_default': False,
        'is_active': True,
        'order': 4,
    },
    {
        'code': 'te',
        'name': 'Telugu',
        'native_name': 'తెలుగు',
        'is_default': False,
        'is_active': True,
        'order': 5,
    },
]

created = 0
updated = 0
for data in LANGUAGES:
    obj, was_created = Language.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 l in Language.objects.all().order_by('order'):
    tag = '[DEFAULT]' if l.is_default else '[OPTIONAL]'
    # native_name may not be printable on Windows consoles (cp1252)
    print(f"  {l.order:2d}. {tag:10s} {l.code:5s} {l.name}")
