Ejemplo n.º 1
0
def carrito_add(id):
    art = Articulos.query.get(id)
    form = formCarrito()
    form.id.data = id
    if form.validate_on_submit():
        if art.stock >= int(form.cantidad.data):
            try:
                datos = json.loads(request.cookies.get(str(current_user.id)))
            except:
                datos = []
            actualizar = False
            for dato in datos:
                if dato["id"] == id:
                    dato["cantidad"] = form.cantidad.data
                    actualizar = True
            if not actualizar:
                datos.append({
                    "id": form.id.data,
                    "cantidad": form.cantidad.data
                })
            resp = make_response(redirect(url_for('inicio')))
            resp.set_cookie(str(current_user.id), json.dumps(datos))
            return resp
        form.cantidad.errors.append("No hay artículos suficientes.")
    return render_template("carrito_add.html", form=form, art=art)
Ejemplo n.º 2
0
def carrito_add(id):
    articulo = Articulos.query.get(id)
    form = formCarrito()
    form.id.data = id  # Pasamos el id al campo oculto (por debajo, sin mostrar nada...)

    if form.validate_on_submit():
        #POST
        if articulo.stock >= int(form.cantidad.data):
            try:
                datos = json.loads(request.cookies.get(str(current_user.id))
                                   )  # Obtenemos la cookie de ese user en json
            except:
                datos = []
            actualizar = False

            for dato in datos:
                if dato["id"] == id:  # El articulo ya estaba en el carrito y hay que actualizar la cantidad
                    dato["cantidad"] = form.cantidad.data
                    actualizar = True

            if not actualizar:  # Al no estar en el carrito lo añadimos (a las cookies)
                datos.append({
                    "id": form.id.data,
                    "cantidad": form.cantidad.data
                })
            resp = make_response(redirect(url_for('inicio')))
            resp.set_cookie(str(current_user.id), json.dumps(datos))
            return resp
        form.cantidad.errors.append("No hay articulos suficientes")
    return render_template("carrito_add.html", form=form, articulo=articulo)