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) 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): def renovar_alquiler(id_taquilla):
if not id_taquilla: if not id_taquilla:
return redirect("/") return redirect("/")
@ -65,14 +65,11 @@ def renovar_alquiler(id_taquilla):
.first() .first()
) )
current_date = datetime.datetime.now() taquilla = (
validez = current_date + relativedelta(months=3) db.session.query(Taquilla)
validez = validez.replace(hour=23, minute=59, second=0, microsecond=0) .filter(Taquilla.id == id_taquilla)
validez = int(validez.timestamp()) .first()
)
alquiler.validez = validez
db.session.commit()
usuario = ( usuario = (
db.session.query(Usuario) db.session.query(Usuario)
@ -80,8 +77,39 @@ def renovar_alquiler(id_taquilla):
.first() .first()
) )
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}") 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>") @alquileres.route("/confirmar-baja/<id_taquilla>")
def confirmar_baja(id_taquilla): def confirmar_baja(id_taquilla):
info_taquilla = ( info_taquilla = (

View File

@ -62,19 +62,40 @@ def alquilar_taquilla(id_taquilla):
) )
else: else:
error = None
nombre = request.form.get("nombre_usuario").upper() nombre = request.form.get("nombre_usuario").upper()
dni = request.form.get("dni_usuario").upper() dni = request.form.get("dni_usuario").upper()
correo = request.form.get("correo_electronico") correo = request.form.get("correo_electronico")
fecha_caducidad = request.form.get("fecha_caducidad")
agreement = request.form.get("agreement") agreement = request.form.get("agreement")
print(nombre, dni, correo, agreement) try:
error = None 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): if not (dni and correo and nombre):
error = "Faltan datos." error = "Faltan datos."
return render_template(
"alquilar_taquilla.html",
id_taquilla=id_taquilla,
info=error
)
if not agreement: if not agreement:
error = "No está de acuerdo con las políticas." error = "No está de acuerdo con las políticas."
return render_template(
"alquilar_taquilla.html",
id_taquilla=id_taquilla,
info=error
)
user = ( user = (
db.session.query(Usuario) db.session.query(Usuario)
@ -98,6 +119,11 @@ def alquilar_taquilla(id_taquilla):
if alquiler_user: if alquiler_user:
error = "Usuario ya tiene una taquilla alquilada. Debe renovar o dar de baja el alquiler." 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 = ( taquilla = (
db.session.query(Taquilla) db.session.query(Taquilla)
@ -107,17 +133,26 @@ def alquilar_taquilla(id_taquilla):
if not taquilla: if not taquilla:
error = "La taquilla en cuestión no existe" error = "La taquilla en cuestión no existe"
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
)
if not error:
alquiler_user = Alquiler() alquiler_user = Alquiler()
alquiler_user.id_usuario = user.id alquiler_user.id_usuario = user.id
alquiler_user.id_taquilla = taquilla.id alquiler_user.id_taquilla = taquilla.id
alquiler_user.validez = int(fecha_caducidad.timestamp())
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.add(alquiler_user)
@ -128,11 +163,5 @@ def alquilar_taquilla(id_taquilla):
info=f"¡La taquilla {id_taquilla} ha sido alquilada a {nombre}!" 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
)

View File

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