#!/usr/bin/env python3 import simplekml import utm from api import Descripciones, Organismo, Puesto, dict_from_txt puestos = [ p for p in Puesto.load() if p.idCentroDirectivo != 1301 and p.idProvision not in ( "L", ) and p.isTAI() ] descripciones = Descripciones.load() organismos = Organismo.load() rcp_organi = {} for o in organismos: for c in o.codigos: if isinstance(c, int): rcp_organi[c] = o kml = simplekml.Kml() kml.document.name = "TAI" style_normal = simplekml.Style() style_normal.iconstyle.color = simplekml.Color.blue style_normal.iconstyle.icon.href = 'http://maps.google.com/mapfiles/ms/micons/blue.png' kml.document.style = style_normal style_con_vacantes = simplekml.Style()
if value is not None and value[0] == '"': value = value + " " + line else: value = line if clave and value and (value[0] != '"' or value[-1] == '"'): if value.startswith('"'): value = value[1:-1] if key not in idde: idde[key] = {} idde[key][clave] = value clave = None value = None print("100%% completado") idde = Descripciones(**idde) idde.save() Puesto.save(todos, name="destinos_all") puestos_ok = set() puestos_ko = set() puestos = [p for p in todos if p.isTAI(puestos_ok, puestos_ko)] print ("Comprobando vacantes") vacantes = [p for p in puestos if p.estado=="V"] id_vacantes = [str(p.idPuesto) for p in vacantes] re_puesto_vacante = re.compile(r"\b(" + "|".join(id_vacantes) + r")\b") nombramientos = list(sorted(glob("fuentes/nb_*.txt"))) concursos = list(sorted(glob("fuentes/oc_*.txt"))) visto_en={} count = 0
for k, d in sorted(cod_dir_latlon): l = geocode(d) if l: l = str(l.latitude) + "," + str(l.longitude) else: l = "" print("%s %s %s" % (k, l, d)) print("") codigos_tai = set() for p in Puesto.load(): codigos_tai.add(p.idMinisterio) codigos_tai.add(p.idCentroDirectivo) codigos_tai.add(p.idUnidad) provincias = Descripciones.load().provincias total = len(provincias) count = 0 ok = 0 _ok = 0 last_ok = "" print("Calculando coordenadas de provincias (%s)" % total) for cod, prov in provincias.items(): if cod not in direcciones: l = geocode(prov + ", España") if l: direcciones[cod] = str(l.latitude) + "," + str(l.longitude) last_ok = prov ok += 1 count += 1
if args.puestos or args.todo: xlss = list(sorted(glob("fuentes/RPT*.xls"))) pdfs = list(sorted(glob("fuentes/*.pdf-nolayout.txt"))) convocatorias = ( (2016, 'L', 'BOE-A-2018-991'), (2015, 'L', 'BOE-A-2016-12467'), ) total = 1 + len(xlss) + len(pdfs) + len(convocatorias) count = 1 print("Leyendo puestos") print("%3d%% completado: cod_provincia.htm" % (count * 100 / total, ), end="\r") idde = Descripciones.load(name="datos/v1.0/descripciones.json") idde = idde.__dict__ idde["provincias"] = {} soup = soup_from_file("fuentes/cod_provincia.htm") for tr in soup.select("table.miTabla tr"): tds = [td.get_text().strip() for td in tr.findAll("td")] if len(tds) == 2 and tds[0].isdigit(): cod, prov = tds idde["provincias"][int(cod)] = prov todos = [] organismos = {} for xls in xlss: count = count + 1
action='store_true', help='Solo genera la parte del ranking') args = parser.parse_args() j2 = Jnj2("j2/", "docs/") # Excluir CENTROS PENITENCIARIOS, y volver a comprobar que es TAI # Excluir nivel 18 (puede que salta alguno pero serán tan pocos...) todos_tai = [ p for p in Puesto.load() if p.idCentroDirectivo != 1301 and p.idProvision not in ( "L", ) and p.isTAI() ] todos_19 = [p for p in todos_tai if p.nivel < 19] descripciones = Descripciones.load() organismos = {} for o in Organismo.load(): for c in o.codigos: organismos[c] = o if args.todo or args.direcciones: nf = Info(todos_tai, descripciones, organismos) j2.save("direcciones.html", info=nf, parse=fix_html) if args.todo or args.destinos: paths = [] for pais in set([p.pais for p in todos_19]): for provincia in set([p.provincia for p in todos_19 if p.pais == pais]):