Esempio n. 1
0
def CrudMatricula():
    u = Aluno(ra="12312",
              nome="dsydg",
              email="uhsdah",
              celular="12323",
              idcurso=1)
    u.save()
    return ("funfo")
Esempio n. 2
0
    def test_delete(self, get_client_db):
        # DELETE
        client, _db, headers = get_client_db
        clear_data(_db)

        mock_data = from_img_dir_to_bytes('./tests/test_images/ivete.jpg')

        # CENÁRIO 1 - Tentativa com turma não registrada
        response = client.delete('/turmas/FAKECLASS/participantes/1/', headers=headers)

        assert response.status_code == 400
        assert response.json['message'] == 'Não existe turma com esse codigo no banco de dados.'

        # CENÁRIO 2 - OK
        _db.session.add(Professor(nome='AAA', departamento='AAA', instituicao='AAA'))
        _db.session.add(Turma(nome='Metodologia Cientifica', codigo='SCC5900', semestre="2020.2", professor_id=1))
        _db.session.add(Aluno(nome='Ivete', curso='Danca', matricula='101010', embedding=mock_data))
        _db.session.add(Participante(turma_codigo='SCC5900', matricula='101010'))
        _db.session.commit()
        response = client.delete('/turmas/SCC5900/participantes/1/', headers=headers)
        assert response.status_code == 204

        # CENÁRIO 3 - Tentativa de excluir aluno não mais participante
        response = client.delete('/turmas/SCC5900/participantes/1/', headers=headers)
        assert response.status_code == 400
        assert response.json['message'] == 'Não existe participante com esse ID no banco de dados dessa turma.'

        # CLEAN UP
        clear_data(_db)
    def test_delete(self, get_client_db):
        # DELETE
        client, _db, headers = get_client_db
        clear_data(_db)
        
        # CENÁRIO 1 - Tentativa com turma não registrada
        response = client.delete('/turmas/SCC5900/frequencias/1/', headers=headers)

        assert response.status_code == 400
        assert response.json['message'] == 'Não existe turma com esse codigo no banco de dados.'

        # CENÁRIO 2 - OK
        _db.session.add(Professor(nome='AAA', departamento='AAA', instituicao='AAA'))
        _db.session.add(Turma(nome='Metodologia Cientifica', codigo='SCC5900', semestre="2020.2", professor_id=1))
        mock_img = from_img_dir_to_bytes('./tests/test_images/ivete.jpg')
        mock_face = array(process_faces(mock_img))
        mock_face_embedding = from_array_to_bytes(mock_face)
        _db.session.add(Aluno(nome='Ivete', curso='Danca', matricula='101010', embedding=mock_face_embedding))
        _db.session.add(Participante(turma_codigo='SCC5900', matricula='101010'))
        mock_data_img_turma = from_img_dir_to_bytes('./tests/test_images/ivete-e-boy.jpg')
        _db.session.add(Frequencia(turma_codigo='SCC5900', imagem_turma=mock_data_img_turma))
        _db.session.commit()

        response = client.delete('/turmas/SCC5900/frequencias/1/', headers=headers)
        assert response.status_code == 204

        # CENÁRIO 3 - Tentativa com frequência não mais presente
        response = client.delete('/turmas/SCC5900/frequencias/1/', headers=headers)
        assert response.status_code == 400
        assert response.json['message'] == 'Não existe frequencia com esse ID no banco de dados.'

        # CLEAN UP
        clear_data(_db)
Esempio n. 4
0
    def test_delete(self, get_client_db):
        # DELETE
        client, _db, headers = get_client_db
        clear_data(_db)

        # CENÁRIO 1 - OK
        mock_img = from_img_dir_to_bytes('./tests/test_images/door.jpg')
        _db.session.add(
            Aluno(nome='Ivete',
                  curso='Danca',
                  matricula='101010',
                  embedding=mock_img))
        _db.session.commit()

        response = client.delete('/alunos/101010/', headers=headers)
        assert response.status_code == 204

        # CENÁRIO 2 - Tentativa de deletar aluno que já não existe
        response = client.delete('/alunos/101010/', headers=headers)
        assert response.status_code == 400
        assert response.json[
            'message'] == 'Não existe aluno com essa matricula no banco de dados.'

        # CLEAN UP
        clear_data(_db)
