コード例 #1
0
 def tostr(v):
     if isinstance(v, float):
         v = utils.float2str(v)
     elif isinstance(v, int):
         v = utils.int2str(v)
     elif isinstance(v, (list, tuple)):
         # Recursividad, divino tesoro...
         v = sanitize(v)
     return v
コード例 #2
0
ファイル: empleados.py プロジェクト: Virako/fpinn
 def comprobar_dni(self):
     """
     Comprueba la letra del DNI o la asigna en 
     caso de que el texto del entry tenga formato de 
     DNI y no tenga letra.
     """
     adaptadores = self.adaptador.get_adaptadores()
     col = self.objeto.sqlmeta.columns['dni']
     adaptador = adaptadores[col]
     entry = adaptador['widget']
     valor = entry.get_text()
     import re
     dni = "[0-9][0-9][\.,]?[0-9]{3}[\.,]?[0-9]{3}[-]?[a-z]?"
     rexp = re.compile(dni)
     if rexp.findall(valor):
         dninum = "".join([i for i in valor if i.isdigit()])
         dnivalido = utils.calcularNIF(dninum)
         entry.set_text(utils.int2str("1" + dninum)[1:] + "-" + dnivalido)
コード例 #3
0
 def rellenar_treeviews(self):
     almacenid = utils.combo_get_value(self.wids['cb_almacen'])
     if almacenid != 0:
         almacen = pclases.Almacen.get(almacenid)
     else:
         almacen = None
     vpro = VentanaProgreso(padre = self.wids['ventana'])
     vpro.mostrar()
     totales = {'kgA':     {}, 
                'kgB':     {}, 
                'kgC':     {}, 
                'kgTotal': {}, 
                'mA':      {}, 
                'mB':      {}, 
                'mC':      {}, 
                'mTotal':  {}, 
                '#A':      {}, 
                '#B':      {}, 
                '#C':      {}, 
                '#Total':  {}
               }
     i = 0.0
     tot = sum([len(self.productos[k]) for k in self.productos.keys()])
     for nombre_tv in ("tv_fibra", "tv_gtx", "tv_cemento"):
         tv = self.wids[nombre_tv]
         model = tv.get_model()
         model.clear()
         tipo = nombre_tv.split("_")[-1]
         for pv in self.productos[tipo]:
             i += 1
             vpro.set_valor(i / tot, 
                            "Contando existencias de %s (%d) [%s]..." % (
                                 pv.nombre, pv.id, tipo))
             kgA = pv.get_stock_A(almacen = almacen)
             kgB = pv.get_stock_B(almacen = almacen)
             kgC = pv.get_stock_C(almacen = almacen)
             bultosA = pv.get_existencias_A(almacen = almacen)
             bultosB = pv.get_existencias_B(almacen = almacen)
             bultosC = pv.get_existencias_C(almacen = almacen)
             total_kg = pv.get_stock(almacen = almacen, 
                                  contar_defectuosos = True)
             total_bultos = pv.get_existencias(almacen = almacen, 
                                  contar_defectuosos = True)
             if pclases.DEBUG:
                 assert round(kgA + kgB + kgC) == round(
                         total_kg), pv.puid  # XXX 
                 # Esto de arriba, aunque mezcle metros con kilos, no 
                 # debe fallar. Ya que en el total de un producto C, 
                 # A y B se quedan a 0.0. Y al contrario. Si el producto 
                 # no es C, A y B valdrán algo y C siempre es 0.
                 assert round(bultosA + bultosB + bultosC) == round(
                         total_bultos), pv.puid  # XXX 
             if nombre_tv != "tv_gtx":
                 fila = [pv.descripcion, 
                         utils.float2str(kgA), 
                         utils.int2str(bultosA), 
                         utils.float2str(kgB), 
                         utils.int2str(bultosB), 
                         utils.float2str(kgC), 
                         utils.int2str(bultosC), 
                         utils.float2str(total_kg), 
                         utils.int2str(total_bultos), 
                         pv.puid]
                 actualizar_totales(totales, tipo, 
                         kgA, kgB, kgC, total_kg, 
                         bultosA, bultosB, bultosC, total_bultos)
             else:
                 # Los metros ya los tenía calculados. Es lo que devuelve 
                 # el get_stock. Solo que arriba lo he llamado kg*
                 metrosA = kgA
                 metrosB = kgB
                 metrosC = "N/A" # No aplicable. Solo se mide en kilos.
                 kilosA = pv.get_stock_kg_A(almacen = almacen)
                 kilosB = pv.get_stock_kg_B(almacen = almacen)
                 kilosC = kgC    # Ya estaba calculado
                 total_kilos = kilosA + kilosB + kilosC
                 total_metros = metrosA + metrosB
                 # total bultos ya se calcula arriba.
                 fila = [pv.descripcion, 
                         utils.float2str(kilosA), 
                         utils.float2str(metrosA), 
                         utils.int2str(bultosA), 
                         utils.float2str(kilosB), 
                         utils.float2str(metrosB), 
                         utils.int2str(bultosB), 
                         utils.float2str(kilosC), 
                         metrosC,  # No es aplicable. Solo kg. No m² en C.
                         utils.int2str(bultosC), 
                         utils.float2str(total_kilos), 
                         utils.float2str(total_metros), 
                         utils.int2str(total_bultos), 
                         pv.puid]
                 actualizar_totales(totales, tipo, 
                         kilosA, kilosB, kilosC, total_kilos, 
                         bultosA, bultosB, bultosC, total_bultos, 
                         metrosA, metrosB, 0.0, total_metros)
                     # m² de C es "N/A". Le paso un 0 aquí para que no pete.
             model.append(fila)
     vpro.ocultar()
     return totales