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}
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)
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)}
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
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}
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]}
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)
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}
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)
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'}
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()
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
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'}
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"])
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)}
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
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'}
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
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'}
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"}
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
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'}
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"}
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'}
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"}
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" }] }
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" }, ] }