def CrudMatricula(): u = Aluno(ra="12312", nome="dsydg", email="uhsdah", celular="12323", idcurso=1) u.save() return ("funfo")
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)
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)
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
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)
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)
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)
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)
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)
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)
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)
def ConstroiMatricula(): u = Aluno(ra = "1111",nome = "Nikito",email = "*****@*****.**",celular = "1111",idcurso = 1) u.save() return ("Funcionou")