Esempio n. 5
0
    def post(self):
        '''
        Registra um aluno no banco de dados
        '''
        parser = reqparse.RequestParser(bundle_errors=True)
        parser.add_argument('nome',
                            type=str,
                            required=True,
                            help='Nome do Aluno')
        parser.add_argument('matricula',
                            type=str,
                            required=True,
                            help='Matricula do Aluno')
        parser.add_argument('curso',
                            type=str,
                            required=True,
                            help='Curso de origem do Aluno na Universidade')
        parser.add_argument(
            'imagem_aluno',
            location='files',
            type=FileStorage,
            required=True,
            help='Imagem do Aluno a ser utilizada para extrair embedding.')
        args = parser.parse_args(strict=True)

        if Aluno.query.filter_by(matricula=args.matricula).first():
            abort(400, 'Já existe aluno com essa matrícula.')

        # Processa foto do aluno para pegar o array/embedding de features
        img_bytes = args.imagem_aluno.read()

        face_embedding = np.array(process_faces(img_bytes))

        if len(face_embedding) != 1:
            abort(
                400,
                'Foram detectadas nenhuma ou mais de uma face na imagem enviada.'
            )

        # Obtem o binario desse array
        face_binary = io.BytesIO()
        np.save(face_binary, face_embedding)
        face_binary.seek(0)

        aluno_selected = Aluno(nome=args.nome,
                               matricula=args.matricula,
                               curso=args.curso,
                               embedding=face_binary.read())

        db.session.add(aluno_selected)
        db.session.commit()

        return {'aluno.matricula': aluno_selected.matricula}, 201
Esempio n. 6
0
def aluno_index(request):
    if request.method == 'GET':
        return render(request, 'alunos.html')
    elif request.method == 'POST':
        try:
            data = dict(request.POST)
            data = {key: value[0] for (key, value) in data.items()}
            disciplinas_removidas = ''
            if data.get('disciplinas_removidas', False):
                disciplinas_removidas = data.pop(
                    'disciplinas_removidas').split(',')
            data['disciplinas'] = data['disciplinas'].split(',')
            if data.get('id', False):
                try:
                    aluno = Aluno.objects.get(id=data.pop('id')[0])
                    for key in data.keys():
                        if key != 'disciplinas' and data[key]:
                            setattr(aluno, key, data[key])
                        else:
                            for d_id in disciplinas_removidas:
                                aluno.disciplinas.remove(
                                    CursoDisciplina.objects.get(id=d_id))
                            current_ids = aluno.disciplinas.all().values_list(
                                'id')
                            current_ids = [ps[0] for ps in current_ids]
                            for disciplina in data['disciplinas']:
                                if int(disciplina) not in current_ids:
                                    aluno.disciplinas.add(
                                        CursoDisciplina.objects.get(
                                            id=disciplina))
                    if 'foto' in request.FILES.keys():
                        aluno.foto = request.FILES['foto']
                    aluno.save()
                    return HttpResponse(status=204)
                except:
                    return HttpResponse(status=400)
            else:
                try:
                    aluno = Aluno()
                    for key in data.keys():
                        if key != 'disciplinas' and data[key]:
                            setattr(aluno, key, data[key])
                    aluno.save()
                    for disciplina in data['disciplinas']:
                        aluno.disciplinas.add(
                            CursoDisciplina.objects.get(id=disciplina))
                    if 'foto' in request.FILES.keys():
                        aluno.foto = request.FILES['foto']
                    aluno.save()
                    return HttpResponse(status=200)
                except:
                    return HttpResponse(status=400)
        except:
            return HttpResponse(status=500)
