Exemple #1
0
 def get(self, id):
     args = self.reqparse.parse_args()
     token = args.get('auth-token')
     alumno = Alumno.load_from_token(token)
     apoderado = Apoderado.load_from_token(token)
     administrador = Administrador.load_from_token(token)
     profesor = Profesor.load_from_token(token)
     if alumno == None and apoderado == None and administrador == None and profesor == None:
         return {'response': 'user_invalid'}, 401
     curso = Curso.objects(id=id).first()
     labels = []
     data = []
     for asignatura in curso.asignaturas:
         labels.append(asignatura.nombre)
         suma_parcial_pruebas = 0
         for prueba in Prueba.objects(asignatura=asignatura.id,
                                      tipo="ENSAYO").all():
             suma_parcial_evaluaciones = 0
             for evaluacion in Evaluacion.objects(prueba=prueba.id).all():
                 print(evaluacion.alumno.curso)
                 if evaluacion.alumno.curso == curso:
                     suma_parcial_evaluaciones = suma_parcial_evaluaciones + evaluacion.puntaje
             if Evaluacion.objects(prueba=prueba.id).count() > 0:
                 suma_parcial_evaluaciones = suma_parcial_evaluaciones / (
                     Evaluacion.objects(prueba=prueba.id).count())
             suma_parcial_evaluaciones = int(suma_parcial_evaluaciones)
             suma_parcial_pruebas = suma_parcial_pruebas + suma_parcial_evaluaciones
         if Prueba.objects(asignatura=asignatura.id,
                           tipo="ENSAYO").count() > 0:
             suma_parcial_pruebas = int(
                 suma_parcial_pruebas / (Prueba.objects(
                     asignatura=asignatura.id, tipo="ENSAYO").count()))
         data.append(suma_parcial_pruebas)
     return {"labels": labels, "data": data}
Exemple #2
0
    def get_pruebas_no_respondidas(cls, alumno_id, asignatura_id):
        ensayos = Prueba.objects(asignatura=asignatura_id,
                                 visible=True,
                                 tipo='ENSAYO').all()
        talleres = Prueba.objects(asignatura=asignatura_id,
                                  visible=True,
                                  tipo='TALLER').all()
        pruebas = list(ensayos) + list(talleres)

        pruebas_no_respondidas = []
        for prueba in pruebas:
            evaluacion = Evaluacion.objects(alumno=alumno_id,
                                            prueba=prueba.id).first()
            if evaluacion == None:
                pruebas_no_respondidas.append(prueba)
        return Prueba.list_to_dict(pruebas_no_respondidas)
Exemple #3
0
 def put(self, id):
     args = self.reqparse.parse_args()
     token = args.get('auth-token')
     profesor = Profesor.load_from_token(token)
     if profesor == None:
         return {'response': 'user_invalid'}, 401
     return {'Response': Prueba.update_visible(id)}
Exemple #4
0
 def get(self, id_prueba, id_curso):
     args = self.reqparse.parse_args()
     token = args.get('auth-token')
     alumno = Alumno.load_from_token(token)
     apoderado = Apoderado.load_from_token(token)
     administrador = Administrador.load_from_token(token)
     profesor = Profesor.load_from_token(token)
     if alumno == None and apoderado == None and administrador == None and profesor == None:
         return {'response': 'user_invalid'}, 401
     rowsData = []
     prueba = Prueba.objects(id=id_prueba).first()
     curso = Curso.objects(id=id_curso).first()
     for alumno in Alumno.objects(curso=curso, activo=True).all():
         if Evaluacion.objects(prueba=prueba,
                               alumno=alumno).first() == None:
             rowsData.append({
                 'id': str(alumno.id),
                 'nombres': alumno.nombres,
                 'apellido_paterno': alumno.apellido_paterno,
                 'apellido_materno': alumno.apellido_materno,
                 'rut': alumno.rut
             })
     for row in rowsData:
         for pregunta in prueba.preguntas:
             row[str(pregunta.numero_pregunta)] = ""
     return rowsData
