Spaces:
Sleeping
Sleeping
File size: 2,468 Bytes
e09caf0 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | from flask import Blueprint, render_template, request, redirect, url_for, session, g
# Para proteger la ruta, necesitamos verificar si el usuario est谩 en la sesi贸n
# Este es un DECORADOR, algo que envuelve una funci贸n para modificar su comportamiento sin cambiar su c贸digo.
# Es equivalente a poner un 'if(!isset($_SESSION))' al principio de cada m茅todo en PHP.
def login_required(f):
from functools import wraps
@wraps(f)
def decorated_function(*args, **kwargs):
# Si 'user_id' no existe en la sesi贸n, REDIRIGIMOS al login.
if 'user_id' not in session:
return redirect(url_for('auth.login'))
# Si existe, permitimos ejecutar la funci贸n original (f).
return f(*args, **kwargs)
return decorated_function
# Importamos las dependencias
from models.persona import PersonaModel
persona_bp = Blueprint('persona', __name__)
model = PersonaModel()
# Ahora usamos @login_required para proteger las rutas
# Esta ruta SOLO funcionar谩 si hay una sesi贸n activa.
@persona_bp.route('/')
@login_required
def index():
personas = model.listar()
# Enviamos 'user' a la plantilla para saludar "Hola, Admin"
return render_template('index.html', personas=personas, user=session['username'])
# Muestra el formulario de crear/editar
@persona_bp.route('/crud')
@login_required # Protegido
def crud():
idpersona = request.args.get('idpersona')
alm = None
if idpersona:
alm = model.obtener(idpersona) # Para editar
return render_template('form.html', alm=alm, user=session['username'])
# Procesa el formulario (Guardar)
@persona_bp.route('/guardar', methods=['POST'])
@login_required
def guardar():
# Obtenemos datos del formulario
idpersona = request.form.get('idpersona')
nombres = request.form.get('Nombres')
cedula = request.form.get('Cedula')
fecha_nmto = request.form.get('FechaNacimiento')
direccion = request.form.get('direccion')
email = request.form.get('correo')
# Llamamos al modelo para guardar en DB
model.guardar(idpersona, nombres, cedula, fecha_nmto, direccion, email)
# Redirigimos al 铆ndice
return redirect(url_for('persona.index'))
# Elimina un registro
@persona_bp.route('/eliminar')
@login_required
def eliminar():
idpersona = request.args.get('idpersona')
model.eliminar(idpersona)
return redirect(url_for('persona.index'))
|