Example #1
0
    def post(self):
        args = self.reqparse.parse_args()
        email = args.get("email")
        passwd = args.get("password")
        tipo = args.get("tipo")

        user = None
        if tipo == 'ALUMNO':
            if (email.find('@') != -1):
                user = Alumno.objects(email=email).first()
            else:
                user = Alumno.objects(nombre_usuario=email).first()

        elif tipo == 'ADMINISTRADOR':
            if (email.find('@') != -1):
                user = Administrador.objects(email=email).first()
            else:
                user = Administrador.objects(nombre_usuario=email).first()

        elif tipo == 'PROFESOR':
            if (email.find('@') != -1):
                user = Profesor.objects(email=email).first()
            else:
                user = Profesor.objects(nombre_usuario=email).first()

        if user != None and user.activo and user.check_password(passwd):
            res = []
            if tipo == "ALUMNO":
                res_bd = Curso.objects(alumnos__in=[user],
                                       clon_padre=None,
                                       activo=True,
                                       publicado=True).all()
            else:
                res_bd = Curso.objects(profesor=user,
                                       clon_padre=None,
                                       activo=True).all()
            for resource in res_bd:
                res.append({
                    "id":
                    str(resource.id),
                    "nombre":
                    resource.nombre,
                    "fecha_creacion":
                    resource.fecha_creacion.isoformat(),
                    "activo":
                    resource.activo,
                    "version":
                    resource.version,
                    "id_base":
                    str(resource.curso_base.id),
                })
            return {
                'respuesta': user.to_dict(),
                'tipo': tipo,
                'token': str(user.get_token()),
                'recursos': res
            }
        return abort(403)
Example #2
0
 def put(self, id):
     args = self.reqparse.parse_args()
     token = args.get('auth-token')
     alumno = Alumno.objects(id=id).first()
     administrador = Administrador.load_from_token(token)
     if alumno == None and administrador == None:
         return {'response': 'user_invalid'}, 401
     data = request.data.decode()
     data = json.loads(data)
     alumno.nombres = data['nombres']
     alumno.apellido_paterno = data['apellido_paterno']
     alumno.apellido_materno = data['apellido_materno']
     alumno.telefono = data['telefono']
     alumno.email = data['email']
     alumno.sexo = data['sexo']
     alumno.rut = data['rut']
     alumno.puntaje_ingreso = data['puntaje_ingreso']
     direccion = Direccion(calle=data['calle'],
                           numero=data['numero'],
                           comuna=data['comuna'],
                           cas_dep_of=data['cas_dep_of'])
     alumno.direccion = direccion
     colegio = Colegio.objects(id=data['colegio']).first()
     curso = Curso.objects(id=data['curso']).first()
     alumno.colegio = colegio
     alumno.curso = curso
     alumno.save()
     colegio.updateCantEstudiantes()
     curso.updateCantEstudiantes()
     colegio.save()
     curso.save()
     return {'Response': 'exito', 'id': str(alumno.id)}
Example #3
0
 def get(self, id_curso):
     alumnos_array = []
     curso = Curso.objects(id=id_curso, clon_padre=None).first()
     for alumno_obj in Alumno.objects().all():
         if alumno_obj.curso == curso:
             alumnos_array.append(alumno_obj.to_dict())
     return alumnos_array
Example #4
0
def test_post_cursos(client):
    institucion = Institucion.objects().first()
    asignatura = Asignatura.objects().first()
    profesor = Profesor.objects().first()
    alumnos = Alumno.objects().all()
    grado = Grado.objects().first()
    curso_base = CursoBase.objects().first()

    if ((institucion == None) or (asignatura == None) or (profesor == None)
            or (alumnos == None) or (grado == None) or (curso_base == None)):
        assert True
    else:
        alumnos_array = []
        for alumno in alumnos:
            alumnos_array.append(alumno.id)
        data = {
            'nombre': 'nombre',
            'fecha_creacion': '01/01/2000',
            'preguntas': [],
            'asignatura': str(asignatura.id),
            'institucion': str(institucion.id),
            'profesor': str(profesor.id),
            'alumnos': alumnos_array,
            'grado': str(grado.id),
            'activo': True,
            'version': '1.0',
            'curso_base': str(curso_base.id),
            'descripcion': 'descripcion del curso'
        }
        token = profesor.get_token()
        rv = client.post('/recursos', data=data, headers={'auth-token': token})
        if rv._status_code == 200:
            assert True
        else:
            assert False
