Browse Source

Crea reservas y las borra

politica
Celestino Rey 1 year ago
parent
commit
7056cd58c2
7 changed files with 92 additions and 11 deletions
  1. +1
    -0
      Padel/initdb.sh
  2. +11
    -1
      Padel/padel/__init__.py
  3. +32
    -0
      Padel/padel/basededatos.py
  4. +6
    -2
      Padel/padel/paginas.py
  5. +32
    -6
      Padel/padel/reservas.py
  6. +8
    -0
      Padel/padel/schema.sql
  7. +2
    -2
      Padel/padel/templates/reservas/misreservas.html

+ 1
- 0
Padel/initdb.sh View File

@ -0,0 +1 @@
python -m flask --app padel init-db

+ 11
- 1
Padel/padel/__init__.py View File

@ -1,12 +1,22 @@
import os
from dotenv import load_dotenv
from flask import Flask
from padel import paginas, reservas
from padel import paginas, reservas, basededatos
load_dotenv()
def create_app():
app = Flask(__name__)
app.config.from_prefixed_env()
basededatos.init_app(app)
app.register_blueprint(paginas.bp)
app.register_blueprint(reservas.bp)
print(f"Current Environment: {os.getenv('ENVIRONMENT')}")
print(f"Using Database: {app.config.get('DATABASE')}")
return app

+ 32
- 0
Padel/padel/basededatos.py View File

@ -0,0 +1,32 @@
import sqlite3
import click
from flask import current_app, g
def init_app(app):
app.teardown_appcontext(close_db)
app.cli.add_command(init_db_command)
@click.command("init-db")
def init_db_command():
db = get_db()
with current_app.open_resource("schema.sql") as f:
db.executescript(f.read().decode("utf-8"))
click.echo("¡La base de datos fue inicializada con éxito!")
def get_db():
if "db" not in g:
g.db = sqlite3.connect(
current_app.config["DATABASE"],
detect_types=sqlite3.PARSE_DECLTYPES,
)
g.db.row_factory = sqlite3.Row
return g.db
def close_db(e=None):
db = g.pop("db", None)
if db is not None:
db.close()

+ 6
- 2
Padel/padel/paginas.py View File

@ -1,5 +1,9 @@
from flask import Blueprint, render_template, request, redirect, url_for
from datetime import datetime
from flask import (
Blueprint,
render_template,
request, redirect,
url_for,
)
bp = Blueprint("paginas", __name__)


+ 32
- 6
Padel/padel/reservas.py View File

@ -1,18 +1,44 @@
from flask import Blueprint, render_template
from flask import Blueprint, render_template, request, redirect, url_for
from padel.basededatos import get_db
bp = Blueprint("reservas", __name__)
@bp.route("/misreservas")
def misreservas():
reservas = []
db = get_db()
reservas = db.execute(
"SELECT id, nombre, fecha, hora FROM reservas ORDER BY fecha DESC"
).fetchall()
return render_template("reservas/misreservas.html", reservas=reservas)
@bp.route("/reservar", methods=['GET', 'POST'])
def reservar():
if request.method == "POST":
nombre = request.form["nombre"] or "Anónimo"
fecha = request.form["fecha"]
hora = request.form["hora"]
db = get_db()
db.execute(
"INSERT INTO reservas (nombre, fecha, hora) VALUES (?, ?, ?)", (nombre, fecha, hora),
)
db.commit()
return redirect(url_for("reservas.misreservas"))
return render_template("reservas/reservar.html")
# Ruta para eliminar una reserva
#@bp.route('/eliminar_reserva/<int:index>', methods=['POST'])
#def eliminar_reserva(index):
# del reservas[index]
# return redirect(url_for('index'))
@bp.route('/eliminar_reserva/<int:id>', methods=['POST'])
def eliminar_reserva(id):
db = get_db()
db.execute(
"DELETE FROM reservas WHERE id=?", (id,)
)
db.commit()
return redirect(url_for('reservas.misreservas'))

+ 8
- 0
Padel/padel/schema.sql View File

@ -0,0 +1,8 @@
DROP TABLE IF EXISTS reservas;
CREATE TABLE reservas (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nombre TEXT NOT NULL,
fecha DATE NOT NULL,
hora TIME NOT NULL
);

+ 2
- 2
Padel/padel/templates/reservas/misreservas.html View File

@ -7,8 +7,8 @@
{% block content %}
<ul>
{% for reserva in reservas %}
<li>{{ reserva.nombre }} - {{ reserva.fecha }} - {{ reserva.hora }}
<form action="{{ url_for('paginas.eliminar_reserva', index=loop.index0) }}" method="post" style="display: inline;">
<li>{{reserva.id}} - {{ reserva.nombre }} - {{ reserva.fecha }} - {{ reserva.hora }}
<form action="{{ url_for('reservas.eliminar_reserva', id=reserva.id) }}" method="post" style="display: inline;">
<button type="submit">Eliminar</button>
</form>
</li>


Loading…
Cancel
Save