fix(bedelia): corregir purga academica con integridad referencial, circuito agil de asignacion de aulas y documentacion v3.1.0

This commit is contained in:
2026-09-23 20:11:29 -03:00
parent 165a0b65b8
commit 63511b9311
9 changed files with 338 additions and 59 deletions
+28 -11
View File
@@ -29,7 +29,8 @@ from app import create_app, db
from app.models.reservation import Reservation
from app.models.enrollment import StudentEnrollment
from app.models.milestone import AcademicMilestone
from app.models.subject import Commission, Subject
from app.models.grade import MilestoneGrade
from app.models.subject import Commission, Subject, CommissionTeacher
from app.models.career import Career
from app.models.classroom import Classroom, ClassroomResource
@@ -56,6 +57,8 @@ def execute_academic_reset(
'reservations': 0,
'enrollments': 0,
'commissions': 0,
'commission_teachers': 0,
'milestones': 0,
'subjects': 0,
'careers': 0,
'classrooms': 0,
@@ -66,32 +69,46 @@ def execute_academic_reset(
# 1. Eliminar Reservas (Asignaciones de aulas)
if reset_reservations:
deleted_counts['reservations'] = Reservation.query.delete()
# 2. Desvincular hitos de materias o comisiones si se van a eliminar
if reset_subjects or reset_commissions:
AcademicMilestone.query.update({
AcademicMilestone.subject_id: None,
AcademicMilestone.commission_id: None
})
db.session.flush()
# 3. Eliminar Inscripciones y Comisiones
if reset_commissions:
# 2. Eliminar calificaciones e hitos evaluativos vinculados a comisiones o materias
if reset_subjects or reset_commissions or reset_careers:
try:
MilestoneGrade.query.delete()
deleted_counts['milestones'] = AcademicMilestone.query.delete()
except Exception as me:
print("Notice during milestones cleanup:", me)
db.session.flush()
# 3. Eliminar Docentes de comisión, Inscripciones de alumnos y Comisiones
if reset_commissions or reset_subjects or reset_careers:
try:
deleted_counts['commission_teachers'] = CommissionTeacher.query.delete()
except Exception as cte:
print("Notice during commission teachers cleanup:", cte)
db.session.flush()
deleted_counts['enrollments'] = StudentEnrollment.query.delete()
db.session.flush()
deleted_counts['commissions'] = Commission.query.delete()
db.session.flush()
# 4. Eliminar Materias / Asignaturas
if reset_subjects:
if reset_subjects or reset_careers:
deleted_counts['subjects'] = Subject.query.delete()
db.session.flush()
# 5. Eliminar Carreras
if reset_careers:
deleted_counts['careers'] = Career.query.delete()
db.session.flush()
# 6. Eliminar Recursos y Aulas
if reset_classrooms:
deleted_counts['classroom_resources'] = ClassroomResource.query.delete()
deleted_counts['classrooms'] = Classroom.query.delete()
db.session.flush()
db.session.commit()
return {