Exemple #1
0
def cmg():
    """ Función que lleva a cmg.html o inicio.html según si hay sesión abierta o no. """

    # SI hay 'user' en sesión:
    if session.get("user"):

        # Creando todos objetos formularios necesarios:
        traer = formularios.Traer()
        bajar = formularios.Local()

        # Si se presionó el botón de buscar resultados:
        if traer.validate_on_submit() and traer.submit.data:

            # Obteniendo palabra desde un IntegerField del formulario (si hay datos):
            if traer.buscar.data:
                cmg.cantidad = traer.buscar.data

            # Creando objeto consulta y obteniendo resultados:
            consulta = consultas.Consultas(ARC_CSV, ERROR)
            cmg.resultados, cmg.columnas = consulta.listar_los_mas_x(
                cmg.cantidad, "CLIENTE", "PRECIO")

            return render_template("cmg.html",
                                   traer_cmg=traer,
                                   bajar=bajar,
                                   resultados=cmg.resultados,
                                   columnas=cmg.columnas)

        # Si se presionó el botón de guardar resultados:
        elif bajar.validate_on_submit() and bajar.submit.data:

            # Si no hubo problemas se descargan los resultados en un CSV:
            import datetime as dt
            fecha = dt.datetime.now().strftime("%d/%m/%Y - %H:%M:%S")
            titulo = "[Consulta: Clientes que más gastaron] [Usuario: {}] [Fecha: {}]".format(
                session["user"], fecha)

            exportar = guardar.Exportar(RUTA + TEMP)
            exp_ok = exportar.local(cmg.resultados, titulo)

            # Si se pudo crear CSV:
            if exp_ok:
                session["nombre"] = exportar.nombre_completo()
                session["ruta"] = exportar.ruta
                return redirect(url_for("descargar"))

            # Caso contrario, se muestra mensaje de error:
            else:
                error = "Hubo un problema al intentar crear el archivo CSV."
                return render_template("cmg.html",
                                       error=error,
                                       traer_cmg=traer)

        # Si NO se envia aún ninguna búsqueda:
        else:
            return render_template("cmg.html", traer_cmg=traer)

    # Si NO hay 'user' en sesión:
    else:
        return redirect(url_for("inicio"))
Exemple #2
0
def usuario():
    """ Función que lleva a usuario.html o inicio.html según condición. """

    # SI hay 'user' en sesión:
    if session.get("user"):
        # Creando objeto consulta:
        consulta = consultas.Consultas(ARC_CSV, ERROR)

        # Chequeando que validación del CSV haya sido correcta:
        if consulta.csv.ok:

            # Borrando variable de error, si aún estaba fijada:
            session.pop("error_csv", None)

            CANTIDAD = 5
            resultados, nro_filas = consulta.ultimos_resultados(CANTIDAD)

            return render_template("usuario.html",
                                   usuario=True,
                                   resultados=resultados,
                                   nro_filas=nro_filas,
                                   cantidad=CANTIDAD)

        # En caso de que el CSV no se haya validado correctamente:
        else:
            session["error_csv"] = True
            error = "Surgieron errores durante la validación del CSV"
            return render_template("usuario.html",
                                   usuario=True,
                                   error=error,
                                   mensajes_error=consulta.csv.mensajes_error)
    # Si NO hay 'user' en sesión:
    else:
        return redirect(url_for("inicio"))
Exemple #3
0
def cxp():
    """ Función que lleva a cxp.html o inicio.html según determinadas condiciones. """

    # SI hay 'user' en sesión:
    if session.get("user"):

        # Creando todos objetos formularios necesarios:
        busqueda = formularios.Busqueda()
        bajar = formularios.Local()

        # Creando objeto consulta y obteniendo sugerencias:
        consulta = consultas.Consultas(ARC_CSV, ERROR)
        sugerencias = consulta.listar_x("PRODUCTO")

        # Si se presionó el botón de buscar resultados:
        if busqueda.validate_on_submit() and busqueda.submit.data:

            # Obteniendo palabra desde input del formulario (si hay):
            if busqueda.buscar.data:
                cxp.palabra = busqueda.buscar.data.lower()

            # Obteniendo resultados:
            cxp.resultados, cxp.columnas = consulta.listar_x_en_y(
                cxp.palabra, "CLIENTE", "PRODUCTO")

            # Si hubo resultados:
            if len(cxp.resultados) > 1:
                return render_template("cxp.html",
                                       busqueda_cxp=busqueda,
                                       bajar=bajar,
                                       sugerencias=sugerencias,
                                       resultados=cxp.resultados,
                                       columnas=cxp.columnas)
            # Si NO hubo resultados:
            else:
                error = "No hubo resultados con ese término"
                return render_template("cxp.html",
                                       error=error,
                                       busqueda_cxp=busqueda,
                                       sugerencias=sugerencias)

        # Si se presionó el botón de descargar resultados:
        elif bajar.validate_on_submit() and bajar.submit.data:

            # Si no hubo problemas se descargan los resultados en un CSV:
            import datetime as dt
            fecha = dt.datetime.now().strftime("%d/%m/%Y - %H:%M:%S")
            titulo = "[Consulta: Clientes por Producto] [Usuario: {}] [Fecha: {}]".format(
                session["user"], fecha)

            exportar = guardar.Exportar(RUTA + TEMP)
            exp_ok = exportar.local(cxp.resultados, titulo)

            # Si se pudo crear CSV:
            if exp_ok:
                session["nombre"] = exportar.nombre_completo()
                session["ruta"] = exportar.ruta
                return redirect(url_for("descargar"))

            # Caso contrario, se muestra mensaje de error:
            else:
                error = "Hubo un problema al intentar crear el archivo CSV."
                return render_template("cxp.html",
                                       error=error,
                                       busqueda_cxp=busqueda,
                                       sugerencias=sugerencias)

        # Si no se envia aún ninguna búsqueda:
        else:
            return render_template("cxp.html",
                                   busqueda_cxp=busqueda,
                                   sugerencias=sugerencias)

    # Si NO hay 'user' en sesión:
    else:
        return redirect(url_for("inicio"))