99 lines
5.9 KiB
Python
99 lines
5.9 KiB
Python
from database_operations import query_all, query_single, execute_query
|
|
|
|
def actualizar_servicio(clave, Alumno_serviciosocial):
|
|
# Actualizar servicio social
|
|
execute_query(f'''
|
|
UPDATE "Alumno" SET "Alumno_serviciosocial" = {Alumno_serviciosocial} WHERE "Usuario_claveULSA" = {int(clave[2:])}
|
|
''')
|
|
|
|
def get_periodos(materias_sgu):
|
|
return query_all(f'''SELECT * FROM "Periodo" WHERE "Periodo_shortname" IN ({",".join(f"'{materia['PERIODO']}'" for materia in materias_sgu)})''')
|
|
|
|
def get_materias(materias_sgu):
|
|
return query_all('SELECT * FROM "Materia"')
|
|
def get_tipo_calificaciones(materias_sgu):
|
|
return query_all(f'''SELECT * FROM "TipoCalificacion"''')
|
|
def get_alumno(clave):
|
|
return query_single(f'SELECT "Carrera_id", "PlanEstudio_id" FROM "Alumno_view" WHERE "Usuario_claveULSA" = {clave[2:]}')
|
|
def get_grupo(grupo, carrera_id):
|
|
return query_single(f'''SELECT "Grupo_id" FROM "Grupo_view"
|
|
WHERE REGEXP_REPLACE("Grupo_desc", '[^\d]', '', 'g') = '{grupo}' AND (("Carrera_id" = {carrera_id}) OR "Carrera_esComun")
|
|
''')
|
|
def insert_materia(clave, materia_id, periodo_id, grupo_id):
|
|
execute_query(f'''INSERT INTO public."Alumno_Materia"("Usuario_claveULSA", "Materia_id", "Periodo_id", "Grupo_id")
|
|
VALUES ({int(clave[2:])}, {materia_id}, {periodo_id}, {grupo_id})
|
|
ON CONFLICT ("Usuario_claveULSA", "Materia_id", "Periodo_id") DO NOTHING;
|
|
''')
|
|
def insert_calificaciones(calificaciones):
|
|
execute_query(f'''
|
|
insert into "Alumno_Materia_Calificacion"
|
|
("Usuario_claveULSA", "Materia_id", "Periodo_id", "TipoCalificacion_id", "Calificacion_calif", "Calificacion_fecha", "Calificacion_comentario")
|
|
values {','.join(calificaciones)}
|
|
on conflict ("Usuario_claveULSA", "Materia_id", "Periodo_id", "TipoCalificacion_id")
|
|
DO UPDATE SET "Calificacion_calif" = EXCLUDED."Calificacion_calif", "Calificacion_comentario" = EXCLUDED."Calificacion_comentario";
|
|
''')
|
|
|
|
|
|
#alumno structure {apellido_paterno: str, apellido_materno: str, curp: str, clave_carrera: int, plan: int, clave: int, servicio_social: bool, nombre: str, correo: str}
|
|
def insert_alumno(alumno):
|
|
alumno_base = query_single(f'SELECT "Carrera_id", "PlanEstudio_id" FROM "Alumno_view" WHERE "Usuario_claveULSA" = {alumno["clave"]}')
|
|
if alumno_base:
|
|
return alumno_base
|
|
|
|
usuario_base = query_single(f"""SELECT * FROM "Usuario" WHERE "Usuario_curp" = '{alumno["curp"]}'""")
|
|
plan_estudio_base = query_single(f"""SELECT * FROM "PlanEstudio_view" WHERE "PlanEstudio_desc" LIKE '%{alumno["plan"]}' AND "Carrera_clave" = {alumno["clave_carrera"]}""")
|
|
|
|
if usuario_base:
|
|
execute_query(f'''
|
|
INSERT INTO public."Alumno"("Usuario_claveULSA", "Usuario_id", "PlanEstudio_id", "Alumno_fecha_ingreso", "Alumno_generacion", "Alumno_serviciosocial")
|
|
VALUES ({alumno["clave"]}, {usuario_base["Usuario_id"]}, {plan_estudio_base["PlanEstudio_id"]}, '{alumno['fecha_ingreso']}', '{alumno['fecha_ingreso']}', {alumno["servicio_social"]})
|
|
ON CONFLICT ("Usuario_claveULSA") DO NOTHING;
|
|
''')
|
|
execute_query(f'''
|
|
INSERT INTO "Alumno_SubEstadoAlumno" ("SubEstadoAlumno_id", "Usuario_claveULSA", "SEA_fecha", "SEA_actual")
|
|
VALUES (3, {alumno["clave"]},'{alumno['fecha_ingreso']}', true)
|
|
''')
|
|
|
|
alumno_base = query_single(f'SELECT "Carrera_id", "PlanEstudio_id" FROM "Alumno_view" WHERE "Usuario_claveULSA" = {alumno["clave"]}')
|
|
|
|
return alumno_base
|
|
|
|
usuario_base = query_single(f'''
|
|
INSERT INTO public."Usuario"("Usuario_nombre", "Usuario_apellidos", "Usuario_curp")
|
|
VALUES ('{alumno["nombre"]}', '{alumno["apellido_paterno"]} {alumno["apellido_materno"]}', '{alumno["curp"]}') RETURNING "Usuario_id"
|
|
''')
|
|
execute_query(f'''
|
|
INSERT INTO public."Alumno"("Usuario_claveULSA", "Usuario_id", "PlanEstudio_id", "Alumno_fecha_ingreso", "Alumno_generacion", "Alumno_serviciosocial")
|
|
VALUES ({alumno["clave"]}, {usuario_base["Usuario_id"]}, {plan_estudio_base["PlanEstudio_id"]}, '{alumno['fecha_ingreso']}', '{alumno['fecha_ingreso']}', {alumno["servicio_social"]})
|
|
ON CONFLICT ("Usuario_claveULSA") DO NOTHING;
|
|
''')
|
|
alumno_base = query_single(f'SELECT "Carrera_id", "PlanEstudio_id" FROM "Alumno_view" WHERE "Usuario_claveULSA" = {alumno["clave"]}')
|
|
|
|
return alumno_base
|
|
|
|
# insert actualmente_cursadas
|
|
def insert_actualmente_cursadas(clave, actualmente_cursadas, periodo_actual, grupo_actual):
|
|
grupo_base = query_single(f'SELECT "Grupo_id" FROM "Grupo" WHERE "Grupo_desc" = {grupo_actual}')
|
|
periodo_base = query_single(f'SELECT "Periodo_id" FROM "Periodo" WHERE "Periodo_shortname" = {periodo_actual}')
|
|
# only where materia["Clave"] is set
|
|
for materia in filter(lambda materia: "Clave" in materia, actualmente_cursadas):
|
|
# to varchar
|
|
materia_clave = f"'{materia['Clave']}'"
|
|
materia_base = query_single(f'SELECT "Materia_id" FROM "Materia" WHERE {materia_clave} = ANY("Materia_claves")')
|
|
if materia_base:
|
|
execute_query(f'''
|
|
INSERT INTO public."Alumno_Materia"("Usuario_claveULSA", "Materia_id", "Periodo_id", "Grupo_id")
|
|
VALUES ({clave[2:]}, {materia_base["Materia_id"]}, {periodo_base["Periodo_id"]}, {grupo_base["Grupo_id"]})
|
|
ON CONFLICT ("Usuario_claveULSA", "Materia_id", "Periodo_id") DO NOTHING;
|
|
''')
|
|
|
|
|
|
def insert_datos(alumno):
|
|
execute_query(f'''
|
|
INSERT INTO public."pos_ultima_extraccion"("Usuario_claveULSA", "telefono", "correo", "estatus", "promedio", "sexo", "semestre")
|
|
VALUES ({alumno["clave"]}, '{alumno["telefono"]}', '{alumno["correo"]}', '{alumno["estatus"]}', {alumno["promedio"]} , '{alumno["sexo"]}', {alumno["semestre"]})
|
|
ON CONFLICT ("Usuario_claveULSA") DO UPDATE SET "telefono" = EXCLUDED."telefono", "correo" = EXCLUDED."correo", "estatus" = EXCLUDED."estatus", "promedio" = EXCLUDED."promedio",
|
|
"actualizacion" = now();
|
|
''')
|
|
|
|
|