def test_get_asistencia(client): asistencia = Asistencia.objects().first() if asistencia == None: assert True else: rv = client.get('/asistencias/' + str(asistencia.id)) if rv._status_code == 200: assert True else: assert False
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 Asistencia.objects(id=id).first().to_dict()
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 = [] for asistencia in Asistencia.objects().all(): response.append(asistencia.to_dict_short()) return response
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 asistencia = Asistencia.objects(id=id).first() justificaciones = [] for justificacion in Justificacion.objects( asistencia=asistencia.id).all(): if justificacion.activo: justificaciones.append(justificacion.to_dict()) return justificaciones
def post(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 data = request.data.decode() data = json.loads(data) justificacion = Justificacion() alumno = Alumno.objects(id=data['id_alumno']).first() asistencia = Asistencia.objects(id=data['id_asistencia']).first() justificacion.causa = data['causa'] justificacion.alumno = alumno.id justificacion.asistencia = asistencia.id justificacion.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 labels = [] data_asistencia = [] data_inasistencia = [] asignatura = Asignatura.objects(id=profesor.asignatura.id).first() for curso in Curso.objects().all(): if asignatura in curso.asignaturas: labels.append(curso.nombre) asistencia_prom = 0 cantidad_asistencia = 0 for asistencia in Asistencia.objects(asignatura=asignatura, curso=curso): promedio = 0 cantidad_asistencia = cantidad_asistencia + 1 if len(asistencia.alumnos_presentes) + len( asistencia.alumnos_presentes) > 0: promedio = int( (len(asistencia.alumnos_presentes) / (len(asistencia.alumnos_presentes) + len(asistencia.alumnos_presentes))) * 100) asistencia_prom = asistencia_prom + promedio if cantidad_asistencia > 0: asistencia_prom = int(asistencia_prom / cantidad_asistencia) data_asistencia.append(asistencia_prom) data_inasistencia.append(100 - asistencia_prom) return { "labels": labels, "data": [{ 'data': data_asistencia, 'label': 'Asistencia' }] }
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 = [ 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov' ] meses = [3, 4, 5, 6, 7, 8, 9, 10, 11] asistencia_lista = [] inasistencia_lista = [] for mes in meses: asistencia_mes = 0 aprobacion = 0 for asistencia in Asistencia.objects(curso=curso.id).all(): if str(asistencia.fecha.month) == str(mes): asistencia_mes = asistencia_mes + 1 aprobacion_asistencia = len( asistencia.alumnos_presentes) / ( len(asistencia.alumnos_presentes) + len(asistencia.alumnos_ausentes)) aprobacion = aprobacion_asistencia + aprobacion if asistencia_mes > 0: aprobacion = int((aprobacion / asistencia_mes) * 100) asistencia_lista.append(aprobacion) inasistencia_lista.append(100 - aprobacion) return { "labels": labels, "data": [ { "data": asistencia_lista, "label": "Asistencia (%)" }, ] }
def put(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 asistencia = Asistencia.objects(id=id).first() asistencia.alumnos_presentes = [] asistencia.alumnos_ausentes = [] data = request.data.decode() data = json.loads(data) for alumno in data['presentes']: alumno_aux = Alumno.objects(id=alumno['id']).first() asistencia.alumnos_presentes.append(alumno_aux.id) for alumno in data['ausentes']: alumno_aux = Alumno.objects(id=alumno['id']).first() asistencia.alumnos_ausentes.append(alumno_aux.id) asistencia.save() return {'Response': 'exito'}
def get(self, id_asignatura): args = self.reqparse.parse_args() token = args.get('auth-token') alumno = Alumno.load_from_token(token) apoderado = Apoderado.load_from_token(token) asignatura = Asignatura.objects(id=id_asignatura).first() if alumno == None and apoderado == None: return {'response': 'user_invalid'}, 401 asistencias = [] for asistencia in Asistencia.objects(asignatura=asignatura, curso=alumno.curso).all(): if alumno in asistencia.alumnos_presentes: asistencias.append({ "id": str(asistencia.id), "fecha": asistencia.fecha.strftime("%Y/%m/%d %H:%M:%S"), "presente": True, "justificacion": "Sin justificación" }) else: justificacion = "Sin justificación" if Justificacion.objects(asistencia=asistencia, alumno=alumno).first() != None: justificacion = Justificacion.objects( asistencia=asistencia, alumno=alumno).first().causa asistencias.append({ "id": str(asistencia.id), "fecha": asistencia.fecha.strftime("%Y/%m/%d %H:%M:%S"), "presente": False, "justificacion": justificacion }) return asistencias
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 = [] asistencia_lista = [] inasistencia_lista = [] for asignatura in curso.asignaturas: labels.append(asignatura.nombre) asistencia_asignatura = 0 aprobacion = 0 for asistencia in Asistencia.objects(curso=curso.id, asignatura=asignatura).all(): asistencia_asignatura = asistencia_asignatura + 1 aprobacion_asistencia = len(asistencia.alumnos_presentes) / ( len(asistencia.alumnos_presentes) + len(asistencia.alumnos_ausentes)) aprobacion = aprobacion_asistencia + aprobacion if asistencia_asignatura > 0: aprobacion = int((aprobacion / asistencia_asignatura) * 100) asistencia_lista.append(aprobacion) inasistencia_lista.append(100 - aprobacion) return { "labels": labels, "data": [ { "data": asistencia_lista, "label": "Asistencia (%)" }, ] }
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_asistencia_asignatura = [] data_inasistencia_asignatura = [] data_asistencia_anual = [] data_inasistencia_anual = [] labels_anual = [ 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov' ] meses = [3, 4, 5, 6, 7, 8, 9, 10, 11] alumno = Alumno.objects(id=id).first() for asignatura in alumno.curso.asignaturas: labels.append(asignatura.nombre) presentes = 0 for asistencia in Asistencia.objects(asignatura=asignatura, curso=alumno.curso).all(): if alumno in asistencia.alumnos_presentes: presentes = presentes + 1 if Asistencia.objects(asignatura=asignatura, curso=alumno.curso).count() > 0: presentes = int((presentes / Asistencia.objects( asignatura=asignatura, curso=alumno.curso).count()) * 100) data_asistencia_asignatura.append(presentes) data_inasistencia_asignatura.append(100 - presentes) for mes in meses: asistencia_mes = 0 cant_asistencia = 0 aprobacion = 0 for asistencia in Asistencia.objects(curso=alumno.curso).all(): if str(asistencia.fecha.month) == str(mes): cant_asistencia = cant_asistencia + 1 if alumno in asistencia.alumnos_presentes: asistencia_mes = asistencia_mes + 1 if cant_asistencia > 0: aprobacion = int((asistencia_mes / cant_asistencia) * 100) data_asistencia_anual.append(aprobacion) data_inasistencia_anual.append(100 - aprobacion) return { "grafico_asignatura": { "labels": labels, "data": [{ "data": data_asistencia_asignatura, "label": "Asistencia (%)" }] }, "grafico_anual": { "labels": labels_anual, "data": [{ "data": data_asistencia_anual, "label": "Asistencia (%)" }] } }
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 alumno = Alumno.objects(id=id).first() evaluaciones = Evaluacion.objects(alumno=alumno.id).all() evaluaciones_matematicas = [] evaluaciones_lenguaje = [] ponderacion_matematicas = 0 ponderacion_lenguaje = 0 colegio = "" if alumno.colegio != None: colegio = alumno.colegio.nombre for evaluacion in evaluaciones: if (evaluacion.prueba.asignatura.nombre == 'Matemáticas') and (evaluacion.prueba.tipo != "TAREA"): evaluaciones_matematicas.append(evaluacion) if (evaluacion.prueba.asignatura.nombre == 'Lenguaje') and (evaluacion.prueba.tipo != "TAREA"): evaluaciones_lenguaje.append(evaluacion) for evaluacion_mat in evaluaciones_matematicas: ponderacion_matematicas = ponderacion_matematicas + evaluacion_mat.puntaje for evaluacion_leng in evaluaciones_lenguaje: ponderacion_lenguaje = ponderacion_lenguaje + evaluacion_leng.puntaje promedio_mat = 0 promedio_leng = 0 if ponderacion_matematicas > 0: promedio_mat = int( (ponderacion_matematicas) / evaluaciones_matematicas.__len__()) if ponderacion_lenguaje > 0: promedio_leng = int( (ponderacion_lenguaje) / evaluaciones_lenguaje.__len__()) asistencias = Asistencia.objects(curso=alumno.curso).all() cantidad_presente = 0 for asistencia in asistencias: for alumno_presente in asistencia.alumnos_presentes: if alumno_presente.id == alumno.id: cantidad_presente = cantidad_presente + 1 promedio_asistencia = 0 if cantidad_presente > 0: promedio_asistencia = int( 100 * (cantidad_presente / asistencias.__len__())) observaciones = json.loads( Observacion.objects(alumno=alumno).all().to_json()) return { 'id': str(alumno.id), 'nombres': alumno.nombres, 'calegio': colegio, 'curso': alumno.curso.nombre, 'curso_id': str(alumno.curso.id), 'apellido_paterno': alumno.apellido_paterno, 'apellido_materno': alumno.apellido_materno, 'telefono': alumno.telefono, 'email': alumno.email, 'ponderacion_matematicas': promedio_mat, 'ponderacion_lenguaje': promedio_leng, 'ponderacion_asistencia': promedio_asistencia, 'observaciones': observaciones, 'imagen': alumno.imagen, 'direccion': alumno.direccion.calle + " " + alumno.direccion.numero + ", " + alumno.direccion.comuna }