def __init__(self, nombre_fichero,
              codigo_cuerpo, ClaseInterino, ClaseEspecialidad):
     self.codigo_cuerpo=codigo_cuerpo
     self.ClaseInterino=ClaseInterino
     self.ClaseEspecialidad=ClaseEspecialidad
     re_especialidad="Especialidad\s+[0-9]{3}"
     re_nombre_completo="  [A-ZÁÉÍÓÚÜÑ ]+, [A-ZÁÉÍÓÚÜÑ ]+"
     re_lista_provincias="[0-9]{2}( , [0-9]{2})*"
     
     self.expr_regular_nombre = re.compile ( re_nombre_completo )
     self.expr_regular_especialidad=re.compile ( re_especialidad )
     self.expr_regular_provincias=re.compile ( re_lista_provincias )
     self.bolsas=[]
     for tupla in ClaseInterino.POSIBLES_BOLSAS:
         self.bolsas.append("("+tupla[0]+")")
     self.re_posible_bolsa="|".join(self.bolsas)
     self.re_posible_bolsa="("+ self.re_posible_bolsa +")"
     self.re_posible_bolsa += "\s+[0-9]{1,4}( |/|$)"
     self.expr_regular_bolsa=re.compile( self.re_posible_bolsa )
     self.procesador_pdf=ProcesadorPDF()
     self.fich_txt=self.procesador_pdf.convertir_a_txt ( nombre_fichero )
Example #2
0
    obj_provincia_to=Provincia.objects.get(provincia="TO")
    with transaction.atomic():
        for l in localidades:
            cod_localidad=l[0]
            nom_localidad=l[1]
            codigo_provincia=l[2]
            objeto_provincia_asociada=Provincia.objects.get(provincia=codigo_provincia)
            localidad=Localidad ( codigo_localidad=cod_localidad,
                                 nombre_localidad=nom_localidad,
                                 provincia=objeto_provincia_asociada,
                                 zona=zona_clm)
            localidad.save()
    with transaction.atomic():
        for tupla in escuelas_adultos:
            cod_centro=tupla[0]
            nom_centro=tupla[1]
            cod_localidad=tupla[2]
            
            localidad_asociada=Localidad.objects.get(codigo_localidad=cod_localidad)
            centro=Centro ( codigo_centro=cod_centro, nombre_centro=nom_centro,
                           localidad=localidad_asociada,
                           tipo_centro="EA")
            centro.save()

if __name__ == '__main__':
    procesador_pdf=ProcesadorPDF()
    try:
        procesador_pdf.abrir_fichero_txt ( sys.argv[1] )
        crear_entidades(procesador_pdf)
    except IndexError:
        print ("Indique el nombre de un fichero txt")
Example #3
0
#!/usr/bin/env python3
#coding=utf-8
import sys
from utilidades.ficheros.ProcesadorPDF import ProcesadorPDF

procesador=ProcesadorPDF()

procesador.abrir_fichero_txt( sys.argv[1] )
admitido=sys.argv[2]
turno=sys.argv[3]
linea_actual=procesador.get_linea_actual().strip()
while not procesador.eof():
    (ini_dni, fin_dni, dni) = procesador.linea_contiene_patron(
        procesador.expr_regular_dni, linea_actual
    )
    if dni!=procesador.PATRON_NO_ENCONTRADO:
        nombre=linea_actual[:ini_dni-1].strip()
        print (dni+":"+nombre+":"+admitido+":"+turno)
    procesador.siguiente_linea()
    linea_actual=procesador.get_linea_actual().strip()
                interino_en_bolsa
            )
            especialidad_del_interino_tiempo_parcial="R"+cuerpo + t
            interino_en_bolsa=InterinosBolsas (
                dni_interino=interino.dni,
                codigo_especialidad=especialidad_del_interino_tiempo_parcial,
                numero_en_bolsa=num_orden
            )
            lista_participaciones.append (
                interino_en_bolsa
            )
    return lista_participaciones