Exemple #5
0
    def get(self, id):
        args = self.reqparse.parse_args()
        token = args.get('auth-token')
        alumno = Alumno.load_from_token(token)
        apoderado = Apoderado.load_from_token(token)
        administrador = Administrador.load_from_token(token)
        profesor = Profesor.load_from_token(token)
        if alumno == None and apoderado == None and administrador == None and profesor == None:
            return {'response': 'user_invalid'}, 401
        labels = []
        data = []
        prueba = Prueba.objects(id=id).first()
        evaluaciones = Evaluacion.objects(prueba=prueba).all()
        for pregunta in prueba.preguntas:
            labels.append("pregunta " + str(pregunta.numero_pregunta))

        for curso in Curso.objects().all():
            if prueba.asignatura in curso.asignaturas:
                data_curso = []
                for pregunta in prueba.preguntas:
                    cantidad_correctas = 0
                    for evaluacion in evaluaciones:
                        if evaluacion.alumno.curso == curso:
                            for respuesta in evaluacion.respuestas:
                                if respuesta.numero_pregunta == pregunta.numero_pregunta:
                                    if respuesta.correcta:
                                        cantidad_correctas = cantidad_correctas + 1
                    data_curso.append(cantidad_correctas)
                data.append({"data": data_curso, "label": curso.nombre})

        return {"labels": labels, "data": data}
Exemple #6
0
 def get(self, id):
     args = self.reqparse.parse_args()
     token = args.get('auth-token')
     alumno = Alumno.load_from_token(token)
     apoderado = Apoderado.load_from_token(token)
     administrador = Administrador.load_from_token(token)
     profesor = Profesor.load_from_token(token)
     if alumno == None and apoderado == None and administrador == None and profesor == None:
         return {'response': 'user_invalid'}, 401
     labels = []
     data = []
     prueba = Prueba.objects(id=id).first()
     for curso in Curso.objects().all():
         if prueba.asignatura in curso.asignaturas:
             cantidad = 0
             promedio = 0
             labels.append(curso.nombre)
             for evaluacion in Evaluacion.objects(prueba=prueba):
                 if evaluacion.alumno.curso == curso:
                     cantidad = cantidad + 1
                     promedio = promedio + evaluacion.puntaje
             if cantidad > 0:
                 promedio = int(promedio / cantidad)
             data.append(promedio)
     return {"labels": labels, "data": [data]}
Exemple #7
0
 def get(self, id_prueba):
     args = self.reqparse.parse_args()
     token = args.get('auth-token')
     profesor = Profesor.load_from_token(token)
     prueba = Prueba.objects(id=id_prueba).first()
     if profesor == None or prueba == None:
         return {'response': 'user_invalid'}, 401
     return Pregunta.create_layout_excel(prueba.topicos)
