diff --git a/.env.templates b/.env.templates new file mode 100644 index 000000000..e76fd68cd --- /dev/null +++ b/.env.templates @@ -0,0 +1,3 @@ +FLASK_APP=application.py +FLASK_DEBUG=1 +DATABASE_URL= \ No newline at end of file diff --git a/app.py b/app.py deleted file mode 100644 index d82c51f0d..000000000 --- a/app.py +++ /dev/null @@ -1,6 +0,0 @@ -from flask import Flask -app = Flask(__name__) - -@app.route('/') -def hello_world(): - return 'Hello, World!' diff --git a/application.py b/application.py new file mode 100644 index 000000000..6aef17fbd --- /dev/null +++ b/application.py @@ -0,0 +1,36 @@ +import os +from flask import Flask, request, render_template, redirect, url_for +from dotenv import load_dotenv +from models import db, Estudiantes +load_dotenv() + +app = Flask(__name__) +app.config['SECRET_KEY'] = 'mysecretkey' + +if not os.getenv("DATABASE_URL"): + raise RuntimeError("DATABASE_URL is not set") +app.config['SQLALCHEMY_DATABASE_URI'] = os.getenv('DATABASE_URL') +db.init_app(app) + +@app.route('/') +def lista_estudiantes(): + estudiantes = Estudiantes.query.all() + return render_template('estudiantes.html', estudiantes=estudiantes) + + +@app.route('/Crear', methods=['GET', 'POST']) +def nuevo_estudiante(): + if request.method == 'POST': + nombre = request.form.get('Nombre') + apellido = request.form.get('Apellido') + ciclo = request.form.get('Ciclo') + programa = request.form.get('Programa') + + if nombre and apellido and ciclo and programa: + nuevo_estudiante = Estudiantes(nombre=nombre, apellido=apellido, ciclo=ciclo, programa=programa) + db.session.add(nuevo_estudiante) + db.session.commit() + + return redirect(url_for('lista_estudiantes')) + + return render_template('index.html') diff --git a/crear_tablas.py b/crear_tablas.py new file mode 100644 index 000000000..b8c978bc7 --- /dev/null +++ b/crear_tablas.py @@ -0,0 +1,18 @@ +import os +from flask import Flask +from flask_sqlalchemy import SQLAlchemy +from models import * +from dotenv import load_dotenv +load_dotenv() + +app = Flask(__name__) +app.config["SQLALCHEMY_DATABASE_URI"] = os.getenv("DATABASE_URL") +app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False +db.init_app(app) + +def main(): + db.create_all() + +if __name__ == "__main__": + with app.app_context(): + main() \ No newline at end of file diff --git a/models.py b/models.py new file mode 100644 index 000000000..ae2fddfe9 --- /dev/null +++ b/models.py @@ -0,0 +1,11 @@ +from flask_sqlalchemy import SQLAlchemy + +db = SQLAlchemy() + +class Estudiantes(db.Model): + __tablename__ = "Estudiantes" + id = db.Column(db.Integer, primary_key=True) + nombre = db.Column(db.String, nullable=False) + apellido = db.Column(db.String, nullable=False) + ciclo = db.Column(db.String, nullable=False) + programa = db.Column(db.String, nullable=False) \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 147ddd086..d0a5ad093 100644 Binary files a/requirements.txt and b/requirements.txt differ diff --git a/templates/estudiantes.html b/templates/estudiantes.html new file mode 100644 index 000000000..6c9e6b39a --- /dev/null +++ b/templates/estudiantes.html @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<html lang="en"> + +<head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@picocss/pico@1/css/pico.min.css"> + <title>Document</title> + <nav aria-label="breadcrumb"> + <ul> + <li><a href="">Home</a></li> + <li><a href="/Crear">Category</a></li> + </ul> + </nav> +</head> + +<body> + {% for estudiante in estudiantes %} + <article> + <li>Nombre: {{ estudiante.nombre }} {{ estudiante.apellido }} - Ciclo: {{ estudiante.ciclo }} - Programa: {{ + estudiante.programa }}</li> + </article> + {% endfor %} +</body> + +</html> \ No newline at end of file diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 000000000..9224b4a8c --- /dev/null +++ b/templates/index.html @@ -0,0 +1,37 @@ +<!DOCTYPE html> +<html lang="en"> + +<head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@picocss/pico@1/css/pico.min.css"> + <title>Document</title> + <nav aria-label="breadcrumb"> + <ul> + <li><a href="/">Home</a></li> + <li><a href="/Crear">Category</a></li> + </ul> + </nav> +</head> + +<body> + <article> + <form action="/Crear" method="post"> + <label for="Nombre">Nombre</label> + <input type="text" name="Nombre" placeholder="Ingrese el nombre del estudiante"> + + <label for="Apellido">Apellido</label> + <input type="text" name="Apellido" placeholder="Ingrese el apellido del estudiante"> + + <label for="Ciclo">Ciclo</label> + <input type="text" name="Ciclo" placeholder="Ingrese el ciclo del estudiante"> + + <label for="Programa">Programa</label> + <input type="text" name="Programa" placeholder="Ingrese el programa del estudiante"> + + <input type="submit" placeholder="Crear Estudiante"> + </form> + </article> +</body> + +</html> \ No newline at end of file