class Ensenanza(object):
    def __init__(self, nombre, regimen, unidades, puestos, uds_concertadas, fecha):
        self.gf=GestorFechas()
        self.nombre=nombre
        self.regimen=regimen
        try:
            self.unidades=int (unidades)
        except ValueError:
            self.unidades=0
        
        try:
            self.puestos=int (puestos)
        except ValueError:
            self.puestos=0
        
        try:
            self.unidades_concertadas=int(uds_concertadas)
        except ValueError:
            self.unidades_concertadas=0
        if fecha=="":
            self.fecha="01/01/2000"
        else:
            self.fecha=fecha
        self.fecha=self.gf.convertir_fecha_a_formato_iso(self.fecha)
    @staticmethod
    def get_sql_creacion_sqlite(nombre_tabla_ensenanzas, nombre_tabla_codigos):
        sentencias_sql=[]
        sentencias_sql.append("pragma foreign_keys=on")
        sql="""
            create table if not exists {0} (
                nombre              char(120) primary key,
                regimen             char(25),
                unidades            integer,
                puestos             integer,
                uds_concertadas     integer,
                fecha               date,
                codigo_centro       char(10),
                foreign key (codigo_centro) references {1}
                    on delete cascade on update cascade
            )
        """
        sentencias_sql.append ( sql.format (nombre_tabla_ensenanzas, nombre_tabla_codigos)  )
        
        indice="""
            create index if not exists idx_ensenanza_region on {0}(nombre)
        """
        sentencias_sql.append ( indice.format(nombre_tabla_ensenanzas) )
        return sentencias_sql
    
    def get_sql_sqlite(self, nombre_tabla, codigo_centro):
        sql="""
        insert or ignore into {0}
          (nombre, regimen, unidades, puestos, uds_concertadas, fecha, codigo_centro)
        values (
         '{1}', '{2}', {3}, {4}, {5}, '{6}', '{7}'
        )
        """
        sql_devuelto=sql.format ( nombre_tabla, self.nombre, self.regimen, self.unidades,
                                 self.puestos, self.unidades_concertadas, self.fecha, codigo_centro)
        return sql_devuelto
    def __str__(self):
        return self.nombre
 #Todos los centros de nuestra BD llevan C al final, pero
 #en esta adjudicación no lo han puesto. Lo añadimos a mano
 cod_centro+="C"
 localidad=extraer_localidad(linea_limpia)
 
 dni = extraer_dni(linea_limpia)
 
 nombre = extraer_nombre(linea_limpia)
 
 linea_siguiente=lineas[i+1]
 nom_centro=linea_siguiente[0:51].strip()
 trozo_fecha1=linea_siguiente[72:132]
 fecha_1=extraer_patron(re_fecha, trozo_fecha1)
 trozo_fecha2=linea_siguiente[133:]
 fecha_2=extraer_patron(re_fecha, trozo_fecha2)
 fecha_1=gestor_fechas.convertir_fecha_a_formato_iso(fecha_1)
 fecha_2=gestor_fechas.convertir_fecha_a_formato_iso(fecha_2)
 
 especialidad_asociada=Especialidad.objects.get ( codigo_especialidad=codigo_espe )
 try:
     centro_asociado=Centro.objects.get( codigo_centro=cod_centro )
 except:
     print ("No existe el centro {0}".format(cod_centro))
     loc_asociada=get_localidad (cod_localidad, nom_localidad)
     centro_asociado=Centro(
         codigo_centro=cod_centro, nombre_centro=nom_centro,
         localidad=loc_asociada
     )
     centro_asociado.save()
 
 
archivo=open(archivo,"r", encoding="utf-8")
lineas=archivo.readlines()
total_lineas=len(lineas)
codigo_especialidad=""
nombramientos=[]
fecha_adjudicacion=FECHA_NO_ENCONTRADA
fecha_adjudicacion_formato_iso=FECHA_NO_ENCONTRADA
procedimiento_adjudicacion=None
for i in range(0, total_lineas):

    linea=lineas[i]
    if fecha_adjudicacion==FECHA_NO_ENCONTRADA:
        fecha_adjudicacion=obtener_fecha_adjudicacion(linea)
        if (fecha_adjudicacion!=FECHA_NO_ENCONTRADA):
            fecha_adjudicacion_formato_iso=gestor_fechas.convertir_fecha_a_formato_iso(fecha_adjudicacion)
            procedimiento_adjudicacion=ProcedimientoAdjudicacion(
                nombre=ProcedimientoAdjudicacion.ASIGNACION_SUSTITUCIONES+ fecha_adjudicacion,
                fecha=fecha_adjudicacion_formato_iso
            )
            procedimiento_adjudicacion.save()
    if i+2==total_lineas:
        break
    linea_siguiente=lineas[i+1]
    linea_posterior=lineas[i+2]
    lista_campos=[]
    if (linea_contiene_patron(re_especialidad, linea)):
        codigo_especialidad=extraer_patron(re_especialidad, linea)
        codigo_especialidad=codigo_especialidad[2:]
    if (linea_contiene_patron(re_dni, linea)):
        dni=extraer_patron(re_dni, linea)