diff --git a/endpoints/alquileres.py b/endpoints/alquileres.py index 3cfc9a7..3e254ce 100644 --- a/endpoints/alquileres.py +++ b/endpoints/alquileres.py @@ -54,8 +54,8 @@ def ver_alquileres(info = None): return render_template("ver_alquileres.html", alquileres=alquileres, info=info) -@alquileres.route("/renovar/") -def renovar_alquiler(id_taquilla): +@alquileres.route("/renovar/", methods=["GET", "POST"]) +def renovar_alquiler(id_taquilla): if not id_taquilla: return redirect("/") @@ -65,14 +65,11 @@ def renovar_alquiler(id_taquilla): .first() ) - current_date = datetime.datetime.now() - validez = current_date + relativedelta(months=3) - validez = validez.replace(hour=23, minute=59, second=0, microsecond=0) - validez = int(validez.timestamp()) - - alquiler.validez = validez - - db.session.commit() + taquilla = ( + db.session.query(Taquilla) + .filter(Taquilla.id == id_taquilla) + .first() + ) usuario = ( db.session.query(Usuario) @@ -80,7 +77,38 @@ def renovar_alquiler(id_taquilla): .first() ) - return ver_alquileres(info=f"Alquiler renovado correctamente para {usuario.nombre}") + error = None + + if request.method == "GET": + return render_template( + "renovar_taquilla.html", + nombre_usuario=usuario.nombre, + numero_taquilla=taquilla.id_taquilla, + id_taquilla=taquilla.id + ) + + else: + fecha_caducidad = request.form.get("fecha_caducidad") + fecha_caducidad = datetime.datetime.strptime(fecha_caducidad, "%Y-%m-%d") + current_date = datetime.datetime.now() + + if not fecha_caducidad > current_date: + error = "La fecha introducida no es válida. Tiene que ser mayor que la fecha actual." + + if not error: + alquiler.validez = fecha_caducidad.timestamp() + + db.session.commit() + + return ver_alquileres(info=f"Alquiler renovado correctamente para {usuario.nombre}") + + else: + return render_template( + "renovar_taquilla.html", + nombre_usuario = usuario.nombre, + numero_taquilla = taquilla.id_taquilla, + info=error + ) @alquileres.route("/confirmar-baja/") def confirmar_baja(id_taquilla): diff --git a/endpoints/taquillas.py b/endpoints/taquillas.py index 96f83c5..10c2d88 100644 --- a/endpoints/taquillas.py +++ b/endpoints/taquillas.py @@ -62,19 +62,40 @@ def alquilar_taquilla(id_taquilla): ) else: + error = None nombre = request.form.get("nombre_usuario").upper() dni = request.form.get("dni_usuario").upper() correo = request.form.get("correo_electronico") + + fecha_caducidad = request.form.get("fecha_caducidad") agreement = request.form.get("agreement") - print(nombre, dni, correo, agreement) - error = None - + try: + fecha_caducidad = datetime.datetime.strptime(fecha_caducidad, "%Y-%m-%d") + + except Exception: + error = "No se ha introducido la fecha de forma correcta." + return render_template( + "alquilar_taquilla.html", + id_taquilla=id_taquilla, + info=error + ) + if not (dni and correo and nombre): error = "Faltan datos." + return render_template( + "alquilar_taquilla.html", + id_taquilla=id_taquilla, + info=error + ) if not agreement: error = "No está de acuerdo con las políticas." + return render_template( + "alquilar_taquilla.html", + id_taquilla=id_taquilla, + info=error + ) user = ( db.session.query(Usuario) @@ -98,6 +119,11 @@ def alquilar_taquilla(id_taquilla): if alquiler_user: error = "Usuario ya tiene una taquilla alquilada. Debe renovar o dar de baja el alquiler." + return render_template( + "alquilar_taquilla.html", + id_taquilla=id_taquilla, + info=error + ) taquilla = ( db.session.query(Taquilla) @@ -107,32 +133,35 @@ def alquilar_taquilla(id_taquilla): if not taquilla: error = "La taquilla en cuestión no existe" - - if not error: - alquiler_user = Alquiler() - alquiler_user.id_usuario = user.id - alquiler_user.id_taquilla = taquilla.id - - current_date = datetime.datetime.now() - validez = current_date + relativedelta(months=3) - validez = validez.replace(hour=23, minute=59, second=0, microsecond=0) - - alquiler_user.validez = int(validez.timestamp()) - - db.session.add(alquiler_user) - - db.session.commit() - - return render_template( - "pagina_principal.html", - info=f"¡La taquilla {id_taquilla} ha sido alquilada a {nombre}!" - ) - - else: - print(error) return render_template( "alquilar_taquilla.html", id_taquilla=id_taquilla, info=error ) + + current_date = datetime.datetime.now() + + if not fecha_caducidad > current_date: + error = "La fecha introducida no es válida. Tiene que ser mayor que la fecha actual." + return render_template( + "alquilar_taquilla.html", + id_taquilla=id_taquilla, + info=error + ) + + alquiler_user = Alquiler() + alquiler_user.id_usuario = user.id + alquiler_user.id_taquilla = taquilla.id + alquiler_user.validez = int(fecha_caducidad.timestamp()) + + db.session.add(alquiler_user) + + db.session.commit() + + return render_template( + "pagina_principal.html", + info=f"¡La taquilla {id_taquilla} ha sido alquilada a {nombre}!" + ) + + \ No newline at end of file diff --git a/templates/alquilar_taquilla.html b/templates/alquilar_taquilla.html index cd902af..1b065d8 100644 --- a/templates/alquilar_taquilla.html +++ b/templates/alquilar_taquilla.html @@ -9,12 +9,6 @@ Alquilar taquilla
- {% if error %} -
- {{ error }} -
- {% endif %} -
@@ -34,6 +28,11 @@ Alquilar taquilla
+ +
+ + +
diff --git a/templates/renovar_taquilla.html b/templates/renovar_taquilla.html new file mode 100644 index 0000000..5e1d5ac --- /dev/null +++ b/templates/renovar_taquilla.html @@ -0,0 +1,32 @@ +{% extends "base.html" %} + +{% block title %} +Alquilar taquilla +{% endblock %} + +{% block content %} +
+
+ +
+

Renovando la taquilla {{ numero_taquilla }}

+
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+
+{% endblock %} \ No newline at end of file