Esempio n. 7
0
    def test_get(self, get_client_db):
        # GET
        client, _db, headers = get_client_db
        clear_data(_db)

        # CENÁRIO 1.1 - Tentativa com turma não registrada
        response = client.get('/turmas/FAKECLASS/participantes/', headers=headers)

        assert response.status_code == 400
        assert response.json['message'] == 'Não existe turma com esse codigo no banco de dados.'

        # CENÁRIO 1.b - Tentativa com turma não registrada
        response = client.get('/turmas/FAKECLASS/participantes/1/', headers=headers)

        assert response.status_code == 400
        assert response.json['message'] == 'Não existe turma com esse codigo no banco de dados.'

        # CENÁRIO 2 - Turma sem participantes
        _db.session.add(Professor(nome='AAA', departamento='AAA', instituicao='AAA'))
        _db.session.add(Turma(nome='Metodologia Cientifica', codigo='SCC5900', semestre="2020.2", professor_id=1))
        _db.session.commit()

        response = client.get('/turmas/SCC5900/participantes/', headers=headers)

        assert response.status_code == 200
        assert response.json == []

        # CENÁRIO 3 - OK
        mock_data = from_img_dir_to_bytes('./tests/test_images/ivete.jpg')
        _db.session.add(Aluno(nome='Ivete', curso='Danca', matricula='101010', embedding=mock_data))
        _db.session.add(Participante(turma_codigo='SCC5900', matricula='101010'))
        _db.session.commit()

        response = client.get('/turmas/SCC5900/participantes/', headers=headers)
        assert response.json[0]['matricula'] == '101010'

        response = client.get('/turmas/SCC5900/participantes/1/', headers=headers)
        assert response.json[0]['matricula'] == '101010'

        response = client.get('/turmas/SCC5900/participantes/?matricula=101010', headers=headers)
        assert response.json[0]['matricula'] == '101010'

        # CENÁRIO 4 - Tentativa de obter participante com ID sem registro no banco de dados
        response = client.get('/turmas/SCC5900/participantes/100/', headers=headers)

        assert response.status_code == 400
        assert response.json['message'] == 'Não existe participante com esse ID no banco de dados dessa turma.'

        # CLEAN UP
        clear_data(_db)
Esempio n. 8
0
    def test_get(self, get_client_db):
        # GET
        client, _db, headers = get_client_db
        clear_data(_db)

        # CENÁRIO 1 - Sem alunos registrados
        response = client.get('/alunos/', headers=headers)

        assert response.status_code == 200
        assert response.json == []

        # CENÁRIO 2 - Aluno não registrado
        response = client.get('/alunos/101010/', headers=headers)

        assert response.status_code == 400
        assert response.json[
            'message'] == 'Não existe aluno com essa matricula no banco de dados.'

        # CENÁRIO 3 - 1 Aluno registrado
        mock_data = from_img_dir_to_bytes('./tests/test_images/ivete.jpg')
        _db.session.add(
            Aluno(nome='Ivete',
                  curso='Danca',
                  matricula='101010',
                  embedding=mock_data))
        _db.session.commit()

        response = client.get('/alunos/', headers=headers)
        assert response.json[0]['nome'] == 'Ivete'

        response = client.get('/alunos/101010/', headers=headers)
        assert response.json[0]['nome'] == 'Ivete'

        response = client.get('/alunos/?nome=Ivete', headers=headers)
        assert response.json[0]['nome'] == 'Ivete'

        response = client.get('/alunos/?matricula=101010', headers=headers)
        assert response.json[0]['nome'] == 'Ivete'

        response = client.get('/alunos/?curso=Danca', headers=headers)
        assert response.json[0]['nome'] == 'Ivete'

        # CLEAN UP
        clear_data(_db)