procesador_pdf=ProcesadorPDF()
lista_interinos=[]
lista_participaciones_de_cada_interino_en_bolsas=[]
nombre_txt=procesador_pdf.convertir_a_txt ( convocadas )
procesador_pdf.abrir_fichero_txt( nombre_txt )
num_orden=1
(ini, fin, patron) = procesador_pdf.avanzar_buscando_dni(debe_estar_en_misma_linea=False)
while not procesador_pdf.FIN_DE_FICHERO:
    if patron!=procesador_pdf.PATRON_NO_ENCONTRADO:
        
        (ini, fin, nombre)=procesador_pdf.avanzar_buscando_nombre_persona()
        nombre=nombre.strip()
        if nombre==procesador_pdf.PATRON_NO_ENCONTRADO:
            linea_anterior=procesador_pdf.get_linea_anterior()
            linea_siguiente=procesador_pdf.get_linea_siguiente()
            linea_compuesta=linea_anterior.strip() + " " +linea_siguiente.strip()
#!/usr/bin/env python3
# coding=utf-8
import re

from utilidades.ficheros.ProcesadorPDF import ProcesadorPDF
procesador_pdf=ProcesadorPDF()
ULTIMA_RELACION_INTERINOS="Ultima0597.pdf"
nombre_txt=procesador_pdf.convertir_a_txt(ULTIMA_RELACION_INTERINOS)

procesador_pdf.abrir_fichero_txt(nombre_txt)


re_especialidad="Especialidad\s+[0-9]{3}"
expr_regular_especialidad=re.compile ( re_especialidad )
codigo_especialidad_actual=""
lista_ultimos_datos_interinos=[]
numero_de_orden=1
while not procesador_pdf.FIN_DE_FICHERO:
    linea=procesador_pdf.get_linea_actual()
    (ini, fin, especialidad)=procesador_pdf.linea_actual_contiene_patron(expr_regular_especialidad)
    if especialidad!=procesador_pdf.PATRON_NO_ENCONTRADO:
        codigo_especialidad_actual="0597" + especialidad[-3:]
        numero_de_orden=1
        print ("Especialidad actual:"+codigo_especialidad_actual)
    (ini_dni, fin_dni, dni)=procesador_pdf.avanzar_buscando_dni(debe_estar_en_misma_linea=True)
    if dni!=procesador_pdf.PATRON_NO_ENCONTRADO:
        #print (dni)
        nombre_completo=linea[fin_dni:68].strip()
        print (dni, nombre_completo)
        
    procesador_pdf.siguiente_linea()
Example #6
0
#!/usr/bin/env python3
from utilidades.ficheros.ProcesadorPDF import ProcesadorPDF
from utilidades.ficheros.GestorFicheros import GestorFicheros
import glob, platform



LISTAR="listar.py"
MOSTRAR_EXCLUIDOS="mostrar_excluidos.py"
ADMITIDOS="Admitidos.txt"
EXCLUIDOS="Excluidos.txt"
procesador_pdf=ProcesadorPDF()
gf=GestorFicheros()



gf.borrar_fichero (ADMITIDOS)
gf.borrar_fichero (EXCLUIDOS)

ficheros=glob.glob("*.pdf")
for f in ficheros:
    procesador_pdf.convertir_a_txt(f)
    
if platform.system()=="Linux":
    
    gf.ejecutar_comando ( "./"+LISTAR, "Admitidos_Libres.txt", "Admitido", "Libre",
                         ">> ", ADMITIDOS )
    gf.ejecutar_comando ( "./"+LISTAR, "Admitidos_Discap.txt", "Admitido", "Discapacitados",
                         ">> ", ADMITIDOS )
    gf.ejecutar_comando ( "./"+MOSTRAR_EXCLUIDOS, "Excluidos_Libre.txt", "Excluido", "Libre", "122",
                         ">> ", EXCLUIDOS)
Example #7
0
DURACION="Duración:"
MODO_LEYENDO_CRITERIOS=1
MODO_ESPERANDO_CONTENIDOS=2

def extraer_resto_linea(linea, comienzo):
    pos_comienzo_resto=len(comienzo)
    resto=linea_actual[pos_comienzo_resto:].strip()
    return resto

def extraer_nombre_modulo(linea):
    for comienzo in COMIENZOS_MODULOS:
        if comienzo in linea:
            return extraer_resto_linea(linea, comienzo)
    return False    
        
