def load_obras_duplicadas():
    """
    Devuelve las obras duplicadas en un diccionario agrupando por nombre.
    """
    obras = pclases.Obra.select(orderBy = "nombre")
    suffix = '%(percent)d%% [%(elapsed_td)s / %(eta_td)s]'
    bar = ShadyBar("Buscando duplicadas", suffix=suffix, 
                   max=obras.count())
    dupes = defaultdict(lambda: [])
    for obra in bar.iter(obras):
        nombre = obra.nombre
        if pclases.Obra.selectBy(nombre=nombre).count() > 1:
            dupes[nombre].append(obra)
    return dupes
示例#2
0
def main(fexistencias_ini_fib, fexistencias_ini_gtx, fexistencias_ini_cem,
         fproduccion_fib, fproduccion_gtx, fproduccion_cem,
         fsalidas_fib, fsalidas_gtx, fsalidas_cem, fconsumos,
         fexistencias_fin_fib, fexistencias_fin_gtx, fexistencias_fin_cem, 
         fout = None):
    """
    Abre y parsea uno por uno los ficheros de entrada. Construye una serie 
    de diccionarios con la información de existencias, salidas, consumos y 
    producción. A partir de esos diccionarios genera un fichero CSV que 
    muestra por salida estándar.
    """
    tpro = ShadyBar("Generando CSV de cierre de existencias...",
                    suffix='%(percent)d%% [%(elapsed_td)s / %(eta_td)s]', 
                    max = 12)
    tpro.next()
    existencias_ini = parse_existencias(fexistencias_ini_fib)
    tpro.next()
    existencias_ini = parse_existencias(fexistencias_ini_gtx,
                                        existencias_ini)
    tpro.next()
    existencias_ini = parse_existencias(fexistencias_ini_cem,
                                        existencias_ini)
    tpro.next()
    produccion = parse_produccion(fproduccion_fib,
                                  fproduccion_gtx,
                                  fproduccion_cem)
    tpro.next()
    salidas = parse_salidas(fsalidas_fib, fsalidas_gtx, fsalidas_cem)
    tpro.next()
    consumos = parse_consumos(fconsumos)
    existencias_fin = parse_existencias(fexistencias_fin_fib)
    tpro.next()
    existencias_fin = parse_existencias(fexistencias_fin_gtx,
                                        existencias_fin)
    tpro.next()
    existencias_fin = parse_existencias(fexistencias_fin_cem,
                                        existencias_fin)
    tpro.next()
    dic_deltas = calculate_deltas(existencias_ini,
                                  produccion,
                                  salidas,
                                  consumos,
                                  existencias_fin)
    tpro.next()
    check_traspasos(dic_deltas)
    tpro.next()
    if AUTO_OUT:
        for tipo in (("fib", ), ("gtx", ), ("cem", ), ("fib", "gtx", "cem")):
            for qlty in (("A", ), ("B", ), ("C", ), ("total", ), 
                         ("A", "B", "C", "total")):
                OPTIONS.tipo = tipo
                OPTIONS.qlty = qlty
                if len(tipo) == 3:
                    str_tipo = ""
                else:
                    str_tipo = "_" + "".join(tipo)
                if len(qlty) == 4:
                    str_qlty = ""
                else:
                    str_qlty = "_" + "".join(qlty)
                fout = "diff%s%s.csv" % (str_tipo, str_qlty)
                dump_deltas(dic_deltas, fout)
    else:
        dump_deltas(dic_deltas, fout)
    tpro.next()
    tpro.finish()