Esempio n. 1
0
 def gerar_arquivos_docx(db, session, documento, filename, fonte_docx_id, oid):
     out_filename = '{}_{}_{}.docx'.format(
         filename,
         oid,
         datetime.strftime(datetime.now(), '%Y-%m-%dT%H-%M-%S')
     )
     try:
         ovr_dict = OVRDict(fonte_docx_id).get_dict(
             db=db, session=session, id=oid)
     except NoResultFound:
         raise NoResultFound('{} {} não encontrado!'.format(
             FonteDocx(fonte_docx_id), oid))
     print(ovr_dict)
     if isinstance(ovr_dict, list):
         if len(ovr_dict) == 0:
             raise NoResultFound(f'Marcas não encontradas na ovr {oid}.')
         logger.info('Gerando marcas')
         arquivos = []
         for odict in ovr_dict:
             document = get_doc_generico_ovr(odict, documento,
                                             current_user.name)
             nome_arquivo = '%s_%s.docx' % (out_filename[:-4], odict.get('nome'))
             arquivos.append(nome_arquivo)
             document.save(os.path.join(
                 get_user_save_path(), nome_arquivo))
     else:
         document = get_doc_generico_ovr(ovr_dict, documento,
                                         current_user.name)
         document.save(os.path.join(get_user_save_path(), out_filename))
         arquivos = [out_filename]
     return arquivos
Esempio n. 2
0
 def auto_contrafacao():
     session = app.config['dbsession']
     db = app.config['mongo_risco']
     ovr_id = None
     tg_id = request.args.get('tg_id')
     try:
         usuario = get_usuario(session, current_user.name)
         if usuario is None:
             raise Exception('Erro: Usuário não encontrado!')
         if tg_id:
             tg = get_tgovr_one(session, tg_id)
             ovr_id = tg.ovr_id
             ovr_dict = OVRDict(FonteDocx.TG_Ficha).get_dict(
                 db=db, session=session, id=tg.id)
             if ovr_dict:
                 document = gera_auto_contrafacao(ovr_dict, current_user.name)
                 nome = 'Auto de Infração'
                 out_filename = '{}_{}_{}.docx'.format(
                     nome,
                     ovr_id,
                     datetime.strftime(datetime.now(), '%Y-%m-%dT%H-%M-%S')
                 )
                 document.save(os.path.join(
                     get_user_save_path(), out_filename))
                 return redirect('static/%s/%s' % (current_user.name, out_filename))
     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 redirect(url_for('autos_contrafacao', ovr_id=ovr_id))
Esempio n. 3
0
 def gera_docx():
     """Preenche um docx com dados da Fonte especicada (OVR, RVF, etc)"""
     session = app.config['dbsession']
     db = app.config['mongo_risco']
     formdocx = FiltroDocxForm()
     modeloform = ModeloDocxForm()
     title_page = 'Gerador de Documentos'
     try:
         lista_docx = get_docx_choices(session)
         formdocx = FiltroDocxForm(lista_docx=lista_docx)
         if request.method == 'POST':
             formdocx = FiltroDocxForm(request.form, lista_docx=lista_docx)
             formdocx.validate()
             docx = get_docx(session, formdocx.docx_id.data)
             if request.form.get('excluir'):
                 session.delete(docx)
                 session.commit()
                 return redirect(url_for('gera_docx'))
             elif request.form.get('preencher'):
                 documento = docx.get_documento(db)
                 arquivos = gerar_arquivos_docx(db, session, documento, docx.filename,
                                                docx.fonte_docx_id, formdocx.oid.data)
                 return render_template('gera_docx.html',
                                        formdocx=formdocx,
                                        modeloform=modeloform,
                                        arquivos=arquivos)
             elif request.form.get('visualizar'):
                 ovr_dict = OVRDict(docx.fonte_docx_id).get_dict(
                     db=db, session=session, id=formdocx.oid.data)
                 if isinstance(ovr_dict, list):
                     ovr_dict = ovr_dict[0]
                 if isinstance(ovr_dict, dict):
                     ovr_dict.pop('historico', None)
                     # ovr_dict.pop('tgs', None)
                     # for rvf in ovr_dict.get('rvfs', []):
                     #    rvf.pop('imagens', None)
                 return render_template('gera_docx.html', formdocx=formdocx,
                                        modeloform=modeloform, ovr_dict=ovr_dict)
             else:  # Baixar modelo
                 documento = docx.get_documento(db)
                 out_filename = '{}_{}.docx'.format(
                     docx.filename,
                     datetime.strftime(datetime.now(), '%Y-%m-%dT%H-%M-%S')
                 )
                 with open(os.path.join(get_user_save_path(), out_filename), 'wb') as out:
                     out.write(documento.read())
                 return redirect('static/%s/%s' % (current_user.name, out_filename))
     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('gera_docx.html',
                            formdocx=formdocx,
                            modeloform=modeloform,
                            title_page=title_page)