Exemple #8
0
    def get(self, id):
        args = self.reqparse.parse_args()
        token = args.get('auth-token')
        alumno = Alumno.load_from_token(token)
        apoderado = Apoderado.load_from_token(token)
        administrador = Administrador.load_from_token(token)
        profesor = Profesor.load_from_token(token)
        if alumno == None and apoderado == None and administrador == None and profesor == None:
            return {'response': 'user_invalid'}, 401
        labels = []
        data = []
        prueba = Prueba.objects(id=id).first()
        for topico in prueba.topicos:
            labels.append(topico.nombre)

        evaluaciones = Evaluacion.objects(prueba=prueba).all()
        for curso in Curso.objects().all():
            if prueba.asignatura in curso.asignaturas:
                data_curso = []
                for topico in prueba.topicos:
                    #DETERMINAR LA CANTIDAD DE PREGUNTAS ASOCIADAS AL TOPICO Y CUALES SON LAS PREGUNTAS
                    cantidad_preguntas_topico = 0
                    numeros_pregunta_topico = []
                    for pregunta in prueba.preguntas:
                        if topico == pregunta.topico:
                            cantidad_preguntas_topico += 1
                            numeros_pregunta_topico.append(
                                pregunta.numero_pregunta)

                    #SACAR EL PROMEDIO DE TODAS LAS EVALUACIONES
                    suma_promedio_topico_evaluacion = 0
                    cant_promedio_topico_evaluacion = 0
                    for evaluacion in evaluaciones:
                        #ALUMNO PERTENECE AL CURSO
                        if evaluacion.alumno.curso == curso:
                            cantidad_correcta_evaluacion = 0
                            for respuesta in evaluacion.respuestas:
                                if respuesta.numero_pregunta in numeros_pregunta_topico:
                                    if respuesta.correcta:
                                        cantidad_correcta_evaluacion += 1
                            #SACAR EL PROMEDIO PARA EVALUACION DEL ALUMNO
                            promedio_alumno = int(
                                (cantidad_correcta_evaluacion /
                                 cantidad_preguntas_topico) * 100)
                            suma_promedio_topico_evaluacion += promedio_alumno
                            cant_promedio_topico_evaluacion += 1

                    if cantidad_preguntas_topico > 0 and cant_promedio_topico_evaluacion > 0:
                        data_curso.append(
                            int(suma_promedio_topico_evaluacion /
                                cant_promedio_topico_evaluacion))
                    else:
                        data_curso.append(0)
                data.append({"data": data_curso, "label": curso.nombre})
                print("labels: ", labels)
                print("data ", data)

        return {"labels": labels, "data": data}
Exemple #9
0
 def post(self):
     file = request.files["file"]
     lista = excel_read(file)
     args = self.reqparse.parse_args()
     prueba_id = args.get('prueba_id')
     token = args.get('auth-token')
     profesor = Profesor.load_from_token(token)
     if profesor == None:
         return {'response': 'user_invalid'}, 401
     return Prueba.load_preguntas(lista, prueba_id)
Exemple #10
0
 def delete(self, id):
     args = self.reqparse.parse_args()
     token = args.get('auth-token')
     profesor = Profesor.load_from_token(token)
     if profesor == None:
         return {'response': 'user_invalid'}, 401
     prueba = Prueba.objects(id=id).first()
     prueba.activo = False
     prueba.save()
     return {'Response': 'borrado'}
Exemple #11
0
 def get(self, id):
     args = self.reqparse.parse_args()
     token = args.get('auth-token')
     alumno = Alumno.load_from_token(token)
     apoderado = Apoderado.load_from_token(token)
     administrador = Administrador.load_from_token(token)
     profesor = Profesor.load_from_token(token)
     if alumno == None and apoderado == None and administrador == None and profesor == None:
         return {'response': 'user_invalid'}, 401
     return Prueba.objects(id=id).first().to_dict()
Exemple #12
0
def test_get_prueba(client):
    prueba = Prueba.objects().first()
    if prueba == None:
        assert True
    else:
        rv = client.get('/pruebas/' + str(prueba.id))
        if rv._status_code == 200:
            assert True
        else:
            assert False
