Borrado de archivos extra
This commit is contained in:
105
main.py
105
main.py
@@ -1,105 +0,0 @@
|
||||
import sys
|
||||
from pathlib import Path
|
||||
from flask import Flask, request, jsonify
|
||||
from waitress import serve
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
# Agregar el directorio lib al path de Python
|
||||
lib_path = Path(__file__).parent / 'lib'
|
||||
sys.path.append(str(lib_path))
|
||||
|
||||
# Ahora puedes importar los módulos desde el directorio lib
|
||||
from selenium_setup import configure_selenium
|
||||
from argument_parser import parse_arguments
|
||||
from web_navigation import navigate_to_url, click_element
|
||||
from data_processing import process_html
|
||||
from database_operations import log
|
||||
from funciones import *
|
||||
|
||||
def main(clave, contraseña):
|
||||
# Configurar Selenium y navegar a la URL
|
||||
driver = configure_selenium()
|
||||
url = "sgu.ulsa.edu.mx/psulsa/alumnos/consultainformacionalumnos/consultainformacion.aspx"
|
||||
datos_alumno, historial_academico = navigate_to_url(driver, url, clave, contraseña)
|
||||
materias_sgu, actualmente_cursadas, periodo_actual, grupo_actual = process_html(historial_academico)
|
||||
insert_actualmente_cursadas(clave, actualmente_cursadas, periodo_actual, grupo_actual)
|
||||
|
||||
# Obtener datos de la base
|
||||
periodos_base = get_periodos(materias_sgu)
|
||||
|
||||
# obtener la fecha mínima del arreglo de diccionarios de periodos en su campo "Periodo_fecha_inicio"
|
||||
fecha_mínima = min(periodos_base, key=lambda x: x['Periodo_fecha_inicial'])['Periodo_fecha_inicial']
|
||||
# déjalo en el primer día del mes
|
||||
datos_alumno['fecha_ingreso'] = fecha_mínima.replace(day=1)
|
||||
|
||||
materias_base = get_materias(materias_sgu)
|
||||
tipo_calificaciones_base = get_tipo_calificaciones(materias_sgu)
|
||||
alumno_base = insert_alumno(datos_alumno)
|
||||
|
||||
# Actualizar servicio social
|
||||
actualizar_servicio(clave, datos_alumno['servicio_social'])
|
||||
|
||||
#insert datos
|
||||
insert_datos(datos_alumno)
|
||||
|
||||
calificaciones = []
|
||||
no_insertadas = []
|
||||
|
||||
for materia_sgu in materias_sgu:
|
||||
materia_base = next((materia_base for materia_base in materias_base if materia_sgu['Cve ULSA'] in materia_base['Materia_claves'] or (materia_sgu['Cve SEP'] in materia_base["Materia_claves"] and alumno_base['PlanEstudio_id'] == materia_base['PlanEstudio_id'])), None)
|
||||
periodo_base = next((periodo_base for periodo_base in periodos_base if periodo_base['Periodo_shortname'] == materia_sgu['PERIODO']), None)
|
||||
tipo_calificacion_base = next((calificacion_base for calificacion_base in tipo_calificaciones_base if calificacion_base['TipoCalificacion_desc_corta'] == materia_sgu['EXAMEN']), None)
|
||||
if 'GRUPO' in materia_sgu.keys():
|
||||
grupo = get_grupo(materia_sgu['GRUPO'], alumno_base['Carrera_id'])
|
||||
else:
|
||||
grupo = None
|
||||
|
||||
if materia_base and periodo_base and tipo_calificacion_base:
|
||||
calificaciones.append(f"({clave[2:]}, {materia_base['Materia_id']}, {periodo_base['Periodo_id']}, {tipo_calificacion_base['TipoCalificacion_id']}, {materia_sgu['CALIF']}, CURRENT_DATE, 'SGU')")
|
||||
|
||||
if not materia_base or not periodo_base or not tipo_calificacion_base or not grupo:
|
||||
no_insertadas.append(f'''Materia: {materia_base['Materia_id'] if materia_base else materia_sgu['Cve ULSA']} - Periodo_base: {periodo_base['Periodo_id'] if periodo_base else materia_sgu['PERIODO']} Tipo_calificacion_base: {tipo_calificacion_base['TipoCalificacion_id'] if tipo_calificacion_base else materia_sgu['EXAMEN']} Grupo: {grupo['Grupo_id'] if grupo else materia_sgu['GRUPO'] if 'GRUPO' in materia_sgu.keys() else 'None' } ''')
|
||||
continue
|
||||
|
||||
insert_materia(clave, materia_base['Materia_id'], periodo_base['Periodo_id'], grupo['Grupo_id'])
|
||||
|
||||
|
||||
if not calificaciones or len(calificaciones) == 0:
|
||||
raise Exception("No hay calificaciones para insertar o actualizar.")
|
||||
|
||||
# Insertar calificaciones
|
||||
insert_calificaciones(calificaciones)
|
||||
return clave, no_insertadas
|
||||
|
||||
@app.route('/calificaciones', methods=['POST'])
|
||||
def calificaciones():
|
||||
try:
|
||||
# Obtener la clave y la contraseña de la solicitud POST
|
||||
clave = request.form.get('clave')
|
||||
contraseña = request.form.get('contraseña')
|
||||
|
||||
# Verificar si la clave y la contraseña existen
|
||||
if clave is None or contraseña is None:
|
||||
return "Error: La clave y/o contraseña no fueron proporcionadas en la solicitud."
|
||||
|
||||
# Procesar los datos (aquí llamamos a la función main)
|
||||
clave, no_insertadas = main(clave, contraseña)
|
||||
|
||||
# Registro de éxito
|
||||
log("Proceso terminado con éxito.", 200, None, clave, no_insertadas)
|
||||
|
||||
# Retornar respuesta exitosa como JSON
|
||||
return jsonify({"mensaje": "Proceso terminado con éxito.", "clave": clave, "no_insertadas": no_insertadas, "success": True})
|
||||
|
||||
except Exception as e:
|
||||
# remove all ' from the error message
|
||||
e = e.replace("'", "")
|
||||
log(str(e), 500, e, None)
|
||||
|
||||
# Retornar mensaje de error como JSON
|
||||
return jsonify({"mensaje": str(e), "success": False})
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
serve(app, host='0.0.0.0', port=5000)
|
||||
Reference in New Issue
Block a user