funciones.py 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. from database_operations import query_all, query_single, execute_query
  2. def actualizar_servicio(clave, Alumno_serviciosocial):
  3. # Actualizar servicio social
  4. execute_query(f'''
  5. UPDATE "Alumno" SET "Alumno_serviciosocial" = {Alumno_serviciosocial} WHERE "Usuario_claveULSA" = {int(clave[2:])}
  6. ''')
  7. def get_periodos(materias_sgu):
  8. return query_all(f'''SELECT * FROM "Periodo" WHERE "Periodo_shortname" IN ({",".join(f"'{materia['PERIODO']}'" for materia in materias_sgu)})''')
  9. def get_materias(materias_sgu):
  10. return query_all('SELECT * FROM "Materia"')
  11. def get_tipo_calificaciones(materias_sgu):
  12. return query_all(f'''SELECT * FROM "TipoCalificacion"''')
  13. def get_alumno(clave):
  14. return query_single(f'SELECT "Carrera_id", "PlanEstudio_id" FROM "Alumno_view" WHERE "Usuario_claveULSA" = {clave[2:]}')
  15. def get_grupo(grupo, carrera_id):
  16. return query_single(f'''SELECT "Grupo_id" FROM "Grupo_view"
  17. WHERE REGEXP_REPLACE("Grupo_desc", '[^\d]', '', 'g') = '{grupo}' AND (("Carrera_id" = {carrera_id}) OR "Carrera_esComun")
  18. ''')
  19. def insert_materia(clave, materia_id, periodo_id, grupo_id):
  20. execute_query(f'''INSERT INTO public."Alumno_Materia"("Usuario_claveULSA", "Materia_id", "Periodo_id", "Grupo_id")
  21. VALUES ({int(clave[2:])}, {materia_id}, {periodo_id}, {grupo_id})
  22. ON CONFLICT ("Usuario_claveULSA", "Materia_id", "Periodo_id") DO NOTHING;
  23. ''')
  24. def insert_calificaciones(calificaciones):
  25. execute_query(f'''
  26. insert into "Alumno_Materia_Calificacion"
  27. ("Usuario_claveULSA", "Materia_id", "Periodo_id", "TipoCalificacion_id", "Calificacion_calif", "Calificacion_fecha", "Calificacion_comentario")
  28. values {','.join(calificaciones)}
  29. on conflict ("Usuario_claveULSA", "Materia_id", "Periodo_id", "TipoCalificacion_id")
  30. DO UPDATE SET "Calificacion_calif" = EXCLUDED."Calificacion_calif", "Calificacion_comentario" = EXCLUDED."Calificacion_comentario";
  31. ''')
  32. #alumno structure {apellido_paterno: str, apellido_materno: str, curp: str, clave_carrera: int, plan: int, clave: int, servicio_social: bool, nombre: str, correo: str}
  33. def insert_alumno(alumno):
  34. alumno_base = query_single(f'SELECT "Carrera_id", "PlanEstudio_id" FROM "Alumno_view" WHERE "Usuario_claveULSA" = {alumno["clave"]}')
  35. if alumno_base:
  36. return alumno_base
  37. usuario_base = query_single(f"""SELECT * FROM "Usuario" WHERE "Usuario_curp" = '{alumno["curp"]}'""")
  38. plan_estudio_base = query_single(f"""SELECT * FROM "PlanEstudio_view" WHERE "PlanEstudio_desc" LIKE '%{alumno["plan"]}' AND "Carrera_clave" = {alumno["clave_carrera"]}""")
  39. if usuario_base:
  40. execute_query(f'''
  41. INSERT INTO public."Alumno"("Usuario_claveULSA", "Usuario_id", "PlanEstudio_id", "Alumno_fecha_ingreso", "Alumno_generacion", "Alumno_serviciosocial")
  42. VALUES ({alumno["clave"]}, {usuario_base["Usuario_id"]}, {plan_estudio_base["PlanEstudio_id"]}, '{alumno['fecha_ingreso']}', '{alumno['fecha_ingreso']}', {alumno["servicio_social"]})
  43. ON CONFLICT ("Usuario_claveULSA") DO NOTHING;
  44. ''')
  45. execute_query(f'''
  46. INSERT INTO "Alumno_SubEstadoAlumno" ("SubEstadoAlumno_id", "Usuario_claveULSA", "SEA_fecha", "SEA_actual")
  47. VALUES (3, {alumno["clave"]},'{alumno['fecha_ingreso']}', true)
  48. ''')
  49. alumno_base = query_single(f'SELECT "Carrera_id", "PlanEstudio_id" FROM "Alumno_view" WHERE "Usuario_claveULSA" = {alumno["clave"]}')
  50. return alumno_base
  51. usuario_base = query_single(f'''
  52. INSERT INTO public."Usuario"("Usuario_nombre", "Usuario_apellidos", "Usuario_curp")
  53. VALUES ('{alumno["nombre"]}', '{alumno["apellido_paterno"]} {alumno["apellido_materno"]}', '{alumno["curp"]}') RETURNING "Usuario_id"
  54. ''')
  55. execute_query(f'''
  56. INSERT INTO public."Alumno"("Usuario_claveULSA", "Usuario_id", "PlanEstudio_id", "Alumno_fecha_ingreso", "Alumno_generacion", "Alumno_serviciosocial")
  57. VALUES ({alumno["clave"]}, {usuario_base["Usuario_id"]}, {plan_estudio_base["PlanEstudio_id"]}, '{alumno['fecha_ingreso']}', '{alumno['fecha_ingreso']}', {alumno["servicio_social"]})
  58. ON CONFLICT ("Usuario_claveULSA") DO NOTHING;
  59. ''')
  60. alumno_base = query_single(f'SELECT "Carrera_id", "PlanEstudio_id" FROM "Alumno_view" WHERE "Usuario_claveULSA" = {alumno["clave"]}')
  61. return alumno_base
  62. # insert actualmente_cursadas
  63. def insert_actualmente_cursadas(clave, actualmente_cursadas, periodo_actual, grupo_actual):
  64. grupo_base = query_single(f'SELECT "Grupo_id" FROM "Grupo" WHERE "Grupo_desc" = {grupo_actual}')
  65. periodo_base = query_single(f'SELECT "Periodo_id" FROM "Periodo" WHERE "Periodo_shortname" = {periodo_actual}')
  66. # only where materia["Clave"] is set
  67. for materia in filter(lambda materia: "Clave" in materia, actualmente_cursadas):
  68. # to varchar
  69. materia_clave = f"'{materia['Clave']}'"
  70. materia_base = query_single(f'SELECT "Materia_id" FROM "Materia" WHERE {materia_clave} = ANY("Materia_claves")')
  71. if materia_base:
  72. execute_query(f'''
  73. INSERT INTO public."Alumno_Materia"("Usuario_claveULSA", "Materia_id", "Periodo_id", "Grupo_id")
  74. VALUES ({clave[2:]}, {materia_base["Materia_id"]}, {periodo_base["Periodo_id"]}, {grupo_base["Grupo_id"]})
  75. ON CONFLICT ("Usuario_claveULSA", "Materia_id", "Periodo_id") DO NOTHING;
  76. ''')
  77. def insert_datos(alumno):
  78. execute_query(f'''
  79. INSERT INTO public."pos_ultima_extraccion"("Usuario_claveULSA", "telefono", "correo", "estatus", "promedio", "sexo", "semestre")
  80. VALUES ({alumno["clave"]}, '{alumno["telefono"]}', '{alumno["correo"]}', '{alumno["estatus"]}', {alumno["promedio"]} , '{alumno["sexo"]}', {alumno["semestre"]})
  81. ON CONFLICT ("Usuario_claveULSA") DO UPDATE SET "telefono" = EXCLUDED."telefono", "correo" = EXCLUDED."correo", "estatus" = EXCLUDED."estatus", "promedio" = EXCLUDED."promedio",
  82. "actualizacion" = now();
  83. ''')