def test_evento_RVF(self): aovr = ovr.OVR() aovr.numeroCEmercante = '1234' aovr.responsavel_cpf = 'teste' session.add(aovr) session.commit() session.refresh(aovr) # Não gera evento, mas gera rvf nova para a OVR rvf = cadastra_rvf(session, 'teste', {}, aovr.id) assert len(rvf.ovr.historico) == 0 # Gera evento InspecaoNaoInvasiva rvf = cadastra_rvf(session, 'teste', {'id': rvf.id, 'numerolote': '1', 'inspecaonaoinvasiva': True}) assert len(rvf.ovr.historico) == 1 # Não gera evento rvf = cadastra_rvf(session, 'teste', {'id': rvf.id, 'numerolote': '1', 'inspecaonaoinvasiva': True}) assert len(rvf.ovr.historico) == 1 rvf = cadastra_rvf(session, 'teste', {'id': rvf.id, 'numerolote': '1', 'inspecaonaoinvasiva': False}) assert len(rvf.ovr.historico) == 1 # Gera evento RVF (mais de 3 imagens e inspecaonaoinvasiva False for i in range(5): imagem_rvf = ImagemRVF() imagem_rvf.rvf_id = rvf.id session.add(imagem_rvf) session.commit() session.refresh(rvf) rvf = cadastra_rvf(session, 'teste', {'id': rvf.id, 'numerolote': '1', 'inspecaonaoinvasiva': False}) assert len(rvf.ovr.historico) == 2
def test_programa_RVF(self): aovr = ovr.OVR() aovr.numeroCEmercante = '123' aovr.user_name = 'teste' session.add(aovr) session.commit() session.refresh(aovr) # Testar que programa_rvf não gera evento, mas depois a edição gera!!! # (e que gera somente um evento) rvf = programa_rvf_container(None, None, # Não testará imagens, apenas eventos session, aovr, 'ABCD123456', '') assert rvf.ovr_id == aovr.id assert rvf.numeroCEmercante == aovr.numeroCEmercante assert rvf.numerolote == 'ABCD123456' assert rvf.user_name is None assert len(rvf.ovr.historico) == 0 rvf = cadastra_rvf(session, 'teste', {'id': rvf.id, 'numerolote': '1', 'inspecaonaoinvasiva': True}) assert rvf.numerolote == '1' assert rvf.user_name == 'teste' assert rvf.descricao is None assert len(rvf.ovr.historico) == 1 rvf = cadastra_rvf(session, 'teste', {'id': rvf.id, 'numerolote': '2', 'descricao': 'TESTANDO'}) assert rvf.numerolote == '2' assert rvf.descricao == 'TESTANDO' assert len(rvf.ovr.historico) == 1
def test_cadastra_RVF_outro_user(self): setor1 = self.create_setor('1', 'Setor 1') setor2 = self.create_setor('2', 'Setor 2') user1 = self.create_usuario('user_1', 'Usuario 1', setor1) user2 = self.create_usuario('user_2', 'Usuario 2', setor1) ovr = self.create_OVR_valido() ovr.setor_id = '1' session.add(ovr) session.commit() session.refresh(ovr) # Atribui OVR ao user_2 evento = atribui_responsavel_ovr(session, ovr.id, 'user_2', None) assert ovr.responsavel_cpf == 'user_2' # user_1 tenta cadastrar RVF with self.assertRaises(ESomenteUsuarioResponsavel): rvf = cadastra_rvf(session, 'user_1', {}, ovr.id) # user_2 cadastra RVF rvf = cadastra_rvf(session, 'user_2', {}, ovr.id) assert rvf.user_name == 'user_2'
def nova_rvf_json(): session = app.config.get('dbsession') try: cpf = request.json['cpf'] ovr_id = request.json['ovr_id'] orvf = cadastra_rvf(session, cpf, request.json, ovr_id) session.refresh(orvf) except Exception as err: logger.error(err, exc_info=True) return jsonify({'msg': str(err)}), 500 return jsonify(orvf.dump()), 201
def test_cadastra_RVF(self): setor1 = self.create_setor('1', 'Setor 1') setor2 = self.create_setor('2', 'Setor 2') user1 = self.create_usuario('user_1', 'Usuario 1', setor1) user2 = self.create_usuario('user_2', 'Usuario 2', setor1) ovr = self.create_OVR_valido() ovr.setor_id = '1' session.add(ovr) session.commit() session.refresh(ovr) rvf = cadastra_rvf(session, 'user_1', {}, ovr.id) assert rvf.user_name == 'user_1'
def test_evento_InspecaoNaoInvasiva(self): aovr = ovr.OVR() aovr.numeroCEmercante = '123' aovr.fase = 1 aovr.responsavel_cpf = 'teste' user_name = 'teste3' session.add(aovr) session.commit() session.refresh(aovr) with self.assertRaises(ENaoAutorizado): rvf = cadastra_rvf(session, user_name, {}, aovr.id) rvf = cadastra_rvf(session, 'teste', {'inspecaonaoinvasiva': True}, aovr.id) assert rvf.ovr_id == aovr.id assert rvf.numeroCEmercante == aovr.numeroCEmercante evento = rvf.ovr.historico[0] assert evento.ovr_id == aovr.id assert rvf.numerolote is None with self.assertRaises(ESomenteUsuarioResponsavel): rvf = cadastra_rvf(session, 'teste2', {'id': rvf.id, 'numerolote': '1'}) rvf = cadastra_rvf(session, 'teste', {'id': rvf.id, 'numerolote': '1'}) assert rvf.numerolote == '1'
def registrar_rvf(): session = app.config.get('dbsession') mongodb = app.config.get('mongo_risco') ovr_id = request.args.get('ovr_id') get_usuario_validando(session, current_user.id) marcas = get_marcas_choice(session) infracoes = get_infracoes_choice(session) rvf_form = RVFForm(marcas=marcas, infracoes=infracoes) tiposapreensao = get_tiposapreensao_choice(session) apreensao_form = ApreensaoRVFForm(tiposapreensao=tiposapreensao) if request.method == 'POST': rvf_params = request.get_json() ovr_id = rvf_params['ovr_id'] lacres = rvf_params['lacresVerificados'] infracoes = rvf_params['infracoesEncontradas'] marcas = rvf_params['marcasEncontradas'] apreensoes = rvf_params['apreensoesObtidas'] imagens = rvf_params['imagensRecebidas'] new_rvf = cadastra_rvf(session, user_name=current_user.name, params=rvf_params) session.refresh(new_rvf) for lacre in lacres: inclui_lacre_verificado(session, new_rvf.id, lacre) for infracao in infracoes: inclui_infracao_encontrada(session, new_rvf.id, infracao) for marca in marcas: inclui_marca_encontrada(session, new_rvf.id, marca) for apreensao in apreensoes: apreensao['rvf_id'] = new_rvf.id gera_apreensao_rvf(session, apreensao) for imagem in imagens: content = base64.b64decode(imagem['content'].split(',')[1]) filename = imagem['name'] dataModificacao = datetime.now() rvf_id = new_rvf.id inclui_imagemrvf(mongodb, session, content, filename, dataModificacao, rvf_id) return jsonify({'id': new_rvf.id}), 200 return render_template('registrar_rvf.html', ovr_id=ovr_id, rvf_form=rvf_form, apreensao_form=apreensao_form)
def test_a08_encerrar_ficha_com_resultado_com_auditor(self): # Kanoo cria ficha limpa, se autoatribui e tenta encerrar ficha com resultado, com auditor definido self.login('kanoo', 'kanoo') params_ovr = { 'tipooperacao': 'Mercadoria Abandonada', 'recinto_id': 1, 'numeroCEmercante': '131415161718192' } ovr1 = self.create_OVR(params_ovr, 'kanoo') self.session.refresh(ovr1) assert ovr1.id is not None assert ovr1.responsavel is None assert ovr1.fase == 0 # Atribui responsabilidade para kanoo atribui_responsavel_ovr(session, ovr_id=ovr1.id, responsavel='kanoo', user_name=ovr1.user_name) # Kanoo se torna o auditor responsável pela ficha atribui_responsavel_ovr(session, ovr_id=ovr1.id, responsavel='kanoo', user_name=ovr1.user_name, auditor='kanoo') # Cria RVF tipo_apreensao = gera_objeto(TipoApreensao(), session, params={'descricao': 'Cocaína'}) lista_apreensoes = [] params_apreensao = { 'tipo_id': 1, 'peso': 10, 'descricao': 'Cocaína no tênis' } apreensao = gera_apreensao_rvf(session, params=params_apreensao) lista_apreensoes.append(apreensao) lista_imagens = [] params_rvf = { 'numerolote': 'ABCD1234567', 'descricao': 'RFV número 01', 'imagens': lista_imagens, 'apreensoes': lista_apreensoes, 'ovr_id': ovr1.id } cadastra_rvf(session, user_name=ovr1.user_name, params=params_rvf) # Tenta encerrar ficha lista_de_rvfs_apreensoes = lista_de_rvfs_e_apreensoes(session, ovr_id=ovr1.id) payload = {'lista_de_rvfs_apreensoes': lista_de_rvfs_apreensoes} encerramento_ovr = self.app.get('/encerramento_ovr?ovr_id=%s' % ovr1.id) assert encerramento_ovr.status_code == 200 text = str(encerramento_ovr.data) self.render_page(text) csrf_token = self.get_token(text) tipo_resultado_pos = text.find('name="tipo_resultado"') tipo_resultado = text[tipo_resultado_pos + 29:tipo_resultado_pos + 30] payload = { 'csrf_token': csrf_token, 'ovr_id': ovr1.id, 'responsavel': ovr1.responsavel.nome, 'apreensao': apreensao.peso, 'auditor': ovr1.cpfauditorresponsavel, 'tipo_resultado': tipo_resultado } ficha_encerrada = self.app.post('/encerrar_ficha', data=payload, follow_redirects=True) assert ficha_encerrada.status_code == 200 # self.render_page(str(ficha_encerrada.data)) session.delete(ovr1) self.logout()
def rvf(): session = app.config.get('dbsession') get_usuario_validando(session, current_user.id) tiposapreensao = get_tiposapreensao_choice(session) apreensao_form = ApreensaoRVFForm(tiposapreensao=tiposapreensao) apreensoes_rvf = [] infracoes = [] infracoes_encontradas = [] marcas = [] marcas_encontradas = [] anexos = [] lacres_verificados = [] arvf = None rvf_form = RVFForm() title_page = 'RVF' try: if request.method == 'POST': rvf_form = RVFForm(request.form) rvf_form.adata.data = request.form['adata'] rvf_form.ahora.data = request.form['ahora'] rvf_form.validate() arvf = cadastra_rvf(session, user_name=current_user.name, params=dict(rvf_form.data.items())) session.refresh(arvf) return redirect(url_for('rvf', id=arvf.id)) # ELSE ovr_id = request.args.get('ovr') if ovr_id is not None: arvf = cadastra_rvf(session, ovr_id=ovr_id, user_name=current_user.name) session.refresh(arvf) return redirect(url_for('rvf', id=arvf.id)) # ELSE db = app.config['mongo_risco'] marcas = get_marcas(session) infracoes = get_infracoes(session) rvf_id = request.args.get('id') title_page = 'RVF ' + rvf_id if rvf_id is not None: arvf = get_rvf(session, rvf_id) print('arvf.inspecaonaoinvasiva', arvf.inspecaonaoinvasiva) if arvf is not None: rvf_form = RVFForm(**arvf.__dict__) if arvf.datahora: rvf_form.adata.data = arvf.datahora.date() rvf_form.ahora.data = arvf.datahora.time() rvf_form.id.data = arvf.id rvf_form.peso_manifestado.data = get_peso(session, rvf_form.numeroCEmercante.data, rvf_form.numerolote.data) apreensoes_rvf = arvf.apreensoes infracoes_encontradas = arvf.infracoesencontradas marcas_encontradas = arvf.marcasencontradas lacres_verificados = arvf.lacresverificados # Temporário - para recuperar imagens 'perdidas' na transição ressuscita_anexos_perdidos(db, session, arvf) anexos = get_ids_anexos_ordenado(arvf) usuario = get_usuario(session, arvf.user_name) if usuario: rvf_form.user_descricao.data = usuario.nome except Exception as err: logger.error(err, exc_info=True) flash('Erro! Detalhes no log da aplicação.') flash(str(type(err))) flash(str(err)) return render_template('rvf.html', infracoes=infracoes, marcas=marcas, oform=rvf_form, apreensao_form=apreensao_form, apreensoes=apreensoes_rvf, infracoes_encontradas=infracoes_encontradas, marcas_encontradas=marcas_encontradas, lacres_verificados=lacres_verificados, anexos=anexos, title_page=title_page)