Esempio n. 9
0
    def test_put(self, get_client_db):
        # PUT
        client, _db, headers = get_client_db
        clear_data(_db)
        mock_img = from_img_dir_to_bytes('./tests/test_images/door.jpg')
        _db.session.add(
            Aluno(nome='Ivete',
                  curso='Danca',
                  matricula='101010',
                  embedding=mock_img))
        _db.session.commit()

        # CENÁRIO 1 - Tentativa de atualização de aluno que não existe
        response = client.put('/alunos/202020/', headers=headers)
        assert response.status_code == 400
        assert response.json[
            'message'] == 'Não existe aluno com essa matricula no banco de dados.'

        # CENÁRIO 2 - Tentativa de atualização de registro de aluno com imagem sem rosto
        file = os.path.join("./tests/test_images/door.jpg")
        img_file = (file, './tests/test_images/door.jpg')
        data = {"imagem_aluno": img_file}

        response = client.put('/alunos/101010/', data=data, headers=headers)
        assert response.status_code == 400
        assert response.json[
            'message'] == 'Foram detectadas nenhuma ou mais de uma face na imagem enviada.'

        # CENÁRIO 3 - OK
        file = os.path.join("./tests/test_images/claudia.jpg")
        img_file = (file, './tests/test_images/claudia.jpg')

        data = {
            "nome": "Claudia",
            "curso": "Audiovisual",
            "matricula": "303030",
            "imagem_aluno": img_file
        }

        response = client.put('/alunos/101010/', data=data, headers=headers)
        assert response.status_code == 204

        # CLEAN UP
        clear_data(_db)
Esempio n. 10
0
    def test_post(self, get_client_db):
        # POST
        client, _db, headers = get_client_db
        clear_data(_db)
        
        _db.session.add(Professor(nome='AAA', departamento='AAA', instituicao='AAA'))
        _db.session.add(Turma(nome='Metodologia Cientifica', codigo='SCC5900', semestre="2020.2", professor_id=1))
        _db.session.commit()

        # CENÁRIO 1 - Tentativa com turma não registrada
        response = client.post('/turmas/FAKECLASS/participantes/', data={'matricula': '1'}, headers=headers)

        assert response.status_code == 400
        assert response.json['message'] == 'Não existe turma com esse codigo no banco de dados.'
        
        
        # CENÁRIO 2 - Aluno com matrícula não registrada no banco de dados
        data = {
            "matricula": "101010",
        }
        response = client.post('/turmas/SCC5900/participantes/', data=data, headers=headers)
        assert response.status_code == 400
        assert response.json['message'] == 'Não existe aluno com essa matrícula no banco de dados.'

        # CENÁRIO 3 - OK
        mock_data = from_img_dir_to_bytes('./tests/test_images/ivete.jpg')
        _db.session.add(Aluno(nome='Ivete', curso='Danca', matricula='101010', embedding=mock_data))
        _db.session.commit()        

        response = client.post('/turmas/SCC5900/participantes/', data=data, headers=headers)

        assert response.status_code == 201
        assert response.json == {'participante.id': 1}

        # CENÁRIO 4 - Aluno já registrado na disciplina
        response = client.post('/turmas/SCC5900/participantes/', data=data, headers=headers)

        assert response.status_code == 400
        assert response.json['message'] == 'Esse aluno já foi registrado nessa disciplina.'

        # CLEAN UP
        clear_data(_db)
    def test_get(self, get_client_db):
        # GET
        client, _db, headers = get_client_db
        clear_data(_db)

        _db.session.add(Professor(nome='AAA', departamento='AAA', instituicao='AAA'))
        _db.session.add(Turma(nome='Metodologia Cientifica', codigo='SCC5900', semestre="2020.2", professor_id=1))
        mock_img = from_img_dir_to_bytes('./tests/test_images/ivete.jpg')
        mock_face = array(process_faces(mock_img))
        mock_face_embedding = from_array_to_bytes(mock_face)
        _db.session.add(Aluno(nome='Ivete', curso='Danca', matricula='101010', embedding=mock_face_embedding))
        _db.session.add(Participante(turma_codigo='SCC5900', matricula='101010'))
        mock_data_img_turma = from_img_dir_to_bytes('./tests/test_images/ivete-e-boy.jpg')
        _db.session.add(Frequencia(turma_codigo='SCC5900', imagem_turma=mock_data_img_turma))
        _db.session.add(Presenca(frequencia_id=1, participante_id=1, status=True))
        _db.session.add(AnotacaoErros(frequencia_id=1, falsos_positivos=1, falsos_negativos=0))
        _db.session.commit()


        # CENÁRIO 1 - Tentativa com turma não registrada
        response = client.get('/turmas/FAKECLASS/frequencias/1/erros/', headers=headers)

        assert response.status_code == 400
        assert response.json['message'] == 'Não existe turma com esse codigo no banco de dados.'

        # CENÁRIO 2 - Tentativa com frequência não registrada
        response = client.get('/turmas/SCC5900/frequencias/100/erros/', headers=headers)

        assert response.status_code == 400
        assert response.json['message'] == 'Não existe frequencia com esse ID no banco de dados.'

        # CENÁRIO 3 - OK
        response = client.get('/turmas/SCC5900/frequencias/1/erros/', headers=headers)

        assert response.json[0]['frequencia_id'] == 1
        assert response.json[0]['falsos_positivos'] == 1
        assert response.json[0]['falsos_negativos'] == 0

        # CLEAN UP
        clear_data(_db)
    def test_post(self, get_client_db):
        # POST
        client, _db, headers = get_client_db
        clear_data(_db)

        # CENÁRIO 1 - Tentativa com turma não registrada
        file = os.path.join("./tests/test_images/ivete-e-boy.jpg")
        mock_data_img_turma = (file, './tests/test_images/ivete-e-boy.jpg')
        data = {
            "imagem_turma": mock_data_img_turma
        }

        response = client.post('/turmas/SCC5900/frequencias/', data=data, headers=headers)
        assert response.status_code == 400 
        assert response.json['message'] == 'Não existe turma com esse codigo no banco de dados.'

        # CENÁRIO 2 - Tentativa com turma sem participantes
        _db.session.add(Professor(nome='AAA', departamento='AAA', instituicao='AAA'))
        _db.session.add(Turma(nome='Metodologia Cientifica', codigo='SCC5900', semestre="2020.2", professor_id=1))
        _db.session.commit()

        response = client.post('/turmas/SCC5900/frequencias/', data=data, headers=headers)
        assert response.status_code == 400 
        assert response.json['message'] == 'Não existem participantes registrados na turma.'
        
        # CENÁRIO 3 - OK
        mock_img = from_img_dir_to_bytes('./tests/test_images/ivete.jpg')
        mock_face = array(process_faces(mock_img))
        mock_face_embedding = from_array_to_bytes(mock_face)
        _db.session.add(Aluno(nome='Ivete', curso='Danca', matricula='101010', embedding=mock_face_embedding))
        _db.session.add(Participante(turma_codigo='SCC5900', matricula='101010'))
        _db.session.commit()        
        
        response = client.post('/turmas/SCC5900/frequencias/', data=data, headers=headers)
        assert response.status_code == 201
        assert response.json == {'frequencia.id': 1}

        # CLEAN UP
        clear_data(_db)
