fix: normalizar sync de google sheets para todos los dias, reparar 500 en ciclos lectivos, selector de ciclo lectivo en comisiones y opciones --keep-db --keep-users en install.sh

This commit is contained in:
2026-09-23 19:36:54 -03:00
parent 5771476ee9
commit 195bfd915e
10 changed files with 270 additions and 85 deletions
+4
View File
@@ -1223,6 +1223,9 @@ def commissions_list():
or_(User.role.ilike('%DOCENTE%'), User.role.ilike('%docent%'), User.role.ilike('%ADMIN%'))
).filter_by(is_active=True).order_by(User.name.asc()).all()
from app.models.academic_term import AcademicTerm
academic_terms = AcademicTerm.query.filter_by(is_active=True).order_by(AcademicTerm.year.desc(), AcademicTerm.start_date.desc()).all()
can_edit = (
current_user.has_permission('academic', 'read_write') or
current_user.is_admin() or
@@ -1235,6 +1238,7 @@ def commissions_list():
pagination=pagination,
subjects=subjects,
teachers=teachers,
academic_terms=academic_terms,
search=search,
subject_filter=subject_filter,
teacher_filter=teacher_filter,
+28 -1
View File
@@ -240,11 +240,16 @@ def get_commissions():
'career_name': c_name
})
from app.models.academic_term import AcademicTerm
terms = AcademicTerm.query.filter_by(is_active=True).order_by(AcademicTerm.year.desc(), AcademicTerm.start_date.desc()).all()
terms_data = [t.to_dict() for t in terms]
return jsonify({
'status': 'success',
'total': len(commissions_data),
'commissions': commissions_data,
'subjects': subjects_data
'subjects': subjects_data,
'academic_terms': terms_data
}), 200
# ---------------------------------------------------------
@@ -799,6 +804,25 @@ def create_commission():
code = data.get('code', '').strip()
semester = (data.get('semester') or '1C').strip()
year = int(data.get('year', datetime.now().year) or datetime.now().year)
academic_term_id = data.get('academic_term_id')
academic_term_id = int(academic_term_id) if (academic_term_id and str(academic_term_id).strip()) else None
# Si se seleccionó Ciclo Lectivo, sincronizar año y cuatrimestre inteligentemente
if academic_term_id:
from app.models.academic_term import AcademicTerm
term_obj = AcademicTerm.query.get(academic_term_id)
if term_obj:
if not data.get('year') or int(data.get('year')) == datetime.now().year:
year = term_obj.year
if not data.get('semester') or data.get('semester') == '1C':
p_text = f"{term_obj.name} {term_obj.period_type or ''} {term_obj.code}".lower()
if '2c' in p_text or 'segundo' in p_text or '2º' in p_text or '2do' in p_text:
semester = '2C'
elif 'anual' in p_text:
semester = 'Anual'
else:
semester = '1C'
teacher_id = data.get('teacher_id')
teacher_id = int(teacher_id) if (teacher_id and str(teacher_id).strip()) else None
max_students = int(data.get('max_students', 35) or 35)
@@ -834,6 +858,8 @@ def create_commission():
existing.max_students = max_students
existing.schedule = schedule
existing.shift = shift
if academic_term_id:
existing.academic_term_id = academic_term_id
if virtual_link:
existing.virtual_link = virtual_link
existing.active = bool(active)
@@ -858,6 +884,7 @@ def create_commission():
schedule=schedule,
shift=shift,
virtual_link=virtual_link,
academic_term_id=academic_term_id,
active=bool(active)
)
db.session.add(commission)