コード例 #1
0
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
コード例 #2
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 Asistencia.objects(id=id).first().to_dict()
コード例 #3
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 = []
     for asistencia in Asistencia.objects().all():
         response.append(asistencia.to_dict_short())
     return response
コード例 #4
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
     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
コード例 #5
0
 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'}
コード例 #6
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
        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'
            }]
        }
コード例 #7
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 = [
         '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 (%)"
             },
         ]
     }
コード例 #8
0
 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'}
コード例 #9
0
 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
コード例 #10
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 = []
     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 (%)"
             },
         ]
     }
コード例 #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
        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 (%)"
                }]
            }
        }
コード例 #12
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
        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
        }