Exemple #13
0
    def post(self, id):
        args = self.reqparse.parse_args()
        token = args.get('auth-token')
        profesor = Profesor.load_from_token(token)
        data = request.data.decode()
        data = json.loads(data)
        prueba = Prueba.objects(id=id).first()
        for registro in data['data']:
            evaluacion = Evaluacion()
            cantidad_buenas = 0
            cantidad_malas = 0
            cantidad_omitidas = 0
            alumno = Alumno.objects(id=registro['id']).first()
            evaluacion.alumno = alumno
            evaluacion.prueba = prueba
            for pregunta in prueba.preguntas:
                respuesta = Respuesta()
                respuesta.numero_pregunta = pregunta.numero_pregunta
                if registro[str(pregunta.numero_pregunta)] == "":
                    cantidad_omitidas = cantidad_omitidas + 1
                    respuesta.correcta = False
                    if prueba.tipo != "TAREA":
                        respuesta.alternativa = "O"
                else:
                    if prueba.tipo != "TAREA":
                        if registro[str(pregunta.numero_pregunta)].upper(
                        ) == pregunta.alternativa.upper():
                            cantidad_buenas = cantidad_buenas + 1
                            respuesta.correcta = True
                            respuesta.alternativa = str(registro[str(
                                pregunta.numero_pregunta)].upper())
                        else:
                            cantidad_malas = cantidad_malas + 1
                            respuesta.correcta = False
                            respuesta.alternativa = str(registro[str(
                                pregunta.numero_pregunta)].upper())
                    else:
                        if registro[str(pregunta.numero_pregunta)].upper(
                        ) == "CORRECTA":
                            cantidad_buenas = cantidad_buenas + 1
                            respuesta.correcta = True

                        if registro[str(pregunta.numero_pregunta)].upper(
                        ) == "INCORRECTA":
                            cantidad_malas = cantidad_malas + 1
                            respuesta.correcta = False
                evaluacion.respuestas.append(respuesta)
            evaluacion.cantidad_buenas = cantidad_buenas
            evaluacion.cantidad_malas = cantidad_malas
            evaluacion.cantidad_omitidas = cantidad_omitidas
            evaluacion.puntaje = int((
                (850 - prueba.puntaje_base) / len(prueba.preguntas)) *
                                     cantidad_buenas + prueba.puntaje_base)
            evaluacion.save()
        return {'Response': 'exito'}
Exemple #14
0
 def post(self):
     args = self.reqparse.parse_args()
     token = args.get('auth-token')
     alumno = Alumno.load_from_token(token)
     if alumno == None:
         return {'Response': 'user_invalid'}, 401
     body = request.data.decode()
     body = json.loads(body)
     prueba = Prueba.objects(id=body["data"]["prueba_id"]).first()
     if prueba == None or not prueba.visible:
         return {'Response': 'disabled_prueba'}
     return Evaluacion.evaluar_prueba(alumno.id, body["data"])
Exemple #15
0
 def post(self):
     args = self.reqparse.parse_args()
     token = args.get('auth-token')
     profesor = Profesor.load_from_token(token)
     data = request.data.decode()
     data = json.loads(data)
     if profesor == None:
         return {'response': 'user_invalid'}, 401
     prueba = Prueba()
     prueba.nombre = data['nombre']
     prueba.cantidad_preguntas = 0
     prueba.asignatura = profesor.asignatura.id
     prueba.tipo = data['tipo']
     prueba.save()
     return {"Response": "exito", 'id': str(prueba.id)}
Exemple #16
0
 def get(self, id_prueba):
     args = self.reqparse.parse_args()
     token = args.get('auth-token')
     alumno = Alumno.load_from_token(token)
     apoderado = Apoderado.load_from_token(token)
     administrador = Administrador.load_from_token(token)
     profesor = Profesor.load_from_token(token)
     if alumno == None and apoderado == None and administrador == None and profesor == None:
         return {'response': 'user_invalid'}, 401
     columnDefs = []
     columnDefs.append({
         'headerName': 'Nombres',
         'field': 'nombres',
         'sortable': True
     })
     columnDefs.append({
         'headerName': 'Apellido Paterno',
         'field': 'apellido_paterno',
         'sortable': True
     })
     columnDefs.append({
         'headerName': 'Apellido Materno',
         'field': 'apellido_materno',
         'sortable': True
     })
     columnDefs.append({
         'headerName': 'Rut',
         'field': 'rut',
         'sortable': True
     })
     prueba = Prueba.objects(id=id_prueba).first()
     for pregunta in prueba.preguntas:
         if prueba.tipo == "ENSAYO" or prueba.tipo == "TALLER":
             columnDefs.append({
                 'headerName': str(pregunta.numero_pregunta),
                 'field': str(pregunta.numero_pregunta),
                 'editable': True,
                 'width': 40
             })
         if prueba.tipo == "TAREA":
             columnDefs.append({
                 'headerName': str(pregunta.numero_pregunta),
                 'field': str(pregunta.numero_pregunta),
                 'editable': True,
                 'width': 80,
                 'cellEditor': 'select',
                 'cellEditorParams': {
                     'values': ['correcta', 'incorrecta']
                 }
             })
     return columnDefs
