def criar_exclusao(request, hash): from emensageriapro.settings import BASE_DIR db_slug = 'default' dict_hash = get_hash_url(hash) s2410_evtcdbenin_id = int(dict_hash['id']) if s2410_evtcdbenin_id: s2410_evtcdbenin = get_object_or_404(s2410evtCdBenIn.objects.using(db_slug), excluido=False, id=s2410_evtcdbenin_id) arquivo = 'arquivos/Eventos/s2410_evtcdbenin/%s.xml' % s2410_evtcdbenin.identidade if not os.path.exists(BASE_DIR + '/' + arquivo): xml = gerar_xml_assinado(s2410_evtcdbenin_id, db_slug) texto = ler_arquivo('arquivos/Eventos/s2410_evtcdbenin/%s.xml' % s2410_evtcdbenin.identidade) texto = texto.replace('<inclusao>','<exclusao>').replace('</inclusao>','</exclusao>') texto = texto.replace('<alteracao>','<exclusao>').replace('</alteracao>','</exclusao>') salvar_arquivo('arquivos/Eventos/s2410_evtcdbenin/%s_exclusao_temp.xml' % s2410_evtcdbenin.identidade, texto) from emensageriapro.funcoes_importacao import importar_arquivo dados = importar_arquivo('arquivos/Eventos/s2410_evtcdbenin/%s_exclusao_temp.xml' % s2410_evtcdbenin.identidade, request) from emensageriapro.esocial.views.s2410_evtcdbenin import identidade_evento dent = identidade_evento(dados['identidade'], db_slug) s2410evtCdBenIn.objects.using(db_slug).filter(id=dados['identidade']).update(status=0, arquivo_original=0, arquivo='') usuario_id = request.session['usuario_id'] gravar_auditoria(u'{}', u'{"funcao": "Evento de exclusão de identidade %s criado a partir da duplicação do evento %s"}' % (dent, s2410_evtcdbenin.identidade), 's2410_evtcdbenin', dados['identidade'], usuario_id, 1) messages.success(request, 'Evento de exclusão criado com sucesso!') url_hash = base64.urlsafe_b64encode( '{"print": "0", "id": "%s"}' % dados['identidade'] ) return redirect('s2410_evtcdbenin_salvar', hash=url_hash) messages.error(request, 'Erro ao criar evento de exclusão!') return redirect(request.session['retorno_pagina'], hash=request.session['retorno_hash'])
def duplicar(request, hash): from emensageriapro.settings import BASE_DIR db_slug = 'default' dict_hash = get_hash_url(hash) s2241_evtinsapo_id = int(dict_hash['id']) if s2241_evtinsapo_id: s2241_evtinsapo = get_object_or_404(s2241evtInsApo.objects.using(db_slug), excluido=False, id=s2241_evtinsapo_id) arquivo = 'arquivos/Eventos/s2241_evtinsapo/%s.xml' % s2241_evtinsapo.identidade if not os.path.exists(BASE_DIR + '/' + arquivo): xml = gerar_xml_assinado(s2241_evtinsapo_id, db_slug) texto = ler_arquivo('arquivos/Eventos/s2241_evtinsapo/%s.xml' % s2241_evtinsapo.identidade) salvar_arquivo('arquivos/Eventos/s2241_evtinsapo/%s_duplicado_temp.xml' % s2241_evtinsapo.identidade, texto) from emensageriapro.funcoes_importacao import importar_arquivo dados = importar_arquivo('arquivos/Eventos/s2241_evtinsapo/%s_duplicado_temp.xml' % s2241_evtinsapo.identidade, request) from emensageriapro.esocial.views.s2241_evtinsapo import identidade_evento dent = identidade_evento(dados['identidade'], db_slug) s2241evtInsApo.objects.using(db_slug).filter(id=dados['identidade']).update(status=0, arquivo_original=0, arquivo='') messages.success(request, 'Evento duplicado com sucesso! Foi criado uma nova identidade para este evento!') url_hash = base64.urlsafe_b64encode( '{"print": "0", "id": "%s"}' % dados['identidade'] ) usuario_id = request.user.id gravar_auditoria(u'{}', u'{"funcao": "Evento de identidade %s criado a partir da duplicação do evento %s"}' % (dent, s2241_evtinsapo.identidade), 's2241_evtinsapo', dados['identidade'], usuario_id, 1) return redirect('s2241_evtinsapo_salvar', hash=url_hash) messages.error(request, 'Erro ao duplicar evento!') return redirect(request.session['retorno_pagina'], hash=request.session['retorno_hash'])
def criar_alteracao(request, hash): from emensageriapro.settings import BASE_DIR db_slug = 'default' dict_hash = get_hash_url(hash) r2040_evtassocdesprep_id = int(dict_hash['id']) if r2040_evtassocdesprep_id: r2040_evtassocdesprep = get_object_or_404(r2040evtAssocDespRep.objects.using(db_slug), excluido=False, id=r2040_evtassocdesprep_id) arquivo = 'arquivos/Eventos/r2040_evtassocdesprep/%s.xml' % r2040_evtassocdesprep.identidade if not os.path.exists(BASE_DIR + '/' + arquivo): xml = gerar_xml_assinado(r2040_evtassocdesprep_id, db_slug) texto = ler_arquivo('arquivos/Eventos/r2040_evtassocdesprep/%s.xml' % r2040_evtassocdesprep.identidade) texto = texto.replace('<inclusao>','<alteracao>').replace('</inclusao>','</alteracao>') salvar_arquivo('arquivos/Eventos/r2040_evtassocdesprep/%s_alteracao_temp.xml' % r2040_evtassocdesprep.identidade, texto) from emensageriapro.funcoes_importacao import importar_arquivo dados = importar_arquivo('arquivos/Eventos/r2040_evtassocdesprep/%s_alteracao_temp.xml' % r2040_evtassocdesprep.identidade, request) from emensageriapro.efdreinf.views.r2040_evtassocdesprep import identidade_evento dent = identidade_evento(dados['identidade'], db_slug) r2040evtAssocDespRep.objects.using(db_slug).filter(id=dados['identidade']).update(status=0, arquivo_original=0, arquivo='') usuario_id = request.user.id gravar_auditoria(u'{}', u'{"funcao": "Evento de de alteração de identidade %s criado a partir da duplicação do evento %s"}' % (dent, r2040_evtassocdesprep.identidade), 'r2040_evtassocdesprep', dados['identidade'], usuario_id, 1) messages.success(request, 'Evento de alteração criado com sucesso!') url_hash = base64.urlsafe_b64encode( '{"print": "0", "id": "%s"}' % dados['identidade'] ) return redirect('r2040_evtassocdesprep_salvar', hash=url_hash) messages.error(request, 'Erro ao criar evento de alteração!') return redirect(request.session['retorno_pagina'], hash=request.session['retorno_hash'])
def arquivos_recuperacao(request, hash): db_slug = 'default' try: usuario_id = request.user.id dict_hash = get_hash_url(hash) arquivos_id = int(dict_hash['id']) for_print = int(dict_hash['print']) except: usuario_id = False return redirect('login') usuario = get_object_or_404(Usuarios.objects.using(db_slug), excluido=False, id=usuario_id) pagina = ConfigPaginas.objects.using(db_slug).get(excluido=False, endereco='arquivos') permissao = ConfigPermissoes.objects.using(db_slug).get( excluido=False, config_paginas=pagina, config_perfis=usuario.config_perfis) dict_permissoes = json_to_dict(usuario.config_perfis.permissoes) paginas_permitidas_lista = usuario.config_perfis.paginas_permitidas modulos_permitidos_lista = usuario.config_perfis.modulos_permitidos arquivos = get_object_or_404(Arquivos.objects.using(db_slug), excluido=False, id=arquivos_id) from emensageriapro.settings import BASE_DIR from emensageriapro.funcoes_importacao import importar_arquivo if arquivos.permite_recuperacao: dados = importar_arquivo(arquivos.arquivo, request, 0) if dados: messages.warning( request, 'Arquivo recuperado com sucesso! Por gentileza confira todo o conteúdo do mesmo, pois este processo não passou por validação' ) else: messages.error( request, 'Arquivo não pode ser recuperado pois já existe um arquivo com a mesma identidade cadastrado!' ) else: messages.error(request, 'Este arquivo não permite ser recuperado!') atualizar_versao() return redirect('arquivos', hash=request.session['retorno_hash'])
def scripts_processar_arquivos(request): #atualizar_importador() import os from emensageriapro.settings import BASE_DIR from emensageriapro.funcoes_importacao import importar_arquivo, get_identidade_evento, get_versao_evento from emensageriapro.funcoes_validacoes import VERSAO_ATUAL db_slug = 'default' for_print = 0 executar_sql(""" UPDATE public.importacao_arquivos_eventos SET excluido=True WHERE importacao_arquivos_id IN (SELECT id FROM importacao_arquivos WHERE excluido=True);""", False) arquivos = ImportacaoArquivosEventos.objects.using( db_slug ).filter(excluido = False, status=0).exclude(id=0).all() for arquivo in arquivos: error_list = [] ident = str(arquivo.id) while len(ident) < 10: ident = '0' + ident filename = arquivo.arquivo dados_eventos = {} import os.path if os.path.isfile(BASE_DIR+'/'+filename): dados_eventos['identidade_evento'] = get_identidade_evento(ler_arquivo(filename)) dados_eventos['versao'] = get_versao_evento(ler_arquivo(filename)) existe_identidade = executar_sql( "SELECT count(*) FROM public.transmissor_eventos_esocial WHERE identidade='%s'" % dados_eventos['identidade_evento'], True) existe_identidade = existe_identidade[0][0] if existe_identidade: dados_eventos['status'] = 5 error_list = ['Não é possível importar o evento pois o ID já existe em nossa base!'] origem = BASE_DIR + '/' + arquivo.arquivo destino = BASE_DIR + '/' + arquivo.arquivo.replace('/aguardando/', '/erro/' + ident + '__') os.system('mv %s %s' % (origem, destino)) dados_eventos['arquivo'] = arquivo.arquivo.replace('/aguardando/', '/erro/'+ ident + '__') ia_id = arquivo.importacao_arquivos_id gravar_nome_arquivo(dados_eventos['arquivo'], 1) elif dados_eventos['versao'] in VERSAO_ATUAL: quant_erros, error_list = validar_arquivo(filename, request, lang='pt') if not quant_erros or (quant_erros == 1 and 'Signature' in str(error_list) ): dados_importacao = importar_arquivo(filename, request, 1) #dados_eventos['evento'] = dados_eventos['tabela'] #del dados_eventos['tabela'] dados_eventos['evento'] = dados_importacao['tabela'] dados_eventos['status'] = 1 origem = BASE_DIR + '/' + arquivo.arquivo destino = BASE_DIR + '/' + arquivo.arquivo.replace('/aguardando/', '/processado/' + ident + '__') os.system('mv %s %s' % (origem, destino)) dados_eventos['arquivo'] = '/' + arquivo.arquivo.replace('/aguardando/', '/processado/' + ident + '__') atualizar_arquivo_tabela(dados_eventos['evento'], dados_importacao['identidade'], dados_eventos['arquivo'], arquivo.id) gravar_nome_arquivo(dados_eventos['arquivo'], 1) else: #dados_eventos['evento'] = dados_eventos['tabela'] #del dados_eventos['tabela'] dados_eventos['status'] = 2 origem = BASE_DIR + '/' + arquivo.arquivo destino = BASE_DIR + '/' + arquivo.arquivo.replace('/aguardando/', '/erro/' + ident + '__') os.system('mv %s %s' % (origem, destino)) dados_eventos['arquivo'] = arquivo.arquivo.replace('/aguardando/', '/erro/' + ident + '__') gravar_nome_arquivo(dados_eventos['arquivo'], 1) else: dados_eventos['status'] = 2 error_list = ['Versão do evento incompatível!'] origem = BASE_DIR + '/' + arquivo.arquivo destino = BASE_DIR + '/' + arquivo.arquivo.replace('/aguardando/', '/erro/' + ident + '__') os.system('mv %s %s' % (origem, destino)) dados_eventos['arquivo'] = arquivo.arquivo.replace('/aguardando/', '/erro/'+ ident + '__') ia_id = arquivo.importacao_arquivos_id gravar_nome_arquivo(dados_eventos['arquivo'], 1) else: dados_eventos['status'] = 2 error_list = ['Arquivo não encontrado!'] dados_eventos['validacoes'] = '<br>'.join(error_list) dados_eventos['criado_em'] = datetime.datetime.now() dados_eventos['criado_por_id'] = 1 dados_eventos['excluido'] = False ImportacaoArquivosEventos.objects.using(db_slug).filter(id=arquivo.id).update(**dados_eventos) ia_id = arquivo.importacao_arquivos_id atualizar_importador() return HttpResponse('')
def scripts_validacao_automatica(request): import os from emensageriapro.settings import BASE_DIR from emensageriapro.padrao import executar_sql for_print = 0 executar_sql( """ UPDATE public.importacao_arquivos_eventos SET excluido=True WHERE importacao_arquivos_id IN (SELECT id FROM importacao_arquivos WHERE excluido=True) ; """, False) db_slug = 'default' arquivos = ImportacaoArquivosEventos.objects.using(db_slug).filter( excluido=False, status=0).exclude(id=0).all() for arquivo in arquivos: filename = arquivo.arquivo arq_compl = filename from emensageriapro.funcoes_importacao import validar_arquivo, importar_arquivo dados_eventos = {} dados_eventos, request, quant_erros, error_list = validar_arquivo( filename, request, lang='pt') if not error_list: dados_eventos = importar_arquivo(filename, request, 1) if not dados_eventos: dados_eventos = {} dados_eventos['status'] = 5 dados_eventos['validacoes'] = 'Evento já existe em nossa base!' dados_eventos['criado_em'] = datetime.datetime.now() dados_eventos['criado_por_id'] = 1 dados_eventos['excluido'] = False ImportacaoArquivosEventos.objects.using(db_slug).filter( id=arquivo.id).update(**dados_eventos) from emensageriapro.padrao import executar_sql ia_id = arquivo.importacao_arquivos_id executar_sql( """ UPDATE public.importacao_arquivos SET quant_aquardando = ( SELECT count(*) FROM public.importacao_arquivos_eventos e WHERE e.importacao_arquivos_id=%s AND e.status=0), quant_error = ( SELECT count(*) FROM public.importacao_arquivos_eventos e WHERE e.importacao_arquivos_id=%s AND e.status in (2,5)), quant_processado = ( SELECT count(*) FROM public.importacao_arquivos_eventos e WHERE e.importacao_arquivos_id=%s AND e.status=1) WHERE id=%s """ % (ia_id, ia_id, ia_id, ia_id), False) else: if error_list: dados_eventos['status'] = 2 else: dados_eventos['status'] = 4 dados_eventos['validacoes'] = '<br>'.join(error_list) dados_eventos['criado_em'] = datetime.datetime.now() dados_eventos['criado_por_id'] = 1 dados_eventos['excluido'] = False print dados_eventos ImportacaoArquivosEventos.objects.using(db_slug).filter( id=arquivo.id).update(**dados_eventos) from emensageriapro.padrao import executar_sql ia_id = arquivo.importacao_arquivos_id executar_sql( """ UPDATE public.importacao_arquivos SET quant_aquardando = ( SELECT count(*) FROM public.importacao_arquivos_eventos e WHERE e.importacao_arquivos_id=%s AND e.status=0), quant_error = ( SELECT count(*) FROM public.importacao_arquivos_eventos e WHERE e.importacao_arquivos_id=%s AND e.status in (2,5) ), quant_processado = ( SELECT count(*) FROM public.importacao_arquivos_eventos e WHERE e.importacao_arquivos_id=%s AND e.status=1) WHERE id=%s """ % (ia_id, ia_id, ia_id, ia_id), False) arquivos = ImportacaoArquivosEventos.objects.using(db_slug).filter( excluido=False).exclude(id=0).all() for arquivo in arquivos: if arquivo.status in [2, 5]: for arquivo in arquivos: origem = BASE_DIR + '/' + arquivo.arquivo destino = BASE_DIR + '/' + arquivo.arquivo.replace( '/aguardando/', '/erro/') print 'mv %s %s' % (origem, destino) os.system('mv %s %s' % (origem, destino)) dados = {} dados['arquivo'] = arquivo.arquivo.replace( '/aguardando/', '/erro/') ImportacaoArquivosEventos.objects.using(db_slug).filter( id=arquivo.id).update(**dados) elif arquivo.status == 1: for arquivo in arquivos: origem = BASE_DIR + '/' + arquivo.arquivo destino = BASE_DIR + '/' + arquivo.arquivo.replace( '/aguardando/', '/processado/') print 'mv %s %s' % (origem, destino) os.system('mv %s %s' % (origem, destino)) dados = {} dados['arquivo'] = arquivo.arquivo.replace( '/aguardando/', '/processado/') ImportacaoArquivosEventos.objects.using(db_slug).filter( id=arquivo.id).update(**dados) return HttpResponse('')