def post(self, request): form = AgruparMateriasForm(request.POST) resultado = [] if form.is_valid(): campo = form.cleaned_data["campo"] if campo == '': return render_to_response( "fuzzyapp/agrupar_materias.html", {"resultado": resultado, "form": form} ) query = ( "SELECT array_agg(a.codigo) as codigos, array_agg(a.nombre) as nombres, array_agg(af.{campo}) as campos " "FROM opinion.asignatura as a " "JOIN opinion.asignatura_fuzzy as af USING(codigo) " "GROUP BY af.{campo} " ) query = query.format(campo=campo) columns = { "codigos": {"type": "array", "subtype_converter": unicode}, "nombres": {"type": "array", "subtype_converter": unicode}, "campos": {"type": "array", "subtype_converter": lambda x: convert_fuzzy(x.toString(), int)} } resultado = list(fuzzyQuery(query, columns)) resultado = list(map(lambda x: zip(x['codigos'], x['nombres'], x['campos']), resultado)) return render_to_response( "fuzzyapp/agrupar_materias.html", {"resultado": resultado, "form": form, "campo": c[campo]} )
def filtros_dptos(): query = "SELECT id_unidad, nombre FROM opinion.unidad WHERE mostrar = 'Y'" columns = { "id_unidad": {"type": "integer"}, "nombre": {"type": "string"} } result = [] for row in fuzzyQuery(query, columns): result.append((row['id_unidad'], row['nombre'])) return result
def handle(self, *args, **kwargs): fuzzyStatement("DELETE FROM asignatura_fuzzy") query = fuzzyQuery(DATA_AGG_Q, DATA_AGG_COLS) materia_actual = None data = {} for row in query: if row["codigo"] != materia_actual: self.do_insert(row["codigo"], data) materia_actual = row["codigo"] data = {} preg_dict = data.get(row["id_pregunta"], {}) preg_dict[row["opcion"]] = row["count"] data[row["id_pregunta"]] = preg_dict self.do_insert(materia_actual, data)
def post(self, request): form = AgruparMateriasForm(request.POST) resultado = [] if form.is_valid(): campo = form.cleaned_data["campo"] if campo == '': return render_to_response("fuzzyapp/agrupar_materias.html", { "resultado": resultado, "form": form }) query = ( "SELECT array_agg(a.codigo) as codigos, array_agg(a.nombre) as nombres, array_agg(af.{campo}) as campos " "FROM opinion.asignatura as a " "JOIN opinion.asignatura_fuzzy as af USING(codigo) " "GROUP BY af.{campo} ") query = query.format(campo=campo) columns = { "codigos": { "type": "array", "subtype_converter": unicode }, "nombres": { "type": "array", "subtype_converter": unicode }, "campos": { "type": "array", "subtype_converter": lambda x: convert_fuzzy(x.toString(), int) } } resultado = list(fuzzyQuery(query, columns)) resultado = list( map(lambda x: zip(x['codigos'], x['nombres'], x['campos']), resultado)) return render_to_response("fuzzyapp/agrupar_materias.html", { "resultado": resultado, "form": form, "campo": c[campo] })
def __iter__(self): sql, query_columns = self._get_sql_query() #result = [] for row in fuzzyQuery(sql, query_columns): pokemon = Pokemon( codigo = row["codigo"], nombre = row["nombre"], tipo_1 = row["tipo_1"], tipo_2 = row["tipo_2"], gh_1 = row["gh_1"], gh_2 = row["gh_2"], poder = row["poder_human_readable"], region = row["region"], ratio = row["ratio_human_readable"], color = row["color"], color_percibido = row["color_percibido_human_readable"] ) #pokemon._update_on_save = True #print result #result.append(pokemon) yield pokemon
def __iter__(self): """ Devuelve un generador que ejecuta la consulta del QuerySet y genera las instancias de Materia correspondientes al resultado. """ sql, query_columns = self._get_sql_query() for row in fuzzyQuery(sql, query_columns): ############ TODO ############ # Aquí hay que extraer los valores de row e instanciar # una Materia con ellos. # Luego de instanciar hay que ver si es necesario actualizar # los valores difusos. Si es necesario, entonces hacen las # consultas necesarias para calcularlo, instancian los # nuevos FuzzyExtension, se los asignan a los campos # correspondientes de la instancia de Materia, y hacen # .save() sobre la Materia. # Por ahora dejo instanciarlo sin argumentos para poder # ir probando otras cosas. # TODO: Instanciar Materia materia = Materia( codigo=row["codigo"], nombre=row["nombre"], calificacion=row["calificacion"], preparacion=row["preparacion"], dificultad=row["dificultad"], ) materia._update_on_save = True # TODO: Chequear que los atributos fuzzy no estén stale. # (ese flag debería estar en el row) # TODO: Recalcular atrivutos difusos, si hace falta # TODO: Guardar los nuevos atributos difusos, si hace falta ############ TODO ############ yield materia