Example #1
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()
Example #2
0
            cod, prov = tds
            idde["provincias"][int(cod)] = prov

    todos = []
    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")
Example #3
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'
Example #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(",", "."))
Example #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)
wb_out = xlwt.Workbook()
ws_out = wb_out.add_sheet('Oferta normalizada')
row = ws_out.row(0)
for i, v in enumerate(["PUESTO\nNÚMERO", "ID MINISTERIO", "MINISTERIO", "ID CENTRO", "CENTRO", "ID UNIDAD", "UNIDAD"]):
    row.write(i, v)
'''

org_convocatoria=Org(None, None)
puestos = []
unidades = []
wb = xlrd.open_workbook("fuentes/2017_L.xls", logfile=open(os.devnull, 'w'))
sh = wb.sheet_by_index(0)
for rx in range(1, sh.nrows):
    r = [parse(c) for c in sh.row(rx)]
    if len(r)==10:
        p = Puesto()
        p.ranking=r[0]
        p.idPuesto=r[-3]
        p.dePuesto = get_puesto(r[-4])
        p.nivel=r[-2]
        p.complemento=r[-1]
        p.provincia=get_provincia(r[4])
        p.localidad=r[5]
        p.deMinisterio=r[1]
        p.deCentroDirectivo=r[2]
        p.deUnidad=r[3]
        p.idMinisterio, p.idCentroDirectivo = get_ministerio_centro(p.deMinisterio, p.deCentroDirectivo)
        if p.deUnidad:
            p.idUnidad=get_unidad(p.idMinisterio, p.idCentroDirectivo, p.deUnidad)
        else:
            p.idUnidad=get_unidad(p.idMinisterio, p.idCentroDirectivo, p.deCentroDirectivo)
Example #7
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)
Example #8
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