예제 #1
0
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()])
예제 #2
0
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
예제 #3
0
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)
예제 #4
0
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"]
예제 #5
0
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"]
    })
예제 #6
0
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])
예제 #7
0
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()
    })
예제 #8
0
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()])
예제 #9
0
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
예제 #10
0
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))])
예제 #11
0
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
예제 #13
0
 def setUp(self):
     self.provider = DataProvider()
     self.mock_app = mock_app
     self.mock_url = "0.0.0.0"
     self.mock_port = 8008
예제 #14
0
def main():
    gmaps = googlemaps.Client(key='AIzaSyC9Jw099A_9uXyK8KFQPxR93-cg3ks5E40')
    p = DataProvider(mapClient=gmaps)
    p.makeData(refresh=False)
예제 #15
0
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"]})