Finalización de la compra

En esta última unidad vamos a simular el final de la compra, en este caso hemos simplificado mucho este proceso, simplemente vamos a mostrar la lista de los artículos comprados, el precio final y vamos a actualizar el stock de cada uno de los artículos.

Realizar pedido

En la plantilla carrito.hrml hemos introducido un enlace al la ruta pedido:

<a class="btn btn-primary" href="{{url_for('pedido')}}" role="button">Comprar</a>

En esta ruta vamos a realizar las siguientes acciones:

  • Vamos a leer los datos de la cookie
  • Calculamos el precio final de la compra.
  • Actualizamos en cada artículo la cantidad restando los artículos que hemos comprado.
  • Borramos la cookie
  • Utilizando la plantilla pedido.html mostramos los artículos y el precio final.

El código quedaría de la siguiente forma:

@app.route('/pedido')
@login_required
def pedido():
	try:
		datos = json.loads(request.cookies.get(str(current_user.id)))
	except:
		datos = []
	total=0
	for articulo in datos:
		total=total+Articulos.query.get(articulo["id"]).precio_final()*articulo["cantidad"]
		Articulos.query.get(articulo["id"]).stock-=articulo["cantidad"]
		db.session.commit()
	resp = make_response(render_template("pedido.html",total=total))
	resp.set_cookie(str(current_user.id),"",expires=0)
	return resp

Código ejemplo de esta unidad

Código