def recursantes_materia(cod_materia): token = get_token(request) cod_materia = cod_materia.zfill(5) carrera = request.args.get('carrera') fecha_fin = request.args.get('fecha') anio = fecha_fin.split('-')[0] if fecha_fin else None mes = fecha_fin.split('-')[1] if fecha_fin else None semestre = 1 if mes and int(mes) <= 6 else 2 dm = DataManipulator() # Filtro los inscriptos de la carrera y materia if carrera: inscriptos = DataProvider().get_inscriptos(token, carrera, anio, semestre) else: inscriptos = DataProvider().getEnrolled(token, cod_materia, anio, semestre) inscriptos_df = DataTransformer().transform_materiascursadas_to_dataframe( inscriptos) # Filtro las cursadas de la carrera y materia if carrera: cursadas = DataProvider().get_materiascursadas(token, carrera) else: cursadas = DataProvider().getTakenSubjects(token, cod_materia) cursadas_df = DataTransformer().transform_materiascursadas_to_dataframe( cursadas) recursantes = dm.get_recursantes(cursadas_df, inscriptos_df, cod_materia) return json.dumps([{ "Legajo": key, "Cantidad": value } for key, value in recursantes.items()])
def get_materiascursadas(request, cod_carrera=None, inicio=None, fin=None, subjectCode=None): provider = DataProvider() transformer = DataTransformer() manipulator = DataManipulator() # Saco el token del request token = get_token(request) # Formateo los args fecha_inicio = inicio or request.args.get('inicio') fecha_fin = fin or request.args.get('fin') # Tiene que ser una sola carrera y un solo plan para calcular creditos carrera = cod_carrera or request.args.get('carrera') plan = request.args.get('plan') # Traigo las cursadas if carrera: cursadas_json = provider.get_materiascursadas(token, carrera) else: cursadas_json = provider.getTakenSubjects(token, subjectCode) cursadas_data = transformer.transform_materiascursadas_to_dataframe( cursadas_json) # Filtro periodo df = manipulator.filtrar_periodo(cursadas_data, fecha_inicio, fecha_fin) return df
def dispersion_notas(cod_materia): transformer = DataTransformer() provider = DataProvider() token = get_token(request) # Saco el token del request df = get_alumnos_de_materia_periodo(request, cod_materia) carrera = request.args.get('carrera') if carrera: alumnos_carrera_json = provider.get_alumnos_de_carrera(token, carrera) else: alumnos_carrera_json = provider.getCareerStudents(token) alumnos_carrera_df = transformer.transform_to_dataframe( alumnos_carrera_json) data = transformer.merge_materias_con_promedio(df, alumnos_carrera_df) # Itero para generar el json final resultado = [] for row in data.itertuples(): nota = getattr(row, 'nota') if nota: resultado.append({ "Promedio": getattr(row, 'promedio'), "Alumno": getattr(row, 'alumno'), "Nota": nota }) return json.dumps(resultado)
def get_cantidad_materias_necesarias(request): provider = DataProvider() # Saco el token del request token = get_token(request) carrera = request.args.get('carrera') plan = request.args.get('plan') return provider.get_cantidad_materias_necesarias(token, carrera, plan)["cantidad"]
def cantidad_ingresantes_actual(carrera): token = get_token(request) provider = DataProvider() anio = date.today().year cursantes = provider.get_ingresantes(token, carrera, anio) return json.dumps({ 'nombre': 'Ingresantes del año actual', 'valor': cursantes["cantidad"] })
def cantidades_ingresantes_carrera(carrera): ''' Deberia retornar una lista del tipo [{"anio": 2015, "Ingresantes": 100}] ''' token = get_token(request) provider = DataProvider() ingresantes = provider.get_ingresantes(token, carrera) return json.dumps([{ "Cohorte": dato["anio"], "Ingresantes": dato["cantidad"] } for dato in ingresantes])
def getStudent(studentNumber): token = get_token(request) provider = DataProvider() student = provider.getStudent(token, studentNumber) studentFirstName = student.get("nombre") if student.get("nombre") else '' studentLastName = student.get("apellido") if student.get( "apellido") else '' return json.dumps({ 'nombre': 'Estudiante', 'valor': (studentFirstName + ' ' + studentLastName).strip() })
def alumnos_carrera(carrera): token = get_token(request) transformer = DataTransformer() json_data = DataProvider().get_alumnos_de_carrera(token, carrera) data = transformer.transform_to_dataframe(json_data) inscriptos = DataManipulator().inscriptos_por_carrera(data)['alumno'] return json.dumps([{ "nombre": transformer.transform_timestamp_to_semester(key), "cantidad": value } for key, value in inscriptos.items()])
def get_materiascursadas_promedio(request, carrera, inicio=None, fin=None): cursadas_data = get_materiascursadas(request, carrera, inicio, fin) transformer = DataTransformer() # Obtengo los alumnos de la carrera token = get_token(request) # Saco el token del request alumnos_carrera_json = DataProvider().get_alumnos_de_carrera( token, carrera) alumnos_carrera_df = transformer.transform_to_dataframe( alumnos_carrera_json) data = transformer.merge_materias_con_promedio(cursadas_data, alumnos_carrera_df) return data
def cantidades_alumnos_carrera(carrera): ''' Deberia retornar una lista del tipo [{"Cohorte": 2015, "Graduados": 2, "Cursantes": 200, "Ingresantes": 100, "postulantes": 500}] ''' token = get_token(request) provider = DataProvider() graduados = provider.get_graduados(token, carrera) ingresantes = provider.get_ingresantes(token, carrera) cursantes = provider.get_cursantes(token, carrera) return json.dumps([{ "Cohorte": cursantes[i]["anio"], "Graduados": graduados[i]["cantidad"], "Cursantes": cursantes[i]["cantidad"], "Ingresantes": ingresantes[i]["cantidad"] } for i in range(0, len(cursantes))])
def get_plan(request, carrera=None): provider = DataProvider() transformer = DataTransformer() # Saco el token del request token = get_token(request) # Formateo los args fecha_inicio = request.args.get('inicio') fecha_fin = request.args.get('fin') # Tiene que ser una sola carrera y un solo plan para calcular creditos carrera = carrera or request.args.get('carrera') plan = request.args.get('plan') # Traigo el plan plan_json = provider.get_plan(token, carrera, plan) plan_data = transformer.transform_to_dataframe(plan_json) return plan_data
def setUp(self): self.provider = DataProvider() self.mock_app = mock_app self.url = "localhost" self.port = 8008
def setUp(self): self.provider = DataProvider() self.mock_app = mock_app self.mock_url = "0.0.0.0" self.mock_port = 8008
def main(): gmaps = googlemaps.Client(key='AIzaSyC9Jw099A_9uXyK8KFQPxR93-cg3ks5E40') p = DataProvider(mapClient=gmaps) p.makeData(refresh=False)
def cantidad_graduados(carrera): token = get_token(request) provider = DataProvider() anio = date.today().year cursantes = provider.get_graduados(token, carrera, anio) return json.dumps({'nombre': 'Graduados', 'valor': cursantes["cantidad"]})