diff --git a/pytrustnfe/nfe/__init__.py b/pytrustnfe/nfe/__init__.py index d1684b6..67aa506 100644 --- a/pytrustnfe/nfe/__init__.py +++ b/pytrustnfe/nfe/__init__.py @@ -9,7 +9,6 @@ from lxml import etree from .patch import has_patch from .assinatura import Assinatura from pytrustnfe.xml import render_xml, sanitize_response -from pytrustnfe.xml.validate import ValidarXml from pytrustnfe.utils import gerar_chave, ChaveNFe from pytrustnfe.Servidores import localizar_url from pytrustnfe.certificado import extract_cert_and_key_from_pfx, save_cert_key @@ -21,9 +20,6 @@ from requests import Session from zeep import Client from zeep.transports import Transport -# Xml schema validation class -validar_xml = ValidarXml() - def _generate_nfe_id(**kwargs): for item in kwargs['NFes']: @@ -129,11 +125,7 @@ def xml_autorizar_nfe(certificado, **kwargs): def autorizar_nfe(certificado, **kwargs): # Assinar if "xml" not in kwargs: kwargs['xml'] = xml_autorizar_nfe(certificado, **kwargs) - erros_esquemas = validar_xml.valida_nfe(kwargs['xml']) - if erros_esquemas is not False: - return erros_esquemas - else: - return _send(certificado, 'NfeAutorizacao', **kwargs) + return _send(certificado, 'NfeAutorizacao', **kwargs) def xml_retorno_autorizar_nfe(certificado, **kwargs): @@ -225,11 +217,7 @@ def xml_consulta_distribuicao_nfe(certificado, **kwargs): # Assinar def consulta_distribuicao_nfe(certificado, **kwargs): if "xml" not in kwargs: kwargs['xml'] = xml_consulta_distribuicao_nfe(certificado, **kwargs) - erros_esquemas = validar_xml.valida_distribuicao(kwargs['xml']) - if erros_esquemas is not False: - return erros_esquemas - else: - return _send_v310(certificado, **kwargs) + return _send_v310(certificado, **kwargs) def _send_v310(certificado, **kwargs): diff --git a/pytrustnfe/xml/validate.py b/pytrustnfe/xml/validate.py index 6ff45b3..b29e879 100644 --- a/pytrustnfe/xml/validate.py +++ b/pytrustnfe/xml/validate.py @@ -6,30 +6,31 @@ import os from lxml import etree +PATH = os.path.dirname(os.path.abspath(__file__)) -class ValidarXml: - PATH = os.path.dirname(os.path.abspath(__file__)) - - def valida_nfe(self, xml): - xsd = 'enviNFe_v4.00.xsd' - erros = self.valida_esquema(xml, xsd) - if len(erros) > 0: - return {'ErrosEsquemas': "\n".join(erros)} - else: - return False - - def valida_distribuicao(self, xml): - xsd = 'distDFeInt_v1.01.xsd' - erros = self.valida_esquema(xml, xsd) - if len(erros) >0: - return {'ErrosEsquemas': "\n".join(erros)} - else: - return False - - def valida_esquema(self, xml, xsd_name): - xsd = os.path.join(self.PATH, 'schemas/', xsd_name) - xml_etree = etree.fromstring(xml) - esquema = etree.XMLSchema(etree.parse(xsd)) - esquema.validate(xml_etree) - erros = [x.message for x in esquema.error_log] - return erros + +def valida_nfe(xml): + xsd = 'enviNFe_v4.00.xsd' + erros = valida_esquema(xml, xsd) + if len(erros) > 0: + return {'ErrosEsquemas': "\n".join(erros)} + else: + return False + + +def valida_distribuicao(xml): + xsd = 'distDFeInt_v1.01.xsd' + erros = valida_esquema(xml, xsd) + if len(erros) >0: + return {'ErrosEsquemas': "\n".join(erros)} + else: + return False + + +def valida_esquema(xml, xsd_name): + xsd = os.path.join(PATH, 'schemas/', xsd_name) + xml_etree = etree.fromstring(xml) + esquema = etree.XMLSchema(etree.parse(xsd)) + esquema.validate(xml_etree) + erros = [x.message for x in esquema.error_log] + return erros