Exemple #17
0
 def put(self, id):
     args = self.reqparse.parse_args()
     token = args.get('auth-token')
     profesor = Profesor.load_from_token(token)
     data = request.data.decode()
     data = json.loads(data)
     if profesor == None:
         return {'response': 'user_invalid'}, 401
     data = request.data.decode()
     data = json.loads(data)
     prueba = Prueba.objects(id=id).first()
     prueba.puntaje_base = int(data['puntaje_base'])
     prueba.save()
     return {'Response': 'exito'}
Exemple #18
0
 def get(self, id):
     args = self.reqparse.parse_args()
     token = args.get('auth-token')
     alumno = Alumno.load_from_token(token)
     apoderado = Apoderado.load_from_token(token)
     administrador = Administrador.load_from_token(token)
     profesor = Profesor.load_from_token(token)
     if alumno == None and apoderado == None and administrador == None and profesor == None:
         return {'response': 'user_invalid'}, 401
     response = []
     asignatura = Asignatura.objects(id=id).first()
     for prueba in Prueba.objects(asignatura=asignatura.id, activo=True):
         response.append(prueba.to_dict())
     return response
Exemple #19
0
 def evaluar_prueba(cls, alumno_id, body):
     prueba_id = body["prueba_id"]
     listado_respuestas = body["respuestas"]
     prueba = Prueba.objects(id=prueba_id).first()
     alumno = Alumno.objects(id=alumno_id).first()
     print(prueba_id)
     print("prueba: ", prueba)
     evaluacion = Evaluacion()
     cantidad_buenas = 0
     cantidad_malas = 0
     cantidad_omitidas = 0
     evaluacion.alumno = alumno
     evaluacion.prueba = prueba
     for pregunta in prueba.preguntas:
         respuesta = Respuesta()
         respuesta.numero_pregunta = pregunta.numero_pregunta
         if listado_respuestas[str(pregunta.numero_pregunta)] == "":
             cantidad_omitidas = cantidad_omitidas + 1
             respuesta.correcta = False
             if prueba.tipo != "TAREA":
                 respuesta.alternativa = "O"
         else:
             if prueba.tipo != "TAREA":
                 if listado_respuestas[str(pregunta.numero_pregunta)].upper(
                 ) == pregunta.alternativa.upper():
                     cantidad_buenas = cantidad_buenas + 1
                     respuesta.correcta = True
                 else:
                     cantidad_malas = cantidad_malas + 1
                     respuesta.correcta = False
                 respuesta.alternativa = str(listado_respuestas[str(
                     pregunta.numero_pregunta)].upper())
             else:
                 if listado_respuestas[str(
                         pregunta.numero_pregunta)].upper() == "CORRECTA":
                     cantidad_buenas = cantidad_buenas + 1
                     respuesta.correcta = True
                 if listado_respuestas[str(
                         pregunta.numero_pregunta)].upper() == "INCORRECTA":
                     cantidad_malas = cantidad_malas + 1
                     respuesta.correcta = False
         evaluacion.respuestas.append(respuesta)
     evaluacion.cantidad_buenas = cantidad_buenas
     evaluacion.cantidad_malas = cantidad_malas
     evaluacion.cantidad_omitidas = cantidad_omitidas
     evaluacion.puntaje = int((
         (850 - prueba.puntaje_base) / len(prueba.preguntas)) *
                              cantidad_buenas + prueba.puntaje_base)
     evaluacion.save()
     return {'Response': 'exito'}