Example #5
0
    def put(self):
        #Cargar datos dinamicos
        data = request.data.decode()
        data = json.loads(data)
        idCurso = data['id']
        data = data['data']

        cursoBase = CursoBase.objects(id=data['curso_base']).first()
        asignatura = Asignatura.objects(id=data['asignatura']).first()
        institucion = Institucion.objects(id=data['institucion']).first()
        profesor = Profesor.objects(id=data['profesor']).first()
        alumnos = Alumno.objects(id=data['alumnos']).first()
        pregunta = Pregunta()

        curso = Curso.objects(id=idCurso).first()
        curso.nombre = data['nombre']
        curso.fecha_creacion = '10/06/2012'
        curso.preguntas = [pregunta]
        curso.asignatura = asignatura.id
        curso.institucion = institucion.id
        curso.profesor = profesor.id
        curso.alumnos = [alumnos.id]
        curso.activo = True
        curso.version = data['version']
        curso.curso_base = cursoBase.id
        curso.save()

        return {'test': 'test'}
Example #6
0
def test_put_recursos(client):
    curso = Curso.objects().first()
    institucion = Institucion.objects().first()
    asignatura = Asignatura.objects().first()
    profesor = Profesor.objects().first()
    alumno = Alumno.objects().first()
    grado = Grado.objects().first()
    curso_base = CursoBase.objects().first()

    if((institucion == None) or (asignatura == None) or \
       (profesor == None) or (alumno == None) or \
       (grado == None) or (curso_base == None) or (curso == None)):
        assert False
    data = {
        'nombre': 'nombre',
        'fecha_creacion': '01/01/2000',
        'preguntas': [],
        'asignatura': str(asignatura.id),
        'institucion': str(institucion.id),
        'profesor': str(profesor.id),
        'alumnos': str(alumno.id),
        'grado': str(grado.id),
        'activo': True,
        'version': 1,
        'curso_base': str(curso_base.id),
        'descripcion': 'descripcion del curso'
    }

    data_put = {'id': str(curso.id), 'data': data}
    data_put = json.dumps(data_put)
    data_put = data_put.encode()
    rv = client.put('/recursos', data=data_put)
    if rv._status_code == 200:
        return True
    assert False
Example #7
0
    def get(self, id):
        response = []
        grados = Grado.objects(institucion=id).all()
        for grado in grados:
            if grado.activo:
                cursosGrado = Curso.objects(grado=grado.id).count()
                alumnosGrados = 0
                for alumno in Alumno.objects(grado=grado.id).all():
                    if alumno.activo:
                        alumnosGrados = alumnosGrados + 1

                cursos = Curso.objects(grado=grado.id).all()
                aprobacion = 0
                for curso in cursos:
                    aprobacion = aprobacion + curso.aprobacion

                if cursosGrado > 0:
                    aporbacion = aprobacion / cursosGrado
                response.append({
                    'id': str(grado.id),
                    'nivel': grado.nivel,
                    'identificador': grado.identificador,
                    'cant_cursos': cursosGrado,
                    'cant_alumnos': alumnosGrados,
                    'aprobacion': aprobacion
                })
        return response
