# Generated by Django 2.0.5 on 2018-05-28 01:16

from django.db import migrations, models
import django.db.models.deletion
from django_divipola_colombia.models import Departamentos, Municipios, CentrosPoblados
import os
import json
import codecs

def populate_database_departamentos(apps, schema_editor):

    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    db_alias = schema_editor.connection.alias
    departamentos = []

    for departamento_json in json.load(codecs.open(os.path.join(BASE_DIR, 'static/django_divipola_colombia/departamentos.json'),'r', 'utf-8-sig')):
        departamentos.append(
            Departamentos(codigo = departamento_json['codigo'], nombre = departamento_json['nombre'])
        )

    Departamentos.objects.using(db_alias).bulk_create(departamentos)

def populate_database_municipios(apps, schema_editor):
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    db_alias = schema_editor.connection.alias
    municipios = []

    for municipio_json in json.load(codecs.open(os.path.join(BASE_DIR, 'static/django_divipola_colombia/municipios.json'),'r', 'utf-8-sig')):
        departamento = Departamentos.objects.get(codigo = municipio_json['codigo_departamento'])
        municipios.append(
            Municipios(departamento=departamento, codigo=municipio_json['codigo'], nombre=municipio_json['nombre'])
        )

    Municipios.objects.using(db_alias).bulk_create(municipios)

def populate_database_centros_poblados(apps, schema_editor):
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    db_alias = schema_editor.connection.alias
    centros_poblados = []

    for centro_poblado_json in json.load(codecs.open(os.path.join(BASE_DIR, 'static/django_divipola_colombia/centros_poblados.json'),'r', 'utf-8-sig')):
        municipio = Municipios.objects.get(codigo = centro_poblado_json['codigo_municipio'])
        centros_poblados.append(
            CentrosPoblados(
                municipio = municipio, codigo=centro_poblado_json['codigo'], nombre=centro_poblado_json['nombre'],
                tipo = centro_poblado_json['tipo'], longitud = centro_poblado_json['longitud'],
                latitud = centro_poblado_json['latitud'], tipo_municipio = centro_poblado_json['tipo_municipio']
            )
        )

    CentrosPoblados.objects.using(db_alias).bulk_create(centros_poblados)


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='CentrosPoblados',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('codigo', models.IntegerField()),
                ('nombre', models.CharField(max_length=200)),
                ('tipo', models.CharField(max_length=10)),
                ('longitud', models.DecimalField(decimal_places=20, max_digits=30)),
                ('latitud', models.DecimalField(decimal_places=20, max_digits=30)),
                ('tipo_municipio', models.CharField(max_length=20)),
            ],
        ),
        migrations.CreateModel(
            name='Departamentos',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('codigo', models.IntegerField()),
                ('nombre', models.CharField(max_length=200)),
            ],
        ),
        migrations.CreateModel(
            name='Municipios',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('codigo', models.IntegerField()),
                ('nombre', models.CharField(max_length=200)),
                ('departamento', models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='django_divipola_colombia.Departamentos')),
            ],
        ),
        migrations.AddField(
            model_name='centrospoblados',
            name='municipio',
            field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, to='django_divipola_colombia.Municipios'),
        ),
        migrations.RunPython(populate_database_departamentos),
        migrations.RunPython(populate_database_municipios),
        migrations.RunPython(populate_database_centros_poblados),
    ]