Exemple #20
0
 def put(self, id):
     args = self.reqparse.parse_args()
     token = args.get('auth-token')
     profesor = Profesor.load_from_token(token)
     data = request.data.decode()
     data = json.loads(data)
     if profesor == None:
         return {'response': 'user_invalid'}, 401
     data = request.data.decode()
     data = json.loads(data)
     prueba = Prueba.objects(id=id).first()
     topico = Topico.objects(id=data['id']).first()
     prueba.topicos.append(topico.id)
     prueba.save()
     return {"Response": "exito"}
Exemple #21
0
 def get(self):
     args = self.reqparse.parse_args()
     token = args.get('auth-token')
     alumno = Alumno.load_from_token(token)
     apoderado = Apoderado.load_from_token(token)
     administrador = Administrador.load_from_token(token)
     profesor = Profesor.load_from_token(token)
     if alumno == None and apoderado == None and administrador == None and profesor == None:
         return {'response': 'user_invalid'}, 401
     response = []
     pruebas = Prueba.objects().all()
     for prueba in pruebas:
         if prueba.activo:
             response.append(prueba.to_dict())
     return response
Exemple #22
0
 def delete(self, id_topico, id_prueba):
     args = self.reqparse.parse_args()
     token = args.get('auth-token')
     profesor = Profesor.load_from_token(token)
     if profesor == None:
         return {'response': 'user_invalid'}, 401
     prueba = Prueba.objects(id=id_prueba).first()
     topico = Topico.objects(id=id_topico).first()
     topicos = []
     for topico_prueba in prueba.topicos:
         if topico_prueba.id != topico.id:
             topicos.append(topico_prueba)
     prueba.topicos = topicos
     prueba.save()
     return {'Response': 'borrado'}
Exemple #23
0
 def delete(self, id, numero):
     args = self.reqparse.parse_args()
     token = args.get('auth-token')
     profesor = Profesor.load_from_token(token)
     if profesor == None:
         return {'response': 'user_invalid'}, 401
     prueba = Prueba.objects(id=id).first()
     preguntas = []
     for pregunta in prueba.preguntas:
         if pregunta.numero_pregunta != int(numero):
             preguntas.append(pregunta)
     contador = 0
     for pregunta in preguntas:
         pregunta.numero_pregunta = contador + 1
         contador = contador + 1
     prueba.preguntas = preguntas
     prueba.save()
     return {"Response": "borrado"}
Exemple #24
0
 def post(self, id):
     args = self.reqparse.parse_args()
     token = args.get('auth-token')
     profesor = Profesor.load_from_token(token)
     data = request.data.decode()
     data = json.loads(data)
     if profesor == None:
         return {'response': 'user_invalid'}, 401
     data = request.data.decode()
     data = json.loads(data)
     prueba = Prueba.objects(id=id).first()
     for pregunta in prueba.preguntas:
         if int(pregunta.numero_pregunta) == int(data['numero']):
             pregunta.numero_pregunta = pregunta.numero_pregunta - 1
         else:
             if int(pregunta.numero_pregunta) == int(data['numero']) - 1:
                 pregunta.numero_pregunta = pregunta.numero_pregunta + 1
     prueba.preguntas.sort(key=takeNumero)
     prueba.save()
     return {'Response': 'exito'}
Exemple #25
0
 def post(self, id):
     args = self.reqparse.parse_args()
     token = args.get('auth-token')
     profesor = Profesor.load_from_token(token)
     data = request.data.decode()
     data = json.loads(data)
     if profesor == None:
         return {'response': 'user_invalid'}, 401
     data = request.data.decode()
     data = json.loads(data)
     prueba = Prueba.objects(id=id).first()
     topico = Topico.objects(id=data['topico']).first()
     pregunta = Pregunta()
     if (data['tipo'] == "TAREA"):
         pregunta.numero_pregunta = len(prueba.preguntas) + 1
         pregunta.topico = topico
     else:
         pregunta.numero_pregunta = len(prueba.preguntas) + 1
         pregunta.topico = topico
         pregunta.alternativa = data['alternativa']
     prueba.preguntas.append(pregunta)
     prueba.cantidad_preguntas = len(prueba.preguntas)
     prueba.save()
     return {"Response": "exito"}