Example #8
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
Example #9
0
    def post(self):
        args = self.reqparse.parse_args()
        email = args.get("email")
        passwd = args.get("password")
        tipo = args.get("tipo")
        recursos = []
        user = None

        if tipo == 'ALUMNO':
            user = Alumno.objects(email=email).first()
            for recurso in Curso.objects(alumnos__in=[user]).all():
                recursos.append(recurso.to_dict())
        elif tipo == 'ADMINISTRADOR':
            user = administrador = Administrador.objects(email=email).first()
        elif tipo == 'PROFESOR':
            user = Profesor.objects(email=email).first()
            for recurso in Curso.objects(profesor=user).all():
                recursos.append(recurso.to_dict())

        if user and user.activo and user.check_password(passwd):
            return {
                'respuesta': {
                    'id': str(user.id)
                },
                'tipo': tipo,
                'token': str(user.get_token()),
                'recursos': recursos
            }
        print('testingggg')
        return {'respuesta': 'no_existe'}, 401
Example #10
0
 def get(self):
     response = []
     alumnos = Alumno.objects().all()
     for alumno in alumnos:
         if alumno.activo:
             response.append(alumno.to_dict())
     return response
Example #11
0
    def get(self, id_institucion):
        institucion = Institucion.objects(id = id_institucion).first()
        alumnos = []

        for alumno in Alumno.objects(institucion = id_institucion).all():
            alumnos.append(alumno.to_dict())
        return alumnos
Example #12
0
    def post(self, id_curso, nombre_usuario):
        alumno = Alumno.objects(nombre_usuario= nombre_usuario).first()
        alumnos = Alumno.objects().all()
        if alumno == None:
            return {'Response': 'no_existe'}
        curso = Curso.objects(id=id_curso).first()
        if not alumno.activo:
            return {'Response': 'no_existe'}

        for alumno_aux in curso.alumnos:
            if alumno_aux.id == alumno.id:
                return {'Response': 'si_pertenece'}
        
        curso.alumnos.append(alumno.id)
        curso.save()
        return {'Response': 'exito'}
Example #13
0
    def put(self, id):
        args = self.reqparse.parse_args()
        token = args.get('auth-token')
        apoderado = Apoderado.objects(id=id).first()
        administrador = Administrador.load_from_token(token)
        if apoderado == None and administrador == None:
            return {'response': 'user_invalid'}, 401
        data = request.data.decode()
        data = json.loads(data)
        apoderado.nombres = data['nombres']
        apoderado.apellido_paterno = data['apellido_paterno']
        apoderado.apellido_materno = data['apellido_materno']
        apoderado.telefono = data['telefono']
        apoderado.email = data['email']
        apoderado.rut = data['rut']
        direccion = Direccion(calle=data['calle'],
                              numero=data['numero'],
                              comuna=data['comuna'],
                              cas_dep_of=data['cas_dep_of'])
        apoderado.direccion = direccion

        #Asignar alumno
        alumno = Alumno.objects(rut=data['rut_alumno']).first()
        if alumno == None:
            return {'Response': 'not_alumno'}
        else:
            apoderado.alumno = alumno

        apoderado.save()
        return {'Response': 'exito', 'id': str(apoderado.id)}
Example #14
0
 def get(self, id):
     alumnos = []
     grado = Grado.objects(id=id).first()
     for alumno in Alumno.objects().all():
         if alumno.grado == grado:
             if alumno.activo:
                 alumnos.append(alumno.to_dict())
     return alumnos
Example #15
0
 def post(self):
     data = request.data.decode()
     data = json.loads(data)
     curso = Curso.objects(id=data['id_curso']).first()
     alumno = Alumno.objects(id=data['id_alumno']).first()
     curso.alumnos.remove(alumno)
     curso.save()
     return {'Response': 'exito'}
Example #16
0
def test_get_recurso_disponible(client):
    alumno = Alumno.objects().first()
    if alumno == None:
        assert False
    rv = client.get('/recursos/disponibles/alumno/' + str(alumno.id))
    if rv._status_code == 200:
        return True
    assert False
Example #17
0
def test_get_alumno_evaluaciones(client):
    alumno = Alumno.objects().first()
    if alumno == None:
        assert False
    rv = client.get('/alumno/evaluaciones/'+str(alumno.id))
    if rv._status_code == 200:
        return True
    assert False
