Ahora la renovacion es personalizable

This commit is contained in:
Nacho 2026-01-03 15:57:39 +01:00
parent f9b4716aee
commit c0b880b4ab
4 changed files with 131 additions and 43 deletions

View File

@ -54,7 +54,7 @@ def ver_alquileres(info = None):
return render_template("ver_alquileres.html", alquileres=alquileres, info=info)
@alquileres.route("/renovar/<id_taquilla>")
@alquileres.route("/renovar/<id_taquilla>", 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/<id_taquilla>")
def confirmar_baja(id_taquilla):

View File

@ -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}!"
)

View File

@ -9,12 +9,6 @@ Alquilar taquilla
<div class="form-content">
<form method="post" action="/alquilar/{{ id_taquilla }}" class="form">
{% if error %}
<div class="error-message">
{{ error }}
</div>
{% endif %}
<div class="form-element">
<label for="id_taquilla">Numero de la Taquilla</label>
<input type="text" name="id_taquilla" id="id_taquilla" placeholder="Número de la taquilla" value="{{ id_taquilla }}" disabled>
@ -35,6 +29,11 @@ Alquilar taquilla
<input type="text" name="correo_electronico" id="correo_electronico" placeholder="Correo electrónico">
</div>
<div class="form-element">
<label for="fecha_caducidad">Fecha de caducidad</label>
<input type="date" name="fecha_caducidad" id="fecha_caducidad">
</div>
<div>
<input type="checkbox" id="agreement" name="agreement">
<label for="agreement">He leído la información correspondiente y estoy de acuerdo.</label>

View File

@ -0,0 +1,32 @@
{% extends "base.html" %}
{% block title %}
Alquilar taquilla
{% endblock %}
{% block content %}
<div class="content">
<div class="form-content">
<form method="post" action="/renovar/{{ id_taquilla }}" class="form">
<div class="form-element">
<p>Renovando la taquilla {{ numero_taquilla }}</p>
</div>
<div class="form-element">
<label for="nombre_usuario">Nombre completo</label>
<input type="text" name="nombre_usuario" id="nombre_usuario" placeholder="Nombre completo" value="{{ nombre_usuario }}" disabled>
</div>
<div class="form-element">
<label for="fecha_caducidad">Fecha de caducidad</label>
<input type="date" name="fecha_caducidad" id="fecha_caducidad">
</div>
<div class="form-submit">
<button onclick="history.back()" class="button">Atrás</button>
<input type="submit" class="button" value="Renovar">
</div>
</form>
</div>
</div>
{% endblock %}