138 lines
3.7 KiB
Python
138 lines
3.7 KiB
Python
from flask import (
|
|
Blueprint,
|
|
render_template,
|
|
request
|
|
)
|
|
from models import (
|
|
Seccion,
|
|
Taquilla,
|
|
Alquiler,
|
|
Usuario,
|
|
db
|
|
)
|
|
import time
|
|
import datetime
|
|
from dateutil.relativedelta import relativedelta
|
|
|
|
taquillas = Blueprint(
|
|
"gestion_taquillas",
|
|
__name__
|
|
)
|
|
|
|
@taquillas.route("/secciones")
|
|
def ver_secciones():
|
|
secciones = db.session.query(
|
|
Seccion
|
|
)
|
|
|
|
return render_template(
|
|
"ver_secciones.html",
|
|
secciones=secciones
|
|
)
|
|
|
|
@taquillas.route("/secciones/<id_seccion>")
|
|
def ver_taquillas_seccion(id_seccion):
|
|
taquillas = (
|
|
db.session.query(Taquilla.id_taquilla, Alquiler.id_usuario)
|
|
.join(Alquiler, Taquilla.id == Alquiler.id_taquilla, isouter=True)
|
|
.filter(Taquilla.id_seccion == int(id_seccion))
|
|
.all()
|
|
)
|
|
|
|
print(taquillas)
|
|
|
|
taquillas_result = [
|
|
{
|
|
"id_taquilla": id_taquilla,
|
|
"alquilado": id_usuario is not None
|
|
} for id_taquilla, id_usuario in taquillas
|
|
]
|
|
|
|
return render_template(
|
|
"ver_taquillas.html",
|
|
taquillas=taquillas_result
|
|
)
|
|
|
|
@taquillas.route("/alquilar/<id_taquilla>", methods=["GET", "POST"])
|
|
def alquilar_taquilla(id_taquilla):
|
|
if request.method == "GET":
|
|
return render_template(
|
|
"alquilar_taquilla.html",
|
|
id_taquilla=id_taquilla
|
|
)
|
|
|
|
else:
|
|
nombre = request.form.get("nombre_usuario").upper()
|
|
dni = request.form.get("dni_usuario").upper()
|
|
correo = request.form.get("correo_electronico")
|
|
agreement = request.form.get("agreement")
|
|
|
|
print(nombre, dni, correo, agreement)
|
|
error = None
|
|
|
|
if not (dni and correo and nombre):
|
|
error = "Faltan datos."
|
|
|
|
if not agreement:
|
|
error = "No está de acuerdo con las políticas."
|
|
|
|
user = (
|
|
db.session.query(Usuario)
|
|
.filter(Usuario.dni == dni)
|
|
.first()
|
|
)
|
|
|
|
if not user:
|
|
user = Usuario()
|
|
user.correo = correo
|
|
user.dni = dni
|
|
user.nombre = nombre
|
|
|
|
db.session.add(user)
|
|
|
|
alquiler_user = (
|
|
db.session.query(Alquiler)
|
|
.filter(Alquiler.id_usuario == user.id)
|
|
.first()
|
|
)
|
|
|
|
if alquiler_user:
|
|
error = "Usuario ya tiene una taquilla alquilada. Debe renovar o dar de baja el alquiler."
|
|
|
|
taquilla = (
|
|
db.session.query(Taquilla)
|
|
.filter(Taquilla.id_taquilla == id_taquilla)
|
|
.first()
|
|
)
|
|
|
|
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
|
|
)
|
|
|