Example #18
0
def test_delete_alumno(client):
    alumno = Alumno.objects().first()
    if alumno == None:
        assert False
    rv = client.delete('/alumnos/'+str(alumno.id))
    if rv._status_code == 200:
        return True
    assert False
Example #19
0
def test_get_finalizar_tutorial(client):
    alumno = Alumno.objects().first()
    if alumno == None:
        assert False
    rv = client.get('/alumno/finalizar/tutorial/'+str(alumno.id))
    if rv._status_code == 200:
        return True
    assert False
Example #20
0
def test_get_alumno_imagen_zoom(client):
    alumno = Alumno.objects().first()
    if alumno == None:
        assert False
    rv = client.get('/imagen/zoom/'+str(alumno.id))
    if rv._status_code == 200:
        return True
    assert False
Example #21
0
 def updateCantEstudiantes(self):
     from models.alumno import Alumno
     alumnos = Alumno.objects(curso=self.id).all()
     contador = 0
     for alumno in alumnos:
         if alumno.activo:
             contador = contador + 1
     self.cantidad_estudiantes = contador
     return True
Example #22
0
def test_post_alumno_recurso(client):
    curso = newCurso()
    alumno = Alumno.objects().first()

    if curso == None or alumno == None:
        assert False
    rv = client.post('/alumno/recurso/'+str(alumno.nombre_usuario)+'/'+str(curso.id))
    if rv._status_code == 200:
        return True
    assert False
Example #23
0
def test_get_recurso_detalle_alumno(client):
    alumno = Alumno.objects().first()
    recurso = Curso.objects().first()
    if alumno == None or recurso == None:
        assert False
    rv = client.get('/recurso/detalle/alumno/' + str(recurso.id) + '/' +
                    str(alumno.id))
    if rv._status_code == 200:
        return True
    assert False
def test_get_alumno(client):
    alumno = Alumno.objects().first()
    if alumno == None:
        assert True
    else:
        rv = client.get('/alumnos/' + str(alumno.id))
        if rv._status_code == 200:
            assert True
        else:
            assert False
Example #25
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 Alumno.objects(id=id).first().to_dict()
Example #26
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'}
Example #27
0
    def post(self, id):
        data = request.data.decode()
        data = json.loads(data)
        institucion = Institucion.objects(id=id).first()
        administrador = Administrador.objects(
            email=data['email'], institucion=institucion.id).first()
        profesor = Profesor.objects(email=data['email'],
                                    institucion=institucion.id).first()
        alumno = Alumno.objects(email=data['email'],
                                institucion=institucion.id).first()
        if administrador != None:
            if (administrador.check_password(data['password'])
                    or administrador.activo == False):
                token = administrador.get_token()
                return {
                    'respuesta': {
                        'id': str(administrador.id)
                    },
                    'tipo': 'ADMINISTRADOR',
                    'token': str(token)
                }
            else:
                return {'respuesta': 'no_existe'}, 401

        if profesor != None:
            if (profesor.check_password(data['password'])
                    or administrador.activo == False):
                token = profesor.get_token()
                return {
                    'respuesta': {
                        'id': str(profesor.id)
                    },
                    'tipo': 'PROFESOR',
                    'token': str(token)
                }
            else:
                return {'respuesta': 'no_existe'}, 401

        if alumno != None:
            if (alumno.check_password(data['password'])
                    or administrador.activo == False):
                token = alumno.get_token()
                return {
                    'respuesta': {
                        'id': str(alumno.id)
                    },
                    'tipo': 'ALUMNO',
                    'token': str(token)
                }
            else:
                return {'respuesta': 'no_existe'}, 401

        else:
            return {'respuesta': 'no_existe'}, 404