Esempio n. 13
0
    def test_post(self, get_client_db):
        # POST
        client, _db, headers = get_client_db
        clear_data(_db)

        _db.session.add(
            Professor(nome='AAA', departamento='AAA', instituicao='AAA'))
        _db.session.add(
            Turma(nome='Metodologia Cientifica',
                  codigo='SCC5900',
                  semestre="2020.2",
                  professor_id=1))
        mock_img = from_img_dir_to_bytes('./tests/test_images/ivete.jpg')
        mock_face = array(process_faces(mock_img))
        mock_face_embedding = from_array_to_bytes(mock_face)
        _db.session.add(
            Aluno(nome='Ivete',
                  curso='Danca',
                  matricula='101010',
                  embedding=mock_face_embedding))
        _db.session.add(
            Participante(turma_codigo='SCC5900', matricula='101010'))
        mock_data_img_turma = from_img_dir_to_bytes(
            './tests/test_images/ivete-e-boy.jpg')
        _db.session.add(
            Frequencia(turma_codigo='SCC5900',
                       imagem_turma=mock_data_img_turma))
        _db.session.commit()

        # CENÁRIO 1 - Matrícula inválida
        data = {"matricula": 101011, "status": True}

        response = client.post('/turmas/SCC5900/frequencias/1/presencas/',
                               data=data,
                               headers=headers)
        assert response.status_code == 400
        assert response.json[
            'message'] == 'Não existe aluno com essa matricula participando da disciplina no banco de dados.'

        # CENÁRIO 2 - OK
        data = {"matricula": 101010, "status": True}

        response = client.post('/turmas/SCC5900/frequencias/1/presencas/',
                               data=data,
                               headers=headers)

        assert response.status_code == 201
        assert response.json == {'participante.id': 1}

        # CENÁRIO 3 - Aluno não registrado
        response = client.post('/turmas/SCC5900/frequencias/1/presencas/',
                               data=data,
                               headers=headers)

        assert response.status_code == 400
        assert response.json[
            'message'] == 'Registro de presença desse aluno já está presente no banco de dados.'

        # CENÁRIO 4 - Não existe turma com o código indicado
        response = client.post('/turmas/FAKECLASS/frequencias/1/presencas/',
                               data=data,
                               headers=headers)

        assert response.status_code == 400
        assert response.json[
            'message'] == 'Não existe turma com esse codigo no banco de dados.'

        # CENÁRIO 5 - Não existe frequencia com o ID indicado
        response = client.post('/turmas/SCC5900/frequencias/100/presencas/',
                               data=data,
                               headers=headers)

        assert response.status_code == 400
        assert response.json[
            'message'] == 'Não existe frequencia com esse ID no banco de dados.'

        # CLEAN UP
        clear_data(_db)
