169 lines
4.5 KiB
Python
169 lines
4.5 KiB
Python
from flask import (
|
|
Blueprint,
|
|
render_template,
|
|
request,
|
|
redirect
|
|
)
|
|
from models import (
|
|
Alquiler,
|
|
Usuario,
|
|
Taquilla,
|
|
db
|
|
)
|
|
import datetime
|
|
from dateutil.relativedelta import relativedelta
|
|
|
|
alquileres = Blueprint(
|
|
"gestion_alquileres",
|
|
__name__
|
|
)
|
|
|
|
@alquileres.route("/ver-alquileres")
|
|
def ver_alquileres(info = None):
|
|
alquileres = (
|
|
db.session.query(
|
|
Usuario.id,
|
|
Usuario.nombre,
|
|
Usuario.dni,
|
|
Taquilla.id,
|
|
Taquilla.id_taquilla,
|
|
Alquiler.validez
|
|
)
|
|
.join(Alquiler, Alquiler.id_usuario == Usuario.id)
|
|
.join(Taquilla, Alquiler.id_taquilla == Taquilla.id)
|
|
.all()
|
|
)
|
|
|
|
alquileres = [
|
|
{
|
|
"id_usuario": id_usuario,
|
|
"id_taquilla": id_taquilla,
|
|
"nombre_persona": nombre,
|
|
"dni_persona": dni,
|
|
"taquilla": numero_taquilla,
|
|
"validez": datetime.datetime.fromtimestamp(int(validez)).strftime("%d/%m/%Y %H:%M:%S")
|
|
} for
|
|
id_usuario,
|
|
nombre,
|
|
dni,
|
|
id_taquilla,
|
|
numero_taquilla,
|
|
validez
|
|
in alquileres
|
|
]
|
|
|
|
return render_template("ver_alquileres.html", alquileres=alquileres, info=info)
|
|
|
|
@alquileres.route("/renovar/<id_taquilla>", methods=["GET", "POST"])
|
|
def renovar_alquiler(id_taquilla):
|
|
if not id_taquilla:
|
|
return redirect("/")
|
|
|
|
alquiler = (
|
|
db.session.query(Alquiler)
|
|
.filter(Alquiler.id_taquilla == id_taquilla)
|
|
.first()
|
|
)
|
|
|
|
taquilla = (
|
|
db.session.query(Taquilla)
|
|
.filter(Taquilla.id == id_taquilla)
|
|
.first()
|
|
)
|
|
|
|
usuario = (
|
|
db.session.query(Usuario)
|
|
.filter(Usuario.id == alquiler.id_usuario)
|
|
.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}")
|
|
|
|
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):
|
|
info_taquilla = (
|
|
db.session.query(
|
|
Taquilla.id_taquilla,
|
|
Usuario.nombre
|
|
)
|
|
.join(Alquiler, Alquiler.id_taquilla == Taquilla.id)
|
|
.join(Usuario, Alquiler.id_usuario == Usuario.id)
|
|
.filter(Taquilla.id == id_taquilla)
|
|
.first()
|
|
)
|
|
|
|
info_taquilla = {
|
|
"numero_taquilla": info_taquilla[0],
|
|
"nombre_persona": info_taquilla[1]
|
|
}
|
|
|
|
return render_template(
|
|
"confirmar_baja.html",
|
|
info_taquilla=info_taquilla,
|
|
id_taquilla=id_taquilla
|
|
)
|
|
|
|
@alquileres.route("/baja/<id_taquilla>")
|
|
def dar_baja(id_taquilla):
|
|
alquiler = (
|
|
db.session.query(Alquiler)
|
|
.filter(Alquiler.id_taquilla == id_taquilla)
|
|
.first()
|
|
)
|
|
|
|
usuario = (
|
|
db.session.query(Usuario)
|
|
.filter(Usuario.id == alquiler.id_usuario)
|
|
.first()
|
|
)
|
|
|
|
taquilla = (
|
|
db.session.query(Taquilla)
|
|
.filter(Taquilla.id == id_taquilla)
|
|
.first()
|
|
)
|
|
|
|
if alquiler and usuario and taquilla:
|
|
nombre_usuario = usuario.nombre
|
|
id_taquilla = taquilla.id_taquilla
|
|
|
|
db.session.delete(alquiler)
|
|
db.session.delete(usuario)
|
|
|
|
db.session.commit()
|
|
|
|
return ver_alquileres(info=f"Se ha dado de baja el alquiler para {nombre_usuario} en la taquilla {id_taquilla}")
|
|
|
|
else:
|
|
return ver_alquileres(info="No existe este alquiler") |