Exemplo n.º 1
0
def tratar_gob_es(total, visto, id, raiz, padre):
    if id in visto:
        org = visto[id]
        if padre:
            org.idPadres.add(padre)
        return
    print("%3d%% completado: %6d" % (len(visto.keys()) * 100 / total, id),
          end="\r")
    fn = "fuentes/administracion.gob.es/id_%06d.html" % id
    if not os.path.isfile(fn):
        return
    soup = soup_from_file(fn)
    for n in soup.select(".hideAccessible"):
        n.extract()
    codigo = None
    hijos = []
    deDireccion = None
    latlon = None
    for div in soup.select("section div"):
        for br in div.findAll("br"):
            br.replaceWith(" ")
        txt = div.get_text()
        txt = re_bk.sub(" ", txt)
        txt = txt.strip()
        if ":" not in txt:
            continue
        key, value = [i.strip() for i in txt.split(":", 1)]
        if key == "Código de unidad orgánica":
            codigo = value
        elif key == "Estructura orgánica":
            hijos = set([
                int(a.attrs["href"].split("&")[0].split("=")[1])
                for a in div.select("a[href]")
                if "idUnidOrganica=" in a.attrs["href"]
            ])
        elif key == "Dirección":
            deDireccion = value
    if not codigo:
        return
    deOrganismo = re_bk.sub(
        " ",
        soup.select("h1.ppg-heading")[0].get_text()).strip()
    img = soup.find("img", attrs={"src": re_map})
    if img:
        latlon = re_map.search(img.attrs["src"]).group(1)
    org = Organismo(codigo,
                    deOrganismo,
                    deDireccion,
                    latlon=latlon,
                    idRaiz=raiz,
                    idUnidOrganica=id)
    visto[id] = org
    for h in hijos:
        tratar_gob_es(total, visto, h, raiz, codigo)
Exemplo n.º 2
0
#!/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()
Exemplo n.º 3
0
    organismos = {}

    for xls in xlss:
        count = count + 1
        print("%3d%% completado: %-30s" %
              (count * 100 / total, os.path.basename(xls)), end="\r")
        wb = xlrd.open_workbook(xls)
        sh = wb.sheet_by_index(0)
        for rx in range(sh.nrows):
            row = [parse(c) for c in sh.row(rx)]
            if len(row) > 1 and isinstance(row[0], int):
                p = Puesto(*row)
                todos.append(p)
                isCsic = p.idMinisterio == 47811
                if p.idMinisterio and p.idMinisterio not in organismos:
                    organismos[p.idMinisterio] = Organismo(
                        p.idMinisterio, p.deMinisterio, isCsic=isCsic)
                if p.idCentroDirectivo and p.idCentroDirectivo not in organismos:
                    idPadres = set({p.idMinisterio, })
                    organismos[p.idCentroDirectivo] = Organismo(
                        p.idCentroDirectivo, p.deCentroDirectivo, idPadres=idPadres, isCsic=isCsic)
                if p.idUnidad and p.idUnidad not in organismos:
                    idPadres = set({p.idCentroDirectivo or p.idMinisterio, })
                    organismos[p.idUnidad] = Organismo(
                        p.idUnidad, p.deUnidad, idPadres=idPadres, isCsic=isCsic)
    print("100%% completado")

    Organismo.save(list(organismos.values()), name="organismos_rpt")

    for p in todos:
        data = p.__dict__
        keys = [k for k in data.keys() if k.startswith("id")
Exemplo n.º 4
0
data_excel={}
for rx in range(sh.nrows):
    row = [parse(c) for c in sh.row(rx)]
    info, index = row[2], row[4]
    if index is None:
        index = "¿?¿?¿?"
    if info is None:
        info = "¿?¿?¿?"
    print (str(index) + " ---- " +info)
'''

idUnidOrganica = set(
    [int(i[33:-5]) for i in glob("fuentes/administracion.gob.es/id_*.html")])

organismos = {}
for o in Organismo.load():
    if o.idUnidOrganica not in idUnidOrganica:
        o.idUnidOrganica = None
    for c in o.codigos:
        organismos[c] = o

cod_dir_latlon = get_cod_dir_latlon()
arreglos = yaml_from_file("arreglos/rpt_dir3.yml")
notas = dict_from_txt("arreglos/notas.txt")

todos_puestos = {p.idPuesto: p for p in Puesto.load(name="destinos_tai")}
vacantes_tai = [p for p in Puesto.load() if p.isTAI() and p.estado == "V"]


class Org:
    def __init__(self, codigo, descripcion):