def abrir_evento_para_edicao(request, hash): from emensageriapro.settings import BASE_DIR from emensageriapro.funcoes_esocial import gravar_nome_arquivo db_slug = 'default' dict_hash = get_hash_url(hash) s1000_evtinfoempregador_id = int(dict_hash['id']) if s1000_evtinfoempregador_id: s1000_evtinfoempregador = get_object_or_404( s1000evtInfoEmpregador.objects.using(db_slug), excluido=False, id=s1000_evtinfoempregador_id) if s1000_evtinfoempregador.status in ( 0, 1, 2, 3, 4, 10, 11 ) or s1000_evtinfoempregador.processamento_codigo_resposta in (401, 402): s1000evtInfoEmpregador.objects.using(db_slug).filter( id=s1000_evtinfoempregador_id).update(status=0, arquivo_original=0) arquivo = 'arquivos/Eventos/s1000_evtinfoempregador/%s.xml' % ( s1000_evtinfoempregador.identidade) if os.path.exists(BASE_DIR + '/' + arquivo): from datetime import datetime data_hora_atual = str(datetime.now()).replace( ':', '_').replace(' ', '_').replace('.', '_') dad = (BASE_DIR, s1000_evtinfoempregador.identidade, BASE_DIR, s1000_evtinfoempregador.identidade, data_hora_atual) os.system( 'mv %s/arquivos/Eventos/s1000_evtinfoempregador/%s.xml %s/arquivos/Eventos/s1000_evtinfoempregador/%s_backup_%s.xml' % dad) gravar_nome_arquivo( '/arquivos/Eventos/s1000_evtinfoempregador/%s_backup_%s.xml' % (s1000_evtinfoempregador.identidade, data_hora_atual), 1) messages.success(request, 'Evento aberto para edição!') usuario_id = request.user.id gravar_auditoria(u'{}', u'{"funcao": "Evento aberto para edição"}', 's1000_evtinfoempregador', s1000_evtinfoempregador_id, usuario_id, 1) url_hash = base64.urlsafe_b64encode('{"print": "0", "id": "%s"}' % s1000_evtinfoempregador_id) return redirect('s1000_evtinfoempregador_salvar', hash=url_hash) else: messages.error( request, ''' Não foi possível abrir o evento para edição! Somente é possível abrir eventos com os seguintes status: "Cadastrado", "Importado", "Validado", "Duplicado", "Erro na validação", "XML Assinado" ou "XML Gerado" ou com o status "Enviado com sucesso" e os seguintes códigos de resposta do servidor: "401 - Lote Incorreto - Erro preenchimento" ou "402 - Lote Incorreto - schema Inválido"!''' ) return redirect(request.session['retorno_pagina'], hash=request.session['retorno_hash']) messages.error(request, 'Erro ao abrir evento para edição!') return redirect(request.session['retorno_pagina'], 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('')