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'))