示例#1
0
#!/usr/bin/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()
style_con_vacantes.iconstyle.color = simplekml.Color.green
style_con_vacantes.iconstyle.icon.href = 'http://maps.google.com/mapfiles/ms/micons/green.png'
示例#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()
示例#3
0
                o.latlon = latlon
                n.latlon = latlon
            ok += 1
        elif len(dires) == 1:
            deDireccion = dires.pop()
            o.set_lugar(deDireccion)
            ok += 1
        count += 1
        print("%3d%% completado: %-30s (%s)" %
              (count * 100 / total, o.idOrganismo, ok), end="\r")
    print ("")
    Organismo.save(organismos, name="organismos_dir3_E_gob.es",
                   arregla_direcciones=arregla_direcciones)

codigos_tai = set()
for p in Puesto.load():
    codigos_tai.add(p.idMinisterio)
    codigos_tai.add(p.idCentroDirectivo)
    codigos_tai.add(p.idUnidad)

organismos = Organismo.load(name="organismos_dir3_E_gob.es")

organismos_rpt = [o for o in Organismo.load(
    name="organismos_rpt") if o.idOrganismo in codigos_tai]

# Arreglos hechos a mano
dict_organismos = {o.idOrganismo: o for o in organismos}
dict_organi_rpt = {o.idOrganismo: o for o in organismos_rpt}
arreglos = yaml_from_file("arreglos/rpt_dir3.yml")

示例#4
0
re_categoria = re.compile(r"^\s*\d+\.\s*-\s*(.+)\s*:\s*$")
re_spip = re.compile(r"^\s*(Página:|Fecha:|\d+/\d+/20\d+|\d+ de \d+)\s*$")
re_residencia = re.compile(r"^\s*(\d+-\d+-\d+)\s+([A-Z].*)\s*$")
re_sp = re.compile(r"  +")
re_bk = re.compile(r"\s+")
re_puesto = re.compile(r"\b(\d{6,7})\b")
re_map = re.compile(
    r"http://maps.googleapis.com/maps/api/staticmap\?center=(.*?)&.*")
re_ll = re.compile(r"https://maps.google.es/maps\?.*&ll=([\d\.,\-]+).*")
re_ll2 = re.compile(
    r"https://www.google.com/maps/search/\?api=1&query=([\d\.,\-]+)")
re_paren = re.compile(r"\(.*$")

arregla_direcciones = get_direcciones_txt()

puestos_v1 = Puesto.load(name="datos/v1.0/destinos_all.json",
                         descripciones="datos/v1.0/descripciones.json")
organis_v1 = Organismo.load(name="datos/v1.0/organismos.json")


def parse(cell, parse_number=True):
    if not cell:
        return None
    v = cell.value
    if isinstance(v, float):
        return int(v) if v.is_integer() else v
    if isinstance(v, str):
        v = v.strip()
        v = re_space.sub(" ", v)
        v = v.replace("PROGRAMDOR", "PROGRAMADOR")
        if parse_number and re_number.match(v):
            v = float(v.replace(",", "."))
示例#5
0
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):
        ll = cod_dir_latlon.get(codigo, None)
        self.nota = notas.get(codigo, None)
        self.clave = codigo
        self.codigo = codigo
        self.descripcion = descripcion
        self.hijos = set()
        self.puestos = []
        self.rpt = None
        self.deDireccion = None
        self.organismo = organismos.get(codigo, None)
示例#6
0
                    help='Solo genera la parte de las direcciones')
parser.add_argument('--destinos',
                    action='store_true',
                    help='Solo genera la parte de destinos')
parser.add_argument('--ranking',
                    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)
示例#7
0
    if not cell:
        return None
    v = cell.value
    if isinstance(v, float):
        return int(v) if v.is_integer() else v
    if isinstance(v, str):
        v = v.strip()
        v = re_space.sub(" ", v)
        if parse_number and re_number.match(v):
            v = float(v.replace(",", "."))
            return int(v) if v.is_integer() else v
        return v if len(v) else None
    return v


puestos = Puesto.load(name="2017_L")
unidades = {p.ranking: p.idUnidad for p in puestos}
url = None
with open(".ig_leer_puestos") as f:
    lineas = [l.strip() for l in f.readlines() if l.strip()]
    url = lineas[0]


def get_ok_index(idUnidad, *arg):
    last_unidad = None
    index = 0
    for a in arg:
        unidad = unidades[a]
        if last_unidad is None or unidad != last_unidad:
            last_unidad = unidad
            index = index + 1