def set_valores(self,valores): """ Al cambiar los valores de la madera se recodifican sus propiedades en base a esos valores """ self.__valores = valores for (id_propiedad,valor) in valores.items(): propiedad = dbaccess.buscar_propiedad(id_propiedad) nombre_codif = '' if propiedad.get('clase') == u'tecnológica': """ Recorremos las codificaciones que tiene la propiedad """ for (codif,rango) in propiedad['codificaciones'].items(): if not rango.min and valor <= rango.max: nombre_codif = codif break if not rango.max and valor >= rango.min: nombre_codif = codif break if rango.min <= valor <= rango.max: nombre_codif = codif break elif propiedad.get('clase') == u'anatómica': # valor 'str', es el nombre ya codificado que viene del <select> html # valor es ya el nombre codificado desde la vista nombre_codif = valor # se supone que se encuentra una sola codificacion consulta = dbaccess.codificaciones(nombre=nombre_codif) if consulta: codificacion = consulta[0] self.__propiedades[id_propiedad] = codificacion.get('valor')
def GET(self): propiedad = None if 'id_propiedad' in web.input(): id_propiedad = web.input().id_propiedad propiedad = dbaccess.buscar_propiedad(id_propiedad) if not propiedad: propiedad = dict() propiedad['id_propiedad'] = dbaccess.contar_propiedades() + 1 cods = dbaccess.codificaciones(clase='anatómica') return renderizador.editpanatomica(propiedad,cods)
def load_tecnologicas_xls(file=path_dbs+'/excel/PROPIEDADES.xls'): """ Carga propiedades físicas y mecánicas de la madera """ propiedades = [] campos = ['nombre','categoria','codigo','obligatoria','unidad','muy_bajo','bajo','medio','alto','muy_alto'] book = xlrd.open_workbook(file) sheet = book.sheet_by_name('tecnologicas') for r in range(1,sheet.nrows): propiedad = {} id_propiedad = r if not dbaccess.buscar_propiedad(str(r)) else dbaccess.contar_propiedades() + len(propiedades) + 1 # se agrega un id a la propiedad propiedad['id_propiedad'] = str(id_propiedad) propiedad['clase'] = 'tecnológica' propiedad['codificaciones'] = {} for c in range(sheet.ncols): cell = sheet.cell(r,c) if cell.value is not xlrd.empty_cell.value: if c < 5: if sheet.cell(0,c).value == 'obligatoria': propiedad['obligatoria'] = True if cell.value in ('Si','si','SI','sI') else False else: propiedad[sheet.cell(0,c).value.lower()] = cell.value # leemos las codificaciones else: # espacios cell.value = cell.value.replace(' ','') # separador decimal cell.value = cell.value.replace(',','.') if '<' in cell.value: maxval = float(cell.value.replace('<','')) propiedad['codificaciones'][campos[c]] = model.Rango(None,maxval) elif '>' in cell.value: minval = float(cell.value.replace('>','')) propiedad['codificaciones'][campos[c]] = model.Rango(minval,None) elif '-' in cell.value: minval = float(cell.value.split('-')[0]) maxval = float(cell.value.split('-')[1]) propiedad['codificaciones'][campos[c]] = model.Rango(minval,maxval) propiedades.append(propiedad) return propiedades
def load_anatomicas_xls(file=path_dbs+'/excel/PROPIEDADES.xls'): #""" Carga propiedades anatomicas de la madera """ propiedades = [] campos = ['nombre','obligatoria','codigo','excelente','bueno','regular','pobre'] book = xlrd.open_workbook(file) sheet = book.sheet_by_name('anatomicas') for r in range(1,sheet.nrows): propiedad = {} propiedad['clase'] = 'anatómica' propiedad['codificaciones'] = {} # TODO: Buscar propiedad por codigo, si exsite actualizar. id_propiedad = r if not dbaccess.buscar_propiedad(str(r)) else (dbaccess.contar_propiedades() + len(propiedades) + 1) propiedad['id_propiedad'] = str(id_propiedad) for c in range(0,sheet.ncols): value = sheet.cell(r,c).value if sheet.cell(0,c).value == 'nombre' or sheet.cell(0,c).value == u'codigo': propiedad[sheet.cell(0,c).value.lower()] = value elif sheet.cell(0,c).value == 'obligatoria': propiedad['obligatoria'] = True if value in ('Si','si','SI','sI') else False else: propiedad['codificaciones'][campos[c]] = value propiedades.append(propiedad) return propiedades