Exemple #26
0
    def get(self, id):
        args = self.reqparse.parse_args()
        token = args.get('auth-token')
        alumno = Alumno.load_from_token(token)
        apoderado = Apoderado.load_from_token(token)
        administrador = Administrador.load_from_token(token)
        profesor = Profesor.load_from_token(token)
        if alumno == None and apoderado == None and administrador == None and profesor == None:
            return {'response': 'user_invalid'}, 401
        labels = []
        data_ensayo = []
        data_taller = []
        data_tarea = []
        alumno = Alumno.objects(id=id).first()
        for asignatura in alumno.curso.asignaturas:
            labels.append(asignatura.nombre)
            suma_ensayo = 0
            suma_taller = 0
            suma_tarea = 0
            for prueba in Prueba.objects(asignatura=asignatura,
                                         tipo="ENSAYO").all():
                puntaje = 0
                evaluacion = Evaluacion.objects(alumno=alumno.id,
                                                prueba=prueba.id).first()
                if evaluacion != None:
                    puntaje = evaluacion.puntaje
                suma_ensayo = suma_ensayo + puntaje

            for prueba in Prueba.objects(asignatura=asignatura,
                                         tipo="TALLER").all():
                puntaje = 0
                evaluacion = Evaluacion.objects(alumno=alumno.id,
                                                prueba=prueba.id).first()
                if evaluacion != None:
                    puntaje = evaluacion.puntaje
                suma_taller = suma_taller + puntaje

            for prueba in Prueba.objects(asignatura=asignatura,
                                         tipo="TAREA").all():
                puntaje = 0
                evaluacion = Evaluacion.objects(alumno=alumno.id,
                                                prueba=prueba.id).first()
                if evaluacion != None:
                    puntaje = evaluacion.puntaje
                suma_tarea = suma_tarea + puntaje

            if Prueba.objects(asignatura=asignatura,
                              tipo="ENSAYO").count() > 0:
                data_ensayo.append(
                    int((suma_ensayo / Prueba.objects(asignatura=asignatura,
                                                      tipo="ENSAYO").count())))
            if Prueba.objects(asignatura=asignatura,
                              tipo="ENSAYO").count() == 0:
                data_ensayo.append(int(suma_ensayo))

            if Prueba.objects(asignatura=asignatura,
                              tipo="TALLER").count() > 0:
                data_taller.append(
                    int((suma_taller / Prueba.objects(asignatura=asignatura,
                                                      tipo="TALLER").count())))
            if Prueba.objects(asignatura=asignatura,
                              tipo="TALLER").count() == 0:
                data_taller.append(int(suma_taller))

            if Prueba.objects(asignatura=asignatura, tipo="TAREA").count() > 0:
                data_tarea.append(
                    int((suma_tarea / Prueba.objects(asignatura=asignatura,
                                                     tipo="TAREA").count())))
            if Prueba.objects(asignatura=asignatura,
                              tipo="TAREA").count() == 0:
                data_tarea.append(int(suma_tarea))

        return {
            "labels":
            labels,
            "data": [{
                "data": data_ensayo,
                "label": "Ensayo"
            }, {
                "data": data_taller,
                "label": "Taller"
            }, {
                "data": data_tarea,
                "label": "Tarea"
            }]
        }