Esempio n. 4
0
 def risco():
     """Função para escolher parâmetros de risco e visualizar resultados."""
     mongodb = app.config['mongodb']
     lista_risco = []
     total_linhas = 0
     csv_salvo = None
     planilha_atual = request.args.get('planilha_atual', '')
     active_tab = request.values.get('active_tab', 'carga')
     forms = {
         'carga': RiscosAtivosForm,
         'recintos': RecintoRiscosAtivosForm
     }
     FormClass = forms[active_tab]
     riscos_ativos_form = FormClass()
     title_page = 'Risco'
     if request.method == 'GET':
         riscos_ativos_form = FormClass(request.values,
                                        datainicio=date.today() -
                                        timedelta(days=5),
                                        datafim=date.today())
     lista_csv = get_lista_csv(get_user_save_path())
     if planilha_atual:
         csv_salvo = planilha_atual
         lista_risco, riscos_ativos = le_csv(
             os.path.join(get_user_save_path(), csv_salvo))
         riscos_ativos_form = FormClass(MultiDict(riscos_ativos))
         # print(lista_risco)
         total_linhas = len(lista_risco)
         # Limita resultados em 100 linhas na tela e adiciona imagens
         lista_risco = append_images(mongodb, lista_risco[:100], active_tab)
     return render_template('aplica_risco.html',
                            oform=riscos_ativos_form,
                            lista_risco=lista_risco,
                            total_linhas=total_linhas,
                            csv_salvo=csv_salvo,
                            lista_csv=lista_csv,
                            planilha_atual=planilha_atual,
                            active_tab=active_tab,
                            title_page=title_page)
Esempio n. 5
0
 def comunicado_contrafacao():
     print(request.url)
     session = app.config['dbsession']
     db = app.config['mongo_risco']
     ovr_id = request.args.get('ovr_id')
     representante_id = request.args.get('representante_id')
     try:
         usuario = get_usuario(session, current_user.name)
         if usuario is None:
             raise Exception('Erro: Usuário não encontrado!')
         if ovr_id:
             try:
                 ovr_dicts = OVRDict(FonteDocx.Marcas).get_dict(
                     db=db, session=session, id=ovr_id)
             except NoResultFound:
                 raise NoResultFound(f'Marcas não encontradas para Ficha {ovr_id}.')
             if len(ovr_dicts) == 0:
                 raise NoResultFound(f'Marcas não encontradas na ovr {ovr_id}.')
             logger.info('Gerando marcas')
             document = None
             representante_id2 = None
             for ovr_dict in ovr_dicts:
                 representante_id2 = ovr_dict.get('representante_id')
                 representante_nome = ovr_dict.get('representante_nome')
                 if representante_id2 and (str(representante_id2) == representante_id):
                     document = gera_comunicado_contrafacao(ovr_dict, current_user.name,
                                                            'termo' in request.url)
                     break
             if representante_id2 and document:
                 nome = 'Comunicado_de_Contrafacao'
                 if 'termo' in request.url:
                     nome = 'Termo de retirada de amostras'
                 out_filename = '{}_{}_{}_{}.docx'.format(
                     nome,
                     ovr_id,
                     representante_nome,
                     datetime.strftime(datetime.now(), '%Y-%m-%dT%H-%M-%S')
                 )
                 document.save(os.path.join(
                     get_user_save_path(), out_filename))
                 return redirect('static/%s/%s' % (current_user.name, out_filename))
     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 redirect(url_for('autos_contrafacao', ovr_id=ovr_id))
Esempio n. 6
0
 def exporta_docx():
     """Preenche um docx com dados da OVR"""
     session = app.config['dbsession']
     db = app.config['mongo_risco']
     try:
         ovr_id = request.values['ovr_id']
         out_filename = 'relatorio%s.docx' % ovr_id
         ovr_dict = monta_ovr_dict(db, session, int(ovr_id))
         document = get_doc_generico_ovr(ovr_dict, 'relatorio.docx')
         document.save(os.path.join(get_user_save_path(), out_filename))
         return redirect('static/%s/%s' % (current_user.name, out_filename))
     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('gera_docx.html')
