import json

from django.db import migrations


TABLE_NAME = "tt_student_set_student"


def add_student_set_student_import(apps, schema_editor):
    setting_model = apps.get_model("api", "TtSetting")
    setting = setting_model.objects.filter(param="import_tables").first()
    if not setting:
        return

    try:
        tables = json.loads(setting.value)
    except (TypeError, ValueError):
        tables = []

    if TABLE_NAME not in tables:
        tables.append(TABLE_NAME)
        setting.value = json.dumps(tables)
        setting.save(update_fields=["value"])


def remove_student_set_student_import(apps, schema_editor):
    setting_model = apps.get_model("api", "TtSetting")
    setting = setting_model.objects.filter(param="import_tables").first()
    if not setting:
        return

    try:
        tables = json.loads(setting.value)
    except (TypeError, ValueError):
        return

    if TABLE_NAME in tables:
        tables.remove(TABLE_NAME)
        setting.value = json.dumps(tables)
        setting.save(update_fields=["value"])


class Migration(migrations.Migration):
    dependencies = [
        ("api", "0107_add_tt_student_to_import_tables"),
    ]

    operations = [
        migrations.RunPython(
            add_student_set_student_import,
            remove_student_set_student_import,
        ),
    ]
