|
|
@ -1,44 +1,41 @@ |
|
|
from flask import Blueprint, render_template, request, redirect, url_for |
|
|
|
|
|
|
|
|
from flask import Flask, Blueprint, render_template, request, redirect, url_for |
|
|
|
|
|
|
|
|
from datetime import date, timedelta |
|
|
from datetime import date, timedelta |
|
|
|
|
|
|
|
|
from padel.basededatos import get_db |
|
|
from padel.basededatos import get_db |
|
|
from flask_login import login_required, current_user |
|
|
from flask_login import login_required, current_user |
|
|
|
|
|
from flask_mail import Mail, Message |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bp = Blueprint("reservas", __name__) |
|
|
bp = Blueprint("reservas", __name__) |
|
|
|
|
|
|
|
|
|
|
|
# Parámetros para el envío de correos |
|
|
|
|
|
|
|
|
|
|
|
app = Flask(__name__) |
|
|
|
|
|
app.config['MAIL_SERVER']= 'smtp.mail.yahoo.com' |
|
|
|
|
|
app.config['MAIL_PORT'] = 465 |
|
|
|
|
|
app.config['MAIL_USERNAME'] = 'celestino_rey@ymail.com' |
|
|
|
|
|
app.config['MAIL_PASSWORD'] = 'kbryvwxkockqckss' |
|
|
|
|
|
app.config['MAIL_USE_TLS'] = False |
|
|
|
|
|
app.config['MAIL_USE_SSL'] = True |
|
|
|
|
|
mail = Mail(app) |
|
|
|
|
|
|
|
|
|
|
|
# Ruta para mostrar las reservas del usuario. |
|
|
|
|
|
|
|
|
@bp.route("/misreservas") |
|
|
@bp.route("/misreservas") |
|
|
@login_required |
|
|
@login_required |
|
|
def misreservas(): |
|
|
def misreservas(): |
|
|
db = get_db() |
|
|
db = get_db() |
|
|
|
|
|
|
|
|
hoy = date.today() |
|
|
|
|
|
manana = hoy + timedelta(days=1) |
|
|
|
|
|
pasado = hoy + timedelta(days=2) |
|
|
|
|
|
|
|
|
|
|
|
reservas = db.execute( |
|
|
reservas = db.execute( |
|
|
# "SELECT id, nombre, fecha, hora FROM reservas WHERE fecha>=? AND fecha<=? ORDER BY fecha DESC", (hoy,pasado) |
|
|
|
|
|
"SELECT id, nombre, fecha, hora FROM reservas WHERE nombre=? ORDER BY fecha DESC", (current_user.name,) |
|
|
"SELECT id, nombre, fecha, hora FROM reservas WHERE nombre=? ORDER BY fecha DESC", (current_user.name,) |
|
|
).fetchall() |
|
|
).fetchall() |
|
|
|
|
|
|
|
|
return render_template("reservas/misreservas.html", reservas=reservas, name=current_user.name) |
|
|
return render_template("reservas/misreservas.html", reservas=reservas, name=current_user.name) |
|
|
|
|
|
|
|
|
@bp.route("/inserta/<diaelegido>", methods=['GET', 'POST']) |
|
|
|
|
|
@login_required |
|
|
|
|
|
def inserta(diaelegido): |
|
|
|
|
|
if request.method == "POST": |
|
|
|
|
|
fecha = diaelegido |
|
|
|
|
|
hora = request.form["hora"] |
|
|
|
|
|
|
|
|
|
|
|
db = get_db() |
|
|
|
|
|
db.execute( |
|
|
|
|
|
"INSERT INTO reservas (nombre, fecha, hora) VALUES (?, ?, ?)", (current_user.name, fecha, hora), |
|
|
|
|
|
) |
|
|
|
|
|
db.commit() |
|
|
|
|
|
|
|
|
|
|
|
return redirect(url_for("reservas.misreservas")) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# ruta para mostrar la tabla del día en concreto con todas las horas |
|
|
|
|
|
# las horas no usadas aparecen con el botón "Reservar" y las horas reservadas por el usuario |
|
|
|
|
|
# aparecen con el botón "Eliminar" |
|
|
|
|
|
|
|
|
@bp.route("/reservar/<diaelegido>") |
|
|
@bp.route("/reservar/<diaelegido>") |
|
|
@login_required |
|
|
@login_required |
|
|
@ -46,20 +43,14 @@ def reservar(diaelegido): |
|
|
|
|
|
|
|
|
db = get_db() |
|
|
db = get_db() |
|
|
|
|
|
|
|
|
hoy = date.today() |
|
|
|
|
|
manana = hoy + timedelta(days=1) |
|
|
|
|
|
pasado = hoy + timedelta(days=2) |
|
|
|
|
|
|
|
|
|
|
|
reservas = db.execute( |
|
|
reservas = db.execute( |
|
|
"SELECT id, nombre, fecha, hora FROM reservas WHERE fecha=? ORDER BY fecha DESC", (diaelegido,) |
|
|
"SELECT id, nombre, fecha, hora FROM reservas WHERE fecha=? ORDER BY fecha DESC", (diaelegido,) |
|
|
).fetchall() |
|
|
).fetchall() |
|
|
|
|
|
|
|
|
for fila in reservas: |
|
|
|
|
|
print("Fecha ", fila["fecha"] , ". Hora: ", fila["hora"]) |
|
|
|
|
|
|
|
|
|
|
|
return render_template("reservas/reservar.html", diaelegido=diaelegido, name=current_user.name, reservas=reservas) |
|
|
return render_template("reservas/reservar.html", diaelegido=diaelegido, name=current_user.name, reservas=reservas) |
|
|
|
|
|
|
|
|
# Ruta para eliminar una reserva |
|
|
# Ruta para eliminar una reserva |
|
|
|
|
|
# |
|
|
@bp.route('/eliminar_reserva/<int:id>', methods=['POST']) |
|
|
@bp.route('/eliminar_reserva/<int:id>', methods=['POST']) |
|
|
@login_required |
|
|
@login_required |
|
|
def eliminar_reserva(id): |
|
|
def eliminar_reserva(id): |
|
|
@ -72,6 +63,8 @@ def eliminar_reserva(id): |
|
|
|
|
|
|
|
|
return redirect(url_for('reservas.misreservas')) |
|
|
return redirect(url_for('reservas.misreservas')) |
|
|
|
|
|
|
|
|
|
|
|
# ruta para actualizar la reserva. Actualiza porque en la bd están todas las horas de un día |
|
|
|
|
|
# y lo que se hace es simplemente colocar el nombre del usuario en la hora elegida |
|
|
|
|
|
|
|
|
@bp.route('/actualizar_reserva/<int:id>', methods=['POST']) |
|
|
@bp.route('/actualizar_reserva/<int:id>', methods=['POST']) |
|
|
@login_required |
|
|
@login_required |
|
|
@ -82,9 +75,26 @@ def actualizar_reserva(id): |
|
|
"UPDATE reservas SET nombre=? WHERE id=?", (current_user.name, id,) |
|
|
"UPDATE reservas SET nombre=? WHERE id=?", (current_user.name, id,) |
|
|
) |
|
|
) |
|
|
db.commit() |
|
|
db.commit() |
|
|
|
|
|
|
|
|
|
|
|
print("Buscando correo del usuario '",current_user.name.strip() |
|
|
|
|
|
,"'") |
|
|
|
|
|
usuario = db.execute( |
|
|
|
|
|
"SELECT email FROM usuarios WHERE nombre=?", (current_user.name,) |
|
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
for fila in usuario: |
|
|
|
|
|
print("Correo del usuario: ",fila["email"]) |
|
|
|
|
|
|
|
|
|
|
|
msg = Message('Reserva de pista de padel confirmada', sender='celestino_rey@ymail.com', recipients=['king.bernard.b@gmail.com']) |
|
|
|
|
|
msg.body = "Hola, te confirmo que has reservado la pista de Devesa Park" |
|
|
|
|
|
mail.send(msg) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return redirect(url_for('reservas.misreservas')) |
|
|
return redirect(url_for('reservas.misreservas')) |
|
|
|
|
|
|
|
|
|
|
|
# Ruta para elegir el día en el que se va a efectuar la reserva |
|
|
|
|
|
# Se ofrece el día actual y los dos siguientes. |
|
|
|
|
|
# si el día que se elige no está en la base de datos, se crean los registros de todas las horas para ese día. |
|
|
|
|
|
|
|
|
@bp.route("/eligedia", methods=['GET', 'POST']) |
|
|
@bp.route("/eligedia", methods=['GET', 'POST']) |
|
|
@login_required |
|
|
@login_required |
|
|
@ -92,11 +102,21 @@ def eligedia(): |
|
|
hoy = date.today() |
|
|
hoy = date.today() |
|
|
manana = hoy + timedelta(days=1) |
|
|
manana = hoy + timedelta(days=1) |
|
|
pasado = hoy + timedelta(days=2) |
|
|
pasado = hoy + timedelta(days=2) |
|
|
|
|
|
ayer = hoy - timedelta(days=1) |
|
|
|
|
|
|
|
|
|
|
|
print("Ayer fue: ", ayer) |
|
|
print("Hoy es: ", hoy) |
|
|
print("Hoy es: ", hoy) |
|
|
print("Mañana será: ", manana) |
|
|
print("Mañana será: ", manana) |
|
|
print("Pasado será: ", pasado) |
|
|
print("Pasado será: ", pasado) |
|
|
|
|
|
|
|
|
|
|
|
# borra los registros del día anterior al de hoy |
|
|
|
|
|
|
|
|
|
|
|
db = get_db() |
|
|
|
|
|
db.execute( |
|
|
|
|
|
"DELETE FROM reservas WHERE fecha=?", (ayer,) |
|
|
|
|
|
) |
|
|
|
|
|
db.commit() |
|
|
|
|
|
|
|
|
if request.method == "POST": |
|
|
if request.method == "POST": |
|
|
diaelegido = request.form['dias'] |
|
|
diaelegido = request.form['dias'] |
|
|
|
|
|
|
|
|
@ -128,7 +148,6 @@ def eligedia(): |
|
|
|
|
|
|
|
|
db.commit() |
|
|
db.commit() |
|
|
|
|
|
|
|
|
print("eligedia: horashoy: ", horashoy) |
|
|
|
|
|
return redirect(url_for("reservas.reservar",diaelegido=diaelegido)) |
|
|
return redirect(url_for("reservas.reservar",diaelegido=diaelegido)) |
|
|
|
|
|
|
|
|
return render_template("reservas/eligedia.html",hoy=hoy,manana=manana,pasado=pasado) |
|
|
return render_template("reservas/eligedia.html",hoy=hoy,manana=manana,pasado=pasado) |