def sugerir_productos(self, txt): """ Intenta sugerir productos según el corrector Norving. """ from lib import spelling palabras = [] for pc in pclases.ProductoCompra.select(): palabras.append(pc.codigo.lower()) palabras.append(pc.descripcion.lower()) for pc in pclases.ProductoVenta.select(): palabras.append(pc.codigo.lower()) palabras.append(pc.descripcion.lower()) palabras = " ".join(palabras) corrector = spelling.SpellCorrector(palabras) sugerencia = corrector.correct(txt.lower()) if sugerencia != txt: res = utils.dialogo(titulo = "SUGERENCIA DE BÚSQUEDA", texto="No se encontró «%s», ¿tal vez quiso decir «%s»?" % ( txt, sugerencia), padre = self.wids['ventana']) if res: res = ([p for p in utils.buscar_productos_compra(sugerencia)]+ [p for p in utils.buscar_productos_venta(sugerencia)]) else: res = [] else: raise ValueError, "Sin alternativas que sugerir." return res
def buscar(self, boton): a_buscar = self.wids['e_buscar'].get_text() productos = [] for p in utils.buscar_productos_compra(a_buscar): productos.append(p) for p in utils.buscar_productos_venta(a_buscar): productos.append(p) if not len(productos) and len(a_buscar): # Busca algo de texto pero no se encontró try: productos = self.sugerir_productos(a_buscar) except (ImportError, ValueError): utils.dialogo_info(titulo = "SIN RESULTADOS", texto = "No se encontraron productos con el" "texto «%s»." % a_buscar, padre = self.wids['ventana']) self.rellenar_tabla(productos)