procesador=ProcesadorPDF()
procesador.abrir_fichero_txt ( sys.argv[1] )

linea_actual=procesador.get_linea_actual()
modo=0
while not procesador.eof():

    posible_nombre_modulo=extraer_nombre_modulo(linea_actual)
    if posible_nombre_modulo:
        print (posible_nombre_modulo)
    
    if COMIENZO_CODIGO in linea_actual:
        pos_comienzo_codigo=len(COMIENZO_CODIGO)
        codigo=linea_actual[pos_comienzo_codigo:].strip()
        print (codigo)
        (ini, fin, result)=procesador.avanzar_buscando_patron (
class ProcesadorTablaDisponibles(object):
    def __init__(self, nombre_fichero,
                 codigo_cuerpo, ClaseInterino, ClaseEspecialidad):
        self.codigo_cuerpo=codigo_cuerpo
        self.ClaseInterino=ClaseInterino
        self.ClaseEspecialidad=ClaseEspecialidad
        re_especialidad="Especialidad\s+[0-9]{3}"
        re_nombre_completo="  [A-ZÁÉÍÓÚÜÑ ]+, [A-ZÁÉÍÓÚÜÑ ]+"
        re_lista_provincias="[0-9]{2}( , [0-9]{2})*"
        
        self.expr_regular_nombre = re.compile ( re_nombre_completo )
        self.expr_regular_especialidad=re.compile ( re_especialidad )
        self.expr_regular_provincias=re.compile ( re_lista_provincias )
        self.bolsas=[]
        for tupla in ClaseInterino.POSIBLES_BOLSAS:
            self.bolsas.append("("+tupla[0]+")")
        self.re_posible_bolsa="|".join(self.bolsas)
        self.re_posible_bolsa="("+ self.re_posible_bolsa +")"
        self.re_posible_bolsa += "\s+[0-9]{1,4}( |/|$)"
        self.expr_regular_bolsa=re.compile( self.re_posible_bolsa )
        self.procesador_pdf=ProcesadorPDF()
        self.fich_txt=self.procesador_pdf.convertir_a_txt ( nombre_fichero )
        #print ("Procesando {0}".format (fich_txt) )

    def con_ingles(self, linea, pos_palabra_ingles):
        if linea[pos_palabra_ingles:pos_palabra_ingles+6].find("S")!=-1:
            return True
        return False
    
    def con_frances(self, linea, pos_palabra_frances):
        if linea[pos_palabra_frances:].find("S")!=-1:
            return True
        return False
    
    def extraer_tipo_bolsa(self, bolsa):
        bolsa=bolsa.strip()
        tipo=bolsa[:3].strip()
        return tipo
    def extraer_orden_bolsa(self, bolsa):
        bolsa=bolsa.strip()
        orden=bolsa[4:].strip()
        return orden
    def get_modelo(self, tupla):
        provincias=tupla[6].split(" , ")
        quiere_ab=True if "02" in provincias else False
        quiere_cr=True if "13" in provincias else False
        quiere_cu=True if "16" in provincias else False
        quiere_gu=True if "19" in provincias else False
        quiere_to=True if "45" in provincias else False
        especialidad_relacionada=self.ClaseEspecialidad.objects.get(
            codigo_especialidad=self.codigo_cuerpo+tupla[1]
        )
        #print (especialidad_relacionada)
        i=self.ClaseInterino(
            orden=tupla[0], dni=tupla[2], nombre_completo=tupla[3],
            tipo_bolsa=tupla[4], orden_bolsa=tupla[5],
            elige_ab=quiere_ab, elige_cr=quiere_cr, elige_cu=quiere_cu,
            elige_gu=quiere_gu, elige_to=quiere_to,
            ingles=tupla[7], frances=tupla[8]
        )
        #m=self.get_modelo(
        #                (num_orden, especialidad, dni, nombre_completo, tipo_bolsa,
        #                   orden_bolsa, lista_provincias, habla_ingles, habla_frances)
        #            )
        #i.especialidad=especialidad_relacionada
        #print (tupla)
        
        return (i, especialidad_relacionada)
        
    def procesar_tabla(self):
        #Encontrar la columna donde está el inglés o el francés
        #requiere saber la posición donde empiezan estas palabras
        
        self.procesador_pdf.abrir_fichero_txt ( self.fich_txt )
        especialidad=""
        modelos=[]
        while not self.procesador_pdf.eof():
            linea=self.procesador_pdf.get_linea_actual()
            posible_pos_palabra_ingles=linea.find("Inglés")
            if posible_pos_palabra_ingles!=-1:
                pos_ingles=posible_pos_palabra_ingles
            posible_pos_palabra_frances=linea.find("Francés")
            if posible_pos_palabra_frances!=-1:
                pos_frances=posible_pos_palabra_frances
            #Comprobamos si la linea contiene una especialidad
            (ini_espe, fin_espe, espe) = self.procesador_pdf.linea_contiene_patron(
                self.expr_regular_especialidad, linea)
            if espe!=self.procesador_pdf.PATRON_NO_ENCONTRADO:
                especialidad=espe[-3:]
                #print ("Especialidad:"+especialidad)
            (ini_dni, fin_dni, dni)=self.procesador_pdf.linea_contiene_patron(
                self.procesador_pdf.expr_regular_dni, linea)
            if dni!=self.procesador_pdf.PATRON_NO_ENCONTRADO:
                num_orden=linea[:9].strip()
                (ini_bolsa, fin_bolsa, bolsa)=self.procesador_pdf.linea_contiene_patron(
                    self.expr_regular_bolsa, linea)
                if bolsa==self.procesador_pdf.PATRON_NO_ENCONTRADO:
                    print ("Error, bolsa no encontrada en esta linea")
                    print (linea)
                    linea=self.procesador_pdf.siguiente_linea()
                    continue
                tipo_bolsa=self.extraer_tipo_bolsa ( bolsa )
                orden_bolsa=self.extraer_orden_bolsa ( bolsa )
                #Por alguna razon, algunos numeros de orden
                #en bolsa llevan cosas como "263/1"
                orden_bolsa=orden_bolsa.replace("/", "")
                nombre_completo=linea[fin_dni+1:ini_bolsa-1].strip()
                if nombre_completo=="":
                    linea_anterior=self.procesador_pdf.get_linea_anterior()
                    trozo1_de_nombre=linea_anterior[fin_dni+1:ini_bolsa-1].strip()
                    linea_siguiente=self.procesador_pdf.get_linea_siguiente()
                    trozo2_de_nombre=linea_siguiente[fin_dni+1:ini_bolsa-1].strip()
                    nombre = trozo1_de_nombre.strip() + " " + trozo2_de_nombre.strip()
                    print ("Nombre vacio! Quiza sea...")
                    print (nombre)
                    nombre_completo=nombre
                    #print (linea)
                (ini_provincias, fin_provincias, lista_provincias)=self.procesador_pdf.linea_contiene_patron(
                    self.expr_regular_provincias, linea[fin_bolsa:])
                if lista_provincias==self.procesador_pdf.PATRON_NO_ENCONTRADO:
                    print("No se encontro ninguna provincia en la linea siguiente")
                    print (linea)
                    print ("Le presuponemos todas las provincias")
                    print ("-----------------------------------")
                    lista_provincias="02 , 13 , 16 , 19 , 45"
                habla_ingles=self.con_ingles(linea, pos_ingles)
                habla_frances=self.con_frances(linea, pos_frances)
                (m, esp)=self.get_modelo(
                        (num_orden, especialidad, dni, nombre_completo, tipo_bolsa,
                           orden_bolsa, lista_provincias, habla_ingles, habla_frances)
                )
                modelos.append( (m, esp) )
            self.procesador_pdf.siguiente_linea()
        #Fin del while
        with transaction.atomic():
            for tupla in modelos:
                (m,esp)=tupla
                m.save()
                m.especialidad.add (esp)
#!/usr/bin/env python3

from utilidades.ficheros.ProcesadorPDF import ProcesadorPDF
import sys

procesador_pdf=ProcesadorPDF()

procesador_pdf.abrir_fichero_txt(sys.argv[1])

while not procesador_pdf.eof():
    linea=procesador_pdf.get_linea_actual()
    (ini, fin, dni)=procesador_pdf.linea_actual_contiene_patron(procesador_pdf.expr_regular_dni)
    if dni!=procesador_pdf.PATRON_NO_ENCONTRADO:
        print (dni)
    procesador_pdf.siguiente_fila()
Example #10
0
def procesar_acta(fichero, num_eval):
    print("Acta:" + fichero, "Evaluacion:" + num_eval)
    procesador = ProcesadorPDF()
    nombre_fich_txt = procesador.convertir_a_txt(fichero)
    procesador.abrir_fichero_txt(nombre_fich_txt)
    linea = procesador.get_linea_actual()
    while (not procesador.eof()):
        (ini, fin,
         texto) = procesador.linea_contiene_patron(expr_regular, linea)
        if ini != procesador.PATRON_NO_ENCONTRADO:
            #print(texto.strip())
            procesar_posible_alumno(linea)
        procesador.siguiente_fila()
        linea = procesador.get_linea_actual()
Example #11
0
#coding=utf-8

import glob
from utilidades.ficheros.ProcesadorPDF  import ProcesadorPDF
from utilidades.ficheros.GestorFicheros import GestorFicheros

ficheros_pdf = ["LocalidadesColegiosCGTConvocadoNov2015.pdf",
                "LocalidadesIESCGTConvocadoNov2015.pdf",
                "LocalidadesEACGTConvocadoNov2015.pdf",
                "LocalidadesEOICGTConvocadoNov2015.pdf",
                 "LocalidadesCPMCGTConvocadoNov2015.pdf",
                 "LocalidadesCEPASCGTConvocadoNov2015.pdf",
                 "LocalidadesCEECGTConvocadoNov2015.pdf",
                 "LocalidadesCPMCGTConvocadoNov2015.pdf"]

procesador_pdf = ProcesadorPDF()
gf=GestorFicheros()

nombre_fichero_coles_txt    =   procesador_pdf.convertir_a_txt ( ficheros_pdf[0] )
nombre_fichero_ies_txt      =   procesador_pdf.convertir_a_txt ( ficheros_pdf[1] )
nombre_fichero_ea_txt       =   procesador_pdf.convertir_a_txt ( ficheros_pdf[2] )
nombre_fichero_eoi_txt      =   procesador_pdf.convertir_a_txt ( ficheros_pdf[3] )
nombre_fichero_cpm_txt      =   procesador_pdf.convertir_a_txt ( ficheros_pdf[4] )
nombre_fichero_cepas_txt    =   procesador_pdf.convertir_a_txt ( ficheros_pdf[5] )
nombre_fichero_cees_txt     =   procesador_pdf.convertir_a_txt ( ficheros_pdf[6] )
nombre_fichero_cpms_txt     =   procesador_pdf.convertir_a_txt ( ficheros_pdf[7] )

    
gf.ejecutar_comando ( "./procesar_cee.py", nombre_fichero_cees_txt)
gf.ejecutar_comando ( "./procesar_cpm.py", nombre_fichero_cpms_txt)
gf.ejecutar_comando ( "./procesar_colegios.py", nombre_fichero_coles_txt)
#!/usr/bin/env python3

import sys

from utilidades.ficheros.ProcesadorPDF import ProcesadorPDF
from utilidades.ficheros.GestorFicheros import GestorFicheros
from utilidades.basedatos.Configurador import Configurador

procesador_pdf=ProcesadorPDF()
gf=GestorFicheros()
configurador=Configurador("../web")

configurador.activar_configuracion("web.settings")
from gestionweb.models import Nombramiento, CentrosRegion

procesador_pdf.abrir_fichero_txt ( sys.argv[1])

nombramientos=[]
while not procesador_pdf.eof():
    linea=procesador_pdf.get_linea_actual()
    (ini_dni, fin_dni, dni)=linea_contiene_dni=procesador_pdf.linea_contiene_patron (
        procesador_pdf.expr_regular_dni, linea)
    if ini_dni!=procesador_pdf.PATRON_NO_ENCONTRADO:
        campos=[]
        linea_anterior=procesador_pdf.get_linea_anterior()
        (ini_espe, fin_espe, codigo_espe)=procesador_pdf.linea_contiene_patron (
            procesador_pdf.expr_regular_cuerpo_con_especialidad, linea_anterior
        )
        (ini_centro, fin_centro, cod_centro)=procesador_pdf.linea_contiene_patron(
            procesador_pdf.expr_regular_codigo_centro_sin_c, linea_anterior[:ini_espe]
        )
#!/usr/bin/env python3
#coding=utf-8


from utilidades.ficheros.ProcesadorPDF import ProcesadorPDF
import sys
procesador_pdf=ProcesadorPDF()

fich_txt=procesador_pdf.convertir_a_txt ( sys.argv[1] )
procesador_pdf.abrir_fichero_txt ( fich_txt )

LOCALIDAD="Localidad:"
CODIGO="Código:"
PROVINCIA="Provincia:"


leyendo_centros=False
cod_localidad_actual=""
nom_localidad_actual=""
nom_provincia_actual=""
cod_provincia_actual=""

#Las primeras 20 lineas del fichero contienen cosas que no nos interesan
for i in range(0, 18):
    procesador_pdf.siguiente_linea()
    
while not procesador_pdf.eof():
    linea=procesador_pdf.get_linea_actual().strip()
    if linea.find(PROVINCIA)!=-1:
        pos_inicio_provincia=linea.find(PROVINCIA)+len(PROVINCIA)
        pos_inicio_codigo=linea.find(CODIGO)
from utilidades.basedatos.Configurador import Configurador
from utilidades.ficheros.ProcesadorPDF import ProcesadorPDF
import django
from django.db import transaction
NUM_DIRECTORIO_ANTERIORES=2
DIRECTORIOS_ANTERIORES=[".."] * NUM_DIRECTORIO_ANTERIORES

configurador=Configurador (os.path.sep.join (DIRECTORIOS_ANTERIORES) )

configurador.activar_configuracion ( "gestion.settings")
from modelado_bd.models import *

ARCHIVO=sys.argv[1]
ARCHIVO_RESULTADO=ARCHIVO[:-4]+".csv"

procesador_pdf=ProcesadorPDF()
lineas_fichero=procesador_pdf.abrir_fichero_txt(ARCHIVO)

re_cuerpo="CUERPO"
expr_regular_cuerpo=re.compile ( re_cuerpo )

re_total = "TOTAL "
expr_regular_total = re.compile ( re_total )

re_decimal="[0-9]{3},[0-9]{4}"
expr_regular_decimal=re.compile(re_decimal)

DENEGADO        ="DENEGADO"
PEND_DESTINO    ="PEND. DESTINO"

def extraer_puntuaciones (linea):
        return False
    if linea[122:].find("S")!=-1:
        return True
    return False


bolsas=[]
for tupla in InterinoDisponible.POSIBLES_BOLSAS:
    bolsas.append("("+tupla[0]+")")
re_posible_bolsa="|".join(bolsas)
re_posible_bolsa="("+ re_posible_bolsa +")"
re_posible_bolsa += "\s+[0-9]{1,4}( |/|$)"
expr_regular_bolsa=re.compile( re_posible_bolsa )
print (re_posible_bolsa)

procesador_pdf=ProcesadorPDF()
fich_txt=procesador_pdf.convertir_a_txt ( sys.argv[1] )
print ("Procesando {0}".format (fich_txt) )

procesador_pdf.abrir_fichero_txt ( fich_txt )

while not procesador_pdf.eof():
    linea=procesador_pdf.get_linea_actual().strip()
    (ini_dni, fin_dni, dni)=procesador_pdf.linea_contiene_patron(
        procesador_pdf.expr_regular_dni, linea)
    if dni!=procesador_pdf.PATRON_NO_ENCONTRADO:
        num_orden=linea[:4].strip()
        (ini_bolsa, fin_bolsa, bolsa)=procesador_pdf.linea_contiene_patron(
            expr_regular_bolsa, linea)
        if bolsa==procesador_pdf.PATRON_NO_ENCONTRADO:
            print ("Error, bolsa no encontrada en esta linea")