Beispiel #1
0
    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]}
        )
Beispiel #2
0
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
Beispiel #3
0
    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)
Beispiel #4
0
    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)
Beispiel #5
0
    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
Beispiel #7
0
    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