def validar_evento_funcao(s2410_evtcdbenin_id, db_slug): from emensageriapro.padrao import executar_sql from emensageriapro.funcoes_importacao import get_versao_evento from emensageriapro.funcoes_validacoes_precedencia import validar_precedencia from emensageriapro.funcoes_validacoes import get_schema_name, validar_schema from emensageriapro.settings import BASE_DIR lista_validacoes = [] s2410_evtcdbenin = get_object_or_404(s2410evtCdBenIn.objects.using(db_slug), excluido=False, id=s2410_evtcdbenin_id) quant = validar_precedencia('esocial', 's2410_evtcdbenin', s2410_evtcdbenin_id) if quant <= 0: #lista_validacoes.append('Precedência não foi enviada!') precedencia = 0 else: precedencia = 1 executar_sql("UPDATE public.s2410_evtcdbenin SET validacao_precedencia=%s WHERE id=%s;" % (precedencia, s2410_evtcdbenin_id), False) # # Validações internas # arquivo = 'arquivos/Eventos/s2410_evtcdbenin/%s.xml' % (s2410_evtcdbenin.identidade) os.system('mkdir -p %s/arquivos/Eventos/s2410_evtcdbenin/' % BASE_DIR) lista = [] tipo = 'esocial' if not os.path.exists(BASE_DIR + '/' + arquivo): gerar_xml_assinado(s2410_evtcdbenin_id, db_slug) if os.path.exists(BASE_DIR + '/' + arquivo): texto_xml = ler_arquivo(arquivo).replace("s:", "") versao = get_versao_evento(texto_xml) if tipo == 'esocial': if versao == 'v02_04_02': from emensageriapro.esocial.validacoes.v02_04_02.s2410_evtcdbenin import validacoes_s2410_evtcdbenin lista = validacoes_s2410_evtcdbenin(arquivo) elif tipo == 'efdreinf': if versao == 'v1_03_02': from emensageriapro.efdreinf.validacoes.v1_03_02.s2410_evtcdbenin import validacoes_s2410_evtcdbenin lista = validacoes_s2410_evtcdbenin(arquivo) for a in lista: if a: lista_validacoes.append(a) # # validando schema # schema_filename = get_schema_name(arquivo) quant_erros, error_list = validar_schema(schema_filename, arquivo, lang='pt') for a in error_list: if a: lista_validacoes.append(a) # # # if lista_validacoes: executar_sql("UPDATE public.s2410_evtcdbenin SET validacoes='%s', status=3 WHERE id=%s;" % ('<br>'.join(lista_validacoes).replace("'","''"), s2410_evtcdbenin_id), False) else: executar_sql("UPDATE public.s2410_evtcdbenin SET validacoes='', status=4 WHERE id=%s;" % (s2410_evtcdbenin_id), False) return lista_validacoes
def validar_arquivo(arquivo, request, lang=None): from emensageriapro.funcoes_validacoes import validar_schema from django.contrib import messages import untangle quant_erros = 0 error_list = 0 xml = ler_arquivo(arquivo).replace("s:", "") dados = {} try: doc = untangle.parse(xml) dados['status'] = 1 except: messages.error(request, 'Erro na importação. Arquivo XML inválido!') dados['status'] = 3 return dados, request, 1, ['Erro na importação. Arquivo XML inválido!'] if dados['status'] == 1: from emensageriapro.funcoes_validacoes import get_schema_name schema_filename = get_schema_name(arquivo) quant_erros, error_list = validar_schema(schema_filename, arquivo, lang=lang) return quant_erros, error_list