Example #28
0
 def get(self):
     args = self.reqparse.parse_args()
     token = args.get('auth-token')
     userAdmin = Administrador.load_from_token(token)
     userAlum = Alumno.load_from_token(token)
     userProf = Profesor.load_from_token(token)
     if userAdmin == None and userAlum == None and userProf == None:
         return {'response': 'user_invalid'}, 401
     institucion = None
     if userAdmin != None:
         institucion = Institucion.objects(
             id=userAdmin.institucion.id).first()
     if userAlum != None:
         institucion = Institucion.objects(
             id=userAlum.institucion.id).first()
     if userProf != None:
         institucion = Institucion.objects(
             id=userProf.institucion.id).first()
     if institucion == None:
         return {'response': 'colegio_invalid'}, 404
     response = []
     profesor = userProf
     grados = Grado.objects(profesor=profesor.id).all()
     for grado in grados:
         if grado.activo:
             alumnos = []
             cantidad_alumnos = Alumno.objects(grado=grado.id).count()
             suma_evaluaciones = 0
             for alumno in Alumno.objects(grado=grado.id).all():
                 alumnos.append(alumno.to_dict(full=False))
                 for evaluacion in Evaluacion.objects(alumno=alumno.id):
                     suma_evaluaciones = suma_evaluaciones + evaluacion.acierto
             grado = grado.to_dict()
             grado['alumnos'] = alumnos
             if cantidad_alumnos == 0:
                 grado['progreso'] = 0
             else:
                 grado['progreso'] = int(suma_evaluaciones /
                                         cantidad_alumnos)
             response.append(grado)
     return response
Example #29
0
    def delete(self, id_curso, nombre_usuario):
        alumno = Alumno.objects(nombre_usuario=nombre_usuario).first()
        alumnos = []
        curso = Curso.objects(id=id_curso, clon_padre=None).first()
        for alumno_curso in curso.alumnos:
            if (alumno.id != alumno_curso.id):
                alumnos.append(alumno.id)

        response = Curso.objects(id=id_curso,
                                 clon_padre=None).update(set__alumnos=alumnos)
        if (response):
            return {'Response': 'exito'}
Example #30
0
    def get(self,id_curso,id_alumno):
        curso = Curso.objects(id=id_curso).first()
        alumno = Alumno.objects(id=id_alumno).first()
        evaluacion = Evaluacion.objects(alumno=alumno.id, curso = curso.id ).first()
        respuesta = []
        alumno = alumno.to_dict()
        respuestas_alumno = []
        if evaluacion!=None:
            for habilidad_respuesta in curso.habilidades:
                preguntas_habilidad = 0
                respuestas_correctas_habilidad = 0
                for contenido in curso.contenidos:
                    for pregunta in contenido.preguntas:
                        if pregunta['habilidad'].id == habilidad_respuesta.id:
                            preguntas_habilidad = preguntas_habilidad+1
                            for respuesta_aux in evaluacion.respuestas:
                                if respuesta_aux.numero_pregunta == pregunta.numero:
                                    if respuesta_aux.correcta:
                                        respuestas_correctas_habilidad = respuestas_correctas_habilidad +1
                                    respuesta_aux = respuesta_aux.to_dict()
                                    respuesta_aux['pregunta'] = pregunta.texto
                                    respuestas_alumno.append(respuesta_aux)

                respuesta.append(
                    {   'respuesta_correctas': respuestas_correctas_habilidad,
                        'cantidad_preguntas': preguntas_habilidad,
                        'habilidad': habilidad_respuesta['nombre']
                    }
                )                      
            alumno['evaluacion'] = True
            alumno['progreso'] = evaluacion.acierto
            alumno['respuestas_data'] = respuestas_alumno
        else:
            for habilidad_respuesta in curso.habilidades:
                preguntas_habilidad = 0
                for contenido in curso.contenidos:
                    for pregunta in contenido.preguntas:
                        if pregunta['habilidad'] == habilidad_respuesta:
                            preguntas_habilidad = preguntas_habilidad+1
                respuesta.append(
                    { 'respuesta_correctas': 0,
                        'cantidad_preguntas': preguntas_habilidad,
                        'habilidad': habilidad_respuesta['nombre']
                    }
                )
            alumno['evaluacion'] = False
            alumno['progreso'] = 0
        
        alumno['respuestas'] = respuesta
        return {
                "curso": curso.to_dict(),
                "alumno": alumno
            }