예제 #1
0
def analizar_madera(madera):
    """ 
    Analiza la compatibilidad una  madera. 
    Determinando todos los usos compatibles 
    """ 
    print madera.nombre
    usos_analisis = []
    usos_compatibles = []
    for uso in dbaccess.buscar_usos():
        analisis = [] # para cada uso
        uso_analisis = {} # tiene dos partes
        presentacion = {}
        # se retornarán solo las propiedades que constan en el 'uso'
        #for k in uso.propiedades.keys():...
        for pbd in dbaccess.buscar_propiedades():
            k = pbd.get('id_propiedad') 
            # propiedad no existe en 'uso' o en 'madera'
            if not uso.propiedades.get(k) or not madera.propiedades.get(k):
                #c = model.Compatibilidad(k,None,None)
                c = model.Compatibilidad(k,True,False)
            elif not uso.propiedades[k].min and madera.propiedades[k] <= uso.propiedades[k].max:
                c = model.Compatibilidad(k,True,pbd.get('obligatoria',''))
            elif not uso.propiedades[k].max and madera.propiedades[k] >= uso.propiedades[k].min:
                c = model.Compatibilidad(k,True,pbd.get('obligatoria',''))
            elif uso.propiedades[k].min <= madera.propiedades[k] <= uso.propiedades[k].max:
                c = model.Compatibilidad(k,True,pbd.get('obligatoria',''))
            else:
                c = model.Compatibilidad(k,False,pbd.get('obligatoria',''))
            analisis.append(c)
        #se puede colocar todo el objeto uso....
        uso_analisis['nombre_uso'] = uso.nombre
        uso_analisis['analisis'] = analisis
        usos_analisis.append(uso_analisis)
        # por necesidad de presentacion del nombre del uso
        presentacion = procesar_presentacion(analisis)
        presentacion['nombre_uso'] = uso.nombre
        print uso.nombre, presentacion
        incompatibles = incompatibilidades(analisis)
        #if len(uso.propiedades) > 0 and len(incompatibles) == 0:
        if len(incompatibles) == 0:
            usos_compatibles.append(uso)
            print incompatibles,'Es COMPATIBLE :)'
        else:
            print incompatibles,'Es INCOMPATIBLE :('
    return ( usos_compatibles, usos_analisis )
예제 #2
0
 def GET(self):
     return renderizador.seleccionar_uso(dbaccess.buscar_usos())
예제 #3
0
 def GET(self):
     usos = dbaccess.buscar_usos()
     propiedades = dbaccess.buscar_propiedades()
     return renderizador.usos(propiedades,usos)