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_put(self, get_client_db): # PUT client, _db, headers = get_client_db clear_data(_db) # CENÁRIO 1 - Tentativa de atualizar turma com código não presente no banco de dados data = {"nome": "Ciencias Sociais"} response = client.put('/turmas/SCC5900/', 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 - 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.commit() response = client.put('/turmas/SCC5900/', data=data, headers=headers) assert response.status_code == 204 # CENÁRIO 3 - Tentativa de atualizar turma com ID de professor não existente data = {"professor_id": 100} response = client.put('/turmas/SCC5900/', data=data, headers=headers) assert response.status_code == 400 assert response.json[ 'message'] == 'Não existe professor 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 _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.delete('/turmas/SCC5900/', headers=headers) assert response.status_code == 204 # CENÁRIO 2 - Tentativa de deletar turma que não existe mais no banco de dados response = client.delete('/turmas/SCC5900/', headers=headers) assert response.status_code == 400 assert response.json[ 'message'] == 'Não existe turma com esse codigo no banco de dados.' # 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.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 - Não existem turmas registradas ainda response = client.get('/turmas/', headers=headers) assert response.status_code == 200 assert response.json == [] # CENÁRIO 2 - Não existe turma com o código indicado response = client.get('/turmas/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 3 - 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.commit() response = client.get('/turmas/', headers=headers) assert response.json[0]['nome'] == 'Metodologia Cientifica' response = client.get('/turmas/?nome=Metodologia%20Cientifica', headers=headers) assert response.json[0]['nome'] == 'Metodologia Cientifica' response = client.get('/turmas/?codigo=SCC5900', headers=headers) assert response.json[0]['nome'] == 'Metodologia Cientifica' response = client.get('/turmas/?semestre=2020.2', headers=headers) assert response.json[0]['nome'] == 'Metodologia Cientifica' response = client.get('/turmas/?professor_id=1', headers=headers) assert response.json[0]['nome'] == 'Metodologia Cientifica' response = client.get('/turmas/SCC5900/', headers=headers) assert response.json[0]['nome'] == 'Metodologia Cientifica' # CLEAN UP clear_data(_db)
def novoTurma(request): contexto = {} contexto['cursos'] = Curso.objects.all() if request.POST: form = TurmaForm(request.POST) if form.is_valid(): form.save() return HttpResponseRedirect("/painel/administrador/turmas") else: contexto['form'] = form contexto['turma'] = Turma(form) else: contexto['form'] = TurmaForm() return render(request, "administrador/turmas/novo.html", contexto)
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 editarTurma(request, idTurma): turma = Turma.objects.get(id=idTurma) contexto = {} contexto['cursos'] = Curso.objects.all() if request.POST: form = TurmaForm(request.POST, instance=turma) if form.is_valid(): form.save() return HttpResponseRedirect("/painel/administrador/turmas") else: contexto['form'] = form contexto['turma'] = Turma(form) else: contexto['form'] = TurmaForm(instance=turma) contexto['turma'] = turma return render(request, "administrador/turmas/editar.html", contexto)
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 carregar_turma(row): # TODO fazer o teste se a turma já existe aqui e retornar! siape = row[2] if row[2] != '' else None id_componente_curricular = row[5] if ComponenteCurricular.objects.filter( id_componente=id_componente_curricular).exists(): cc = ComponenteCurricular.objects.get( id_componente=id_componente_curricular) docente = carregar_docente_substituto(siape=siape, componente=cc) curriculo = get_curriculo_by_cc(id_componente_curricular) id_turma = row[0] codigo_turma = row[1] matricula_docente_externo = row[3] if row[3] != '' else None observacao = row[4].strip() ch_dedicada_periodo = row[6] if row[6] != '' else None nivel_ensino = row[7] campus_turma = row[8] local = row[9] ano = row[10] if row[10] != '' else None periodo = row[11] if row[11] != '' else None data_inicio_str = row[12] data_inicio = parse(data_inicio_str) data_fim_str = row[13] data_fim = parse(data_fim_str) descricao_horario = row[14] total_solicitacoes = row[15] if row[15] != '' else None capacidade_aluno = row[16] tipo = row[17] if row[17] != '' else None distancia = row[18] if row[18] == 'true' else False data_consolidacao_str = row[19] if row[19] != '' else None data_consolidacao = data_consolidacao_str if data_consolidacao_str is None \ else parse(data_consolidacao_str) agrupadora = row[20] if row[20] == 'true' else False id_turma_agrupadora = row[21] if row[21] != '' else None qtd_aulas_lancadas = row[22] if row[22] != '' else None situacao_turma = row[23] convenio = row[24] modalidade_participantes = row[25] if not Turma.objects.filter(id_turma=id_turma).exists(): print("Adicionando Turma " + id_turma + " - " + codigo_turma + "- " + cc.codigo + " - " + cc.nome + " - " + descricao_horario) turma = Turma(id_turma=id_turma, codigo_turma=codigo_turma, docente=docente, matricula_docente_externo=matricula_docente_externo, observacao=observacao, componente=cc, ch_dedicada_periodo=ch_dedicada_periodo, nivel_ensino=nivel_ensino, campus_turma=campus_turma, local=local, ano=ano, periodo=periodo, data_inicio=data_inicio, data_fim=data_fim, descricao_horario=descricao_horario, total_solicitacoes=total_solicitacoes, capacidade_aluno=capacidade_aluno, tipo=tipo, distancia=distancia, data_consolidacao=data_consolidacao, agrupadora=agrupadora, id_turma_agrupadora=id_turma_agrupadora, qtd_aulas_lancadas=qtd_aulas_lancadas, situacao_turma=situacao_turma, convenio=convenio, modalidade_participantes=modalidade_participantes) turma.save() else: print('.', end="")
def criar_turmas(): print("Criando Turmas 2019.1 e 2019.2 para os Cursos do CERES ...!") with open('turmas-2019.2.csv') as csvfile: turmas = csv.reader(csvfile, delimiter=';') next(turmas) # skip header for row in turmas: siape = row[2] if row[2] != '' else None id_componente_curricular = row[5] if ComponenteCurricular.objects.filter( id_componente=id_componente_curricular).exists(): cc = ComponenteCurricular.objects.get( id_componente=id_componente_curricular) print(cc) docente = None if siape != '' and Docente.objects.filter( siape=siape).exists(): # Professores Substitutos e Temporários não estão na lista docente = Docente.objects.get(siape=siape) print(docente) id_turma = row[0] codigo_turma = row[1] matricula_docente_externo = row[3] if row[3] != '' else None if row[3] != '' and row[3] is not None: print(matricula_docente_externo) observacao = row[4].strip() ch_dedicada_periodo = row[6] if row[6] != '' else None nivel_ensino = row[7] campus_turma = row[8] local = row[9] ano = row[10] if row[10] != '' else None periodo = row[11] if row[11] != '' else None data_inicio_str = row[12] data_inicio = parse(data_inicio_str) data_fim_str = row[13] data_fim = parse(data_fim_str) descricao_horario = row[14] total_solicitacoes = row[15] if row[15] != '' else None capacidade_aluno = row[16] tipo = row[17] if row[17] != '' else None distancia = row[18] if row[18] == 'true' else False data_consolidacao_str = row[19] if row[19] != '' else None data_consolidacao = data_consolidacao_str if data_consolidacao_str is None \ else parse(data_consolidacao_str) agrupadora = row[20] if row[20] == 'true' else False id_turma_agrupadora = row[21] if row[21] != '' else None qtd_aulas_lancadas = row[22] if row[22] != '' else None situacao_turma = row[23] convenio = row[24] modalidade_participantes = row[25] turma = Turma( id_turma=id_turma, codigo_turma=codigo_turma, siape=siape, matricula_docente_externo=matricula_docente_externo, observacao=observacao, componente=cc, ch_dedicada_periodo=ch_dedicada_periodo, nivel_ensino=nivel_ensino, campus_turma=campus_turma, local=local, ano=ano, periodo=periodo, data_inicio=data_inicio, data_fim=data_fim, descricao_horario=descricao_horario, total_solicitacoes=total_solicitacoes, capacidade_aluno=capacidade_aluno, tipo=tipo, distancia=distancia, data_consolidacao=data_consolidacao, agrupadora=agrupadora, id_turma_agrupadora=id_turma_agrupadora, qtd_aulas_lancadas=qtd_aulas_lancadas, situacao_turma=situacao_turma, convenio=convenio, modalidade_participantes=modalidade_participantes) turma.save()
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)