Esempio n. 14
0
    def test_delete(self, get_client_db):
        # DELETE
        client, _db, headers = get_client_db
        clear_data(_db)

        _db.session.add(
            Professor(nome='AAA', departamento='AAA', instituicao='AAA'))
        _db.session.add(
            Turma(nome='Metodologia Cientifica',
                  codigo='SCC5900',
                  semestre="2020.2",
                  professor_id=1))
        mock_img = from_img_dir_to_bytes('./tests/test_images/ivete.jpg')
        mock_face = array(process_faces(mock_img))
        mock_face_embedding = from_array_to_bytes(mock_face)
        _db.session.add(
            Aluno(nome='Ivete',
                  curso='Danca',
                  matricula='101010',
                  embedding=mock_face_embedding))
        _db.session.add(
            Participante(turma_codigo='SCC5900', matricula='101010'))
        mock_data_img_turma = from_img_dir_to_bytes(
            './tests/test_images/ivete-e-boy.jpg')
        _db.session.add(
            Frequencia(turma_codigo='SCC5900',
                       imagem_turma=mock_data_img_turma))
        _db.session.add(
            Presenca(frequencia_id=1, participante_id=1, status=True))
        _db.session.add(
            AnotacaoErros(frequencia_id=1,
                          falsos_positivos=0,
                          falsos_negativos=0))
        _db.session.commit()

        # CENÁRIO 1 - Matrícula inválida
        data = {
            "matricula": 202020,
        }
        response = client.delete('/turmas/SCC5900/frequencias/1/presencas/',
                                 data=data,
                                 headers=headers)
        assert response.status_code == 400
        assert response.json[
            'message'] == 'Não existe aluno com essa matricula participando da disciplina no banco de dados.'

        # CENÁRIO 2 - OK
        data = {
            "matricula": 101010,
        }
        response = client.delete('/turmas/SCC5900/frequencias/1/presencas/',
                                 data=data,
                                 headers=headers)
        assert response.status_code == 204

        # CENÁRIO 3 - Não existe turma com o código indicado
        response = client.delete('/turmas/FAKECLASS/frequencias/1/presencas/',
                                 data=data,
                                 headers=headers)

        assert response.status_code == 400
        assert response.json[
            'message'] == 'Não existe turma com esse codigo no banco de dados.'

        # CENÁRIO 4 - Não existe frequencia com o ID indicado
        response = client.delete('/turmas/SCC5900/frequencias/100/presencas/',
                                 data=data,
                                 headers=headers)

        assert response.status_code == 400
        assert response.json[
            'message'] == 'Não existe frequencia com esse ID no banco de dados.'

        # CLEAN UP
        clear_data(_db)
Esempio n. 15
0
def ConstroiMatricula():
    u = Aluno(ra = "1111",nome = "Nikito",email = "*****@*****.**",celular = "1111",idcurso = 1)
    u.save()
    return ("Funcionou")