Exemple #27
0
    def get(self, id):
        args = self.reqparse.parse_args()
        token = args.get('auth-token')
        alumno = Alumno.load_from_token(token)
        apoderado = Apoderado.load_from_token(token)
        administrador = Administrador.load_from_token(token)
        profesor = Profesor.load_from_token(token)
        if alumno == None and apoderado == None and administrador == None and profesor == None:
            return {'response': 'user_invalid'}, 401
        labels = []
        data_ensayo = []
        data_taller = []
        data_tarea = []
        asignatura = Asignatura.objects(id=id).first()
        for curso in Curso.objects.all():
            if asignatura in curso.asignaturas:
                labels.append(curso.nombre)

                promedio_ensayo = 0
                cantidad_ensayo_con_evaluaciones = 0
                for prueba in Prueba.objects(asignatura=asignatura.id,
                                             tipo="ENSAYO").all():
                    evaluaciones = Evaluacion.objects(prueba=prueba.id).all()
                    if evaluaciones:
                        promedio = 0
                        cant_evaluciones = 0
                        banderaEvaluacionesCurso = False
                        for evaluacion in Evaluacion.objects(
                                prueba=prueba.id).all():
                            if evaluacion.alumno.curso == curso:
                                cant_evaluciones = cant_evaluciones + 1
                                promedio = evaluacion.puntaje + promedio
                                banderaEvaluacionesCurso = True
                        if cant_evaluciones > 0:
                            promedio = promedio / cant_evaluciones
                        promedio_ensayo = promedio_ensayo + promedio
                        if banderaEvaluacionesCurso:
                            cantidad_ensayo_con_evaluaciones = cantidad_ensayo_con_evaluaciones + 1
                if cantidad_ensayo_con_evaluaciones:
                    promedio_ensayo = int(promedio_ensayo /
                                          cantidad_ensayo_con_evaluaciones)
                data_ensayo.append(promedio_ensayo)

                promedio_taller = 0
                cantidad_taller_con_evaluaciones = 0
                for prueba in Prueba.objects(asignatura=asignatura.id,
                                             tipo="TALLER").all():
                    evaluaciones = Evaluacion.objects(prueba=prueba.id).all()
                    if evaluaciones:
                        promedio = 0
                        cant_evaluciones = 0
                        banderaEvaluacionesCurso = False
                        for evaluacion in Evaluacion.objects(
                                prueba=prueba.id).all():
                            if evaluacion.alumno.curso == curso:
                                cant_evaluciones = cant_evaluciones + 1
                                promedio = evaluacion.puntaje + promedio
                                banderaEvaluacionesCurso = True
                        if cant_evaluciones > 0:
                            promedio = promedio / cant_evaluciones
                        promedio_taller = promedio_taller + promedio
                        if banderaEvaluacionesCurso:
                            cantidad_taller_con_evaluaciones = cantidad_taller_con_evaluaciones + 1
                if cantidad_taller_con_evaluaciones:
                    promedio_taller = int(promedio_taller /
                                          cantidad_taller_con_evaluaciones)
                data_taller.append(promedio_taller)

                promedio_tarea = 0
                cantidad_tareas_con_evaluaciones = 0
                for prueba in Prueba.objects(asignatura=asignatura.id,
                                             tipo="TAREA").all():
                    evaluaciones = Evaluacion.objects(prueba=prueba.id).all()
                    if evaluaciones:
                        promedio = 0
                        cant_evaluciones = 0
                        banderaEvaluacionesCurso = False
                        for evaluacion in Evaluacion.objects(
                                prueba=prueba.id).all():
                            if evaluacion.alumno.curso == curso:
                                promedio = evaluacion.puntaje + promedio
                                cant_evaluciones = cant_evaluciones + 1
                                banderaEvaluacionesCurso = True
                        if cant_evaluciones > 0:
                            promedio = promedio / cant_evaluciones
                        promedio_tarea = promedio_tarea + promedio
                        if banderaEvaluacionesCurso:
                            cantidad_tareas_con_evaluaciones = cantidad_tareas_con_evaluaciones + 1
                if cantidad_tareas_con_evaluaciones:
                    promedio_tarea = int(promedio_tarea /
                                         cantidad_tareas_con_evaluaciones)
                data_tarea.append(promedio_tarea)

        return {
            "labels":
            labels,
            "data": [
                {
                    "data": data_ensayo,
                    "label": "Ensayos"
                },
                {
                    "data": data_taller,
                    "label": "Talleres"
                },
                {
                    "data": data_tarea,
                    "label": "Tareas"
                },
            ]
        }