forked from val-lop20/Pagina-de-Asistencia-MAC
103 lines
3.8 KiB
Python
103 lines
3.8 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
Script para mostrar resumen de la corrección del login.
|
|
"""
|
|
import os
|
|
import sys
|
|
import django
|
|
|
|
# Configurar Django
|
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mac_attendance.settings')
|
|
django.setup()
|
|
|
|
from django.contrib.auth.models import User
|
|
from authentication.models import UserProfile
|
|
|
|
def login_fix_summary():
|
|
"""Mostrar resumen de la corrección del login"""
|
|
print("=" * 80)
|
|
print("RESUMEN - CORRECCIÓN DEL SISTEMA DE LOGIN")
|
|
print("=" * 80)
|
|
print()
|
|
|
|
print("[PROBLEMA IDENTIFICADO]")
|
|
print(" ✗ Error en authentication/serializers.py línea 38")
|
|
print(" ✗ AttributeError: 'NoneType' object has no attribute 'is_active'")
|
|
print(" ✗ El código asumía que todos los UserProfile tienen un User asociado")
|
|
print(" ✗ Los estudiantes importados solo tienen UserProfile sin User")
|
|
print()
|
|
|
|
print("[SOLUCIÓN IMPLEMENTADA]")
|
|
print(" ✓ Modificado authentication/serializers.py")
|
|
print(" ✓ Verificación de user == None antes de acceder a is_active")
|
|
print(" ✓ Creación automática de User para estudiantes al hacer login")
|
|
print(" ✓ Los estudiantes ahora obtienen un User de Django automáticamente")
|
|
print()
|
|
|
|
print("[CÓDIGO AGREGADO]")
|
|
print(" Líneas 40-53 en serializers.py:")
|
|
print(" - if user is None:")
|
|
print(" - Si es estudiante: crear User automáticamente")
|
|
print(" - Si es asistente sin User: rechazar login")
|
|
print(" - Asociar User con UserProfile")
|
|
print()
|
|
|
|
print("[ESTADO ACTUAL]")
|
|
print()
|
|
|
|
# Contar estudiantes
|
|
total_students = UserProfile.objects.filter(user_type='student').count()
|
|
students_with_user = UserProfile.objects.filter(user_type='student', user__isnull=False).count()
|
|
students_without_user = total_students - students_with_user
|
|
|
|
print(f" Total de estudiantes en BD: {total_students}")
|
|
print(f" Estudiantes con User asociado: {students_with_user}")
|
|
print(f" Estudiantes sin User (se creará al login): {students_without_user}")
|
|
print()
|
|
|
|
# Mostrar algunos estudiantes de ejemplo
|
|
print("[ESTUDIANTES DE PRUEBA]")
|
|
test_students = UserProfile.objects.filter(
|
|
user_type='student',
|
|
account_number__in=['32114471', '32116578', '31732062', '32119639']
|
|
)
|
|
|
|
for student in test_students:
|
|
has_user = "✓" if student.user else "✗"
|
|
print(f" {has_user} {student.account_number} - {student.full_name}")
|
|
if student.user:
|
|
print(f" User Django: {student.user.username}")
|
|
print()
|
|
|
|
print("[PRUEBAS REALIZADAS]")
|
|
print(" ✓ Login exitoso con cuenta 32114471 (Lopez Martinez Valeria)")
|
|
print(" ✓ Login exitoso con cuenta 32116578 (Barrera Sanchez Alem Isaias)")
|
|
print(" ✓ Error apropiado con cuenta inexistente (99999999)")
|
|
print(" ✓ Tokens JWT generados correctamente")
|
|
print()
|
|
|
|
print("[RESULTADO]")
|
|
print(" ✅ El sistema de login funciona correctamente")
|
|
print(" ✅ Los estudiantes pueden iniciar sesión con su número de cuenta")
|
|
print(" ✅ Se crea automáticamente un User de Django al primer login")
|
|
print(" ✅ La conexión frontend-backend está funcionando")
|
|
print()
|
|
|
|
print("=" * 80)
|
|
print("✓ SISTEMA DE LOGIN CORREGIDO Y FUNCIONANDO")
|
|
print("=" * 80)
|
|
print()
|
|
print("INSTRUCCIONES PARA EL USUARIO:")
|
|
print(" 1. Accede al frontend en http://localhost")
|
|
print(" 2. Ingresa cualquier número de cuenta de 8 dígitos existente")
|
|
print(" 3. El sistema creará automáticamente tu sesión")
|
|
print(" 4. Ejemplos de cuentas que puedes usar:")
|
|
print(" - 32114471 (Lopez Martinez Valeria)")
|
|
print(" - 32116578 (Barrera Sanchez Alem Isaias)")
|
|
print(" - 31732062 (Villanueva Rubio Brandon Luis)")
|
|
print()
|
|
|
|
if __name__ == "__main__":
|
|
login_fix_summary()
|