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 )
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")
#!/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()
#!/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)
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()
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()
#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")