def save(self, commit=True): professor = super(ProfessorForm,self).save(commit=False) professor.set_password("123@mudar") professor.perfil = 'P' if commit: Professor.save() return professor
def addCourse(request): # Retrieve the course data input by the user courseId = request.POST['course_id'] courseName = request.POST['course'] subject = request.POST['subject'] prof = (request.POST['firstname'], request.POST['lastname']) # check to see if course already exists. If so, redirect to it try: theCourse = Course.objects.get(courseID=courseId) return HttpResponseRedirect('/viewcourse/' + courseId) except: # Add the new course to the database newCourse = Course(courseID=courseId, name=courseName, subject=subject) newCourse.save() # see if the input prof exists, if not then create it try: profs = Professor.objects.get(first_name=prof[0], last_name=prof[1]) profs.addCourse(newCourse) profs.save() except: newProf = Professor(first_name=prof[0], last_name=prof[1], subject=subject) newProf.save() newProf.addCourse(newCourse) newProf.save() return HttpResponseRedirect('/viewcourse/' + courseId)
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 - 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 post(self): ''' Registra um professor no banco de dados. ''' parser = reqparse.RequestParser(bundle_errors=True) parser.add_argument('nome', type=str, required=True, help='Nome do professor') parser.add_argument('departamento', type=str, required=True, help='Nome do departamento') parser.add_argument('instituicao', type=str, required=True, help='Instituicao de ensino') args = parser.parse_args(strict=True) professor_selected = Professor.query.filter_by(**args) if professor_selected.first(): return abort( 400, 'Professor já registrado com essas informações (nome, departamento, instituição) no banco de dados.' ) professor_selected = Professor(**args) db.session.add(professor_selected) db.session.commit() db.session.refresh(professor_selected) # Para obter o ID de registro. return {'professor.id': professor_selected.id}, 201
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 - 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 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) # CENÁRIO 1 - Nenhum professor registrado response = client.get('/professores/', headers=headers) assert response.status_code == 200 assert response.json == [] # CENÁRIO 2 - Não existe professor com o ID response = client.get('/professores/1/', headers=headers) assert response.status_code == 400 assert response.json[ 'message'] == 'Não existe professor com esse ID no banco de dados.' # CENÁRIO 3 - OK _db.session.add( Professor(nome='AAA', departamento='AAA', instituicao='AAA')) _db.session.commit() response = client.get('/professores/', headers=headers) assert response.json[0]['nome'] == 'AAA' response = client.get('/professores/1/', headers=headers) assert response.json[0]['nome'] == 'AAA' response = client.get('/professores/?nome=AAA', headers=headers) assert response.json[0]['nome'] == 'AAA' response = client.get('/professores/?departamento=AAA', headers=headers) assert response.json[0]['nome'] == 'AAA' response = client.get('/professores/?instituicao=AAA', headers=headers) assert response.json[0]['nome'] == 'AAA' # 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.commit() response = client.delete('/professores/1/', headers=headers) assert response.status_code == 204 # CENÁRIO 2 - Tentativa de deletar um ID que não está mais no banco de dados response = client.delete('/professores/1/', 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_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_put(self, get_client_db): # PUT 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.commit() data = {"nome": "Leonardo"} response = client.put('/professores/1/', data=data, headers=headers) assert response.status_code == 204 # CENÁRIO 2 - Tentativa de atualizar com ID não presente no banco de dados response = client.put('/professores/100/', data=data, headers=headers) assert response.json[ 'message'] == 'Não existe professor com esse ID no banco de dados.' # CLEAN UP clear_data(_db)
def get_queryset(self): search = self.request.GET.get('search') if search: filtro = None try: number_search = int(search) filtro = Q(matricula__exact=number_search) except: pass if not filtro: filtro = Q(nome__icontains=search) else: filtro |= Q(nome__icontains=search) code_titulacao = Professor.get_choice(search) filtro |= Q(endereco__icontains=search) | Q( telefone__icontains=search) | Q(titulacao=code_titulacao) return Professor.objects.filter(filtro) return Professor.objects.all()
def test_post(self, get_client_db): # POST client, _db, headers = get_client_db clear_data(_db) data = { "nome": "Metodologia Científica", "codigo": "SCC5900", "semestre": "2021.2", "professor_id": 1 } # CENÁRIO 1 - Não existe professor com o ID indicado que irá assumir disciplina response = client.post('/turmas/', data=data, headers=headers) assert response.status_code == 400 assert response.json[ 'message'] == 'Não existe professor com esse ID no banco de dados.' # CENÁRIO 3 - OK _db.session.add( Professor(nome='AAA', departamento='AAA', instituicao='AAA')) _db.session.commit() response = client.post('/turmas/', data=data, headers=headers) assert response.status_code == 201 assert response.json == {'turma.codigo': 'SCC5900'} # CENÁRIO 3 - Tentativa de criar instância de turma com mesmo código response = client.post('/turmas/', data=data, headers=headers) assert response.status_code == 400 assert response.json[ 'message'] == 'Já existe turma com esse código no banco de dados.' # 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)
# import sys # sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n" % __file__) # sys.exit(1) # # import settings # # if __name__ == "__main__": # execute_manager(settings) import os import sys if __name__ == "__main__": os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings") from django.core.management import execute_from_command_line execute_from_command_line(sys.argv) if sys.argv[1] == "syncdb": from django.contrib.auth.models import User from core.models import Professor try: User.objects.get(username="******") except User.DoesNotExist: u = User(username="******", first_name="Administrador", last_name=" ", email="*****@*****.**", is_superuser=True) u.set_password(123456) u.save() p = Professor(user=u) p.save()