Esempio n. 7
0
    def exporta_csv():
        """Grava em arquivo parâmetros ativos.

        """
        session = app.config.get('dbsession')
        try:
            riscos_out_filename = 'riscos_ativos' + \
                                  datetime.strftime(datetime.now(), '%Y-%m%dT%H%M%S') + \
                                  '.csv'
            riscos_ativos = riscosativos(session, current_user.name)
            with open(os.path.join(get_user_save_path(), riscos_out_filename),
                      'w',
                      newline='') as riscos_out:
                for risco in riscos_ativos:
                    linha_out = ';'.join(
                        (risco.campo, risco.valor, risco.motivo))
                    riscos_out.write(linha_out + '\n')
            return redirect('static/%s/%s' %
                            (current_user.name, riscos_out_filename))
        except Exception as err:
            logger.warning(err, exc_info=True)
            flash(str(err))
        return redirect(url_for('edita_risco'))
Esempio n. 8
0
 def rvf_OVR():
     session = app.config.get('dbsession')
     mongodb = app.config.get('mongo_risco')
     rvf_id = request.args.get('rvf_id')
     tipo = request.args.get('tipo', 'OVR')
     try:
         rvf = get_rvf(session, rvf_id)
         if rvf is None:
             flash('rvf %s não encontrado.' % rvf_id)
             return redirect(url_for('pesquisa_rvf'))
         OVR_out_filename = '{}_FCC{}-{}.docx'.format(
             tipo, rvf_id,
             datetime.strftime(datetime.now(), '%Y-%m%dT%H%M%S'))
         rvf_dump = OVRDict(1).monta_rvf_dict(mongodb, session, rvf_id)
         if tipo == 'OVR':
             document = gera_OVR(rvf_dump, current_user.name)
         else:
             document = gera_taseda(rvf_dump, current_user.name)
         document.save(os.path.join(get_user_save_path(), OVR_out_filename))
         return redirect('static/%s/%s' % (current_user.name, OVR_out_filename))
     except Exception as err:
         logger.warning(err, exc_info=True)
         flash(str(err))
     return redirect(url_for('rvf', id=rvf_id, _scheme='https'))
Esempio n. 9
0
 def aplica_risco():
     """Função para escolher parâmetros de risco e visualizar resultados."""
     dbsession = app.config.get('dbsession')
     user_name = current_user.name
     active_tab = request.values.get('active_tab', 'carga')
     forms = {
         'carga': RiscosAtivosForm,
         'recintos': RecintoRiscosAtivosForm
     }
     dict_risco_function = {
         'carga': mercanterisco,
         'recintos': recintosrisco
     }
     FormClass = forms[active_tab]
     risco_function = dict_risco_function[active_tab]
     planilha_atual = ''
     if request.method == 'POST':
         try:
             riscos_ativos_form = FormClass(request.form)
             riscos_ativos_form.planilha_atual = ''
             riscos_ativos = riscosativos(dbsession, user_name)
             filtros = {}
             filtros['datainicio'] = riscos_ativos_form.datainicio.data
             filtros['datafim'] = riscos_ativos_form.datafim.data
             for fieldname, value in riscos_ativos_form.data.items():
                 if value is True:
                     riscos_ativos_campo = [
                         risco.valor for risco in riscos_ativos
                         if risco.campo == fieldname
                     ]
                     filtros[fieldname] = riscos_ativos_campo
             lista_risco, str_filtros = risco_function(
                 dbsession,
                 filtros,
                 operador_ou=riscos_ativos_form.operadorOU.data)
             # print('***********', lista_risco)
             if not lista_risco or len(lista_risco) == 0:
                 raise ValueError(
                     'Não foram encontrados resultados para o filtro!!')
             planilha_atual = save_planilharisco(lista_risco,
                                                 get_user_save_path(),
                                                 str_filtros)
             return redirect(
                 url_for('risco',
                         planilha_atual=planilha_atual,
                         active_tab=active_tab))
         except Exception as err:
             logger.error(err, exc_info=True)
             flash('Erro ao aplicar risco! '
                   'Detalhes no log da aplicação.')
             flash(str(type(err)))
             flash(str(err))
     # Em caso de exceção ou em um get aqui...
     riscos_ativos_form = FormClass(datainicio=date.today() -
                                    timedelta(days=5),
                                    datafim=date.today())
     return render_template('aplica_risco.html',
                            oform=riscos_ativos_form,
                            lista_risco=[],
                            total_linhas=0,
                            csv_salvo='',
                            lista_csv=[],
                            planilha_atual=planilha_atual,
                            active_tab=active_tab)