Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions satcfe/entidades.py
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,10 @@


class ExtendedValidator(cerberus.Validator):
#Chaves de vinculação do AC de teste
ASSINATURA_AC_TESTE = ['SGR-SAT SISTEMA DE GESTAO E RETAGUARDA DO SAT',
'SGR-SAT SISTEMA DE GESTAO E RETAGUARDA DO CFE',
'CODIGO DE VINCULACAO AC DO MFE-CFE']

def _validate_type_decimal(self, field, value):
if not isinstance(value, Decimal):
Expand All @@ -251,7 +255,7 @@ def _validate_type_assinatura_ac(self, field, value):
# assume que quaisquer 344 'printable chars' formem uma
# assinatura de AC válida...
pass
elif value == constantes.ASSINATURA_AC_TESTE:
elif value in self.ASSINATURA_AC_TESTE:
pass
else:
self._error(field, "campo '%s' nao possui uma assinatura AC "
Expand Down Expand Up @@ -301,7 +305,7 @@ def validar(self):
nome_entidade = self.__class__.__name__
Entidade._erros[nome_entidade] = self._validator.errors
raise cerberus.ValidationError('Entidade "{}" possui '
'atributos invalidos.'.format(nome_entidade))
'atributos invalidos.'.format(self._validator.errors))


def documento(self, *args, **kwargs):
Expand All @@ -324,7 +328,7 @@ def documento(self, *args, **kwargs):


def _xml(self, *args, **kwargs):
self.validar()
# self.validar()
return self._construir_elemento_xml(*args, **kwargs)


Expand Down Expand Up @@ -2099,7 +2103,7 @@ def __init__(self, **kwargs):
'infCpl': {
'type': 'string',
'required': False,
'minlength': 1, 'maxlength': 5000},
'minlength': 0, 'maxlength': 5000},
}, **kwargs)


Expand Down
58 changes: 29 additions & 29 deletions satcfe/resposta/padrao.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
# limitations under the License.
#

from satcomum.util import forcar_unicode
# from satcomum.util import forcar_str

from ..excecoes import ExcecaoRespostaSAT
from ..excecoes import ErroRespostaSATInvalida
Expand All @@ -32,10 +32,10 @@ class RespostaSAT(object):
.. sourcecode:: text

numeroSessao (int)
EEEEE (unicode)
mensagem (unicode)
cod (unicode)
mensagemSEFAZ (unicode)
EEEEE (str)
mensagem (str)
cod (str)
mensagemSEFAZ (str)

Além dos atributos padrão, a resposta deverá conter uma referência para o
nome da função SAT a que a resposta se refere e ao conteúdo original da
Expand All @@ -57,13 +57,13 @@ class _Atributos(object):

CAMPOS = (
('numeroSessao', int),
('EEEEE', unicode),
('mensagem', unicode),
('cod', unicode),
('mensagemSEFAZ', unicode),
('EEEEE', str),
('mensagem', str),
('cod', str),
('mensagemSEFAZ', str),
)
"""Campos padrão esperados em uma resposta e a sua função de conversão para
o tipo Python, a partir da resposta original (unicode).
o tipo Python, a partir da resposta original (str).
"""


Expand All @@ -78,10 +78,10 @@ def __init__(self, **kwargs):

@staticmethod
def comunicar_certificado_icpbrasil(retorno):
"""Constrói uma :class:`RespostaSAT` para o retorno (unicode) da função
"""Constrói uma :class:`RespostaSAT` para o retorno (str) da função
:meth:`~satcfe.base.FuncoesSAT.comunicar_certificado_icpbrasil`.
"""
resposta = analisar_retorno(forcar_unicode(retorno),
resposta = analisar_retorno(retorno,
funcao='ComunicarCertificadoICPBRASIL')
if resposta.EEEEE not in ('05000',):
raise ExcecaoRespostaSAT(resposta)
Expand All @@ -90,10 +90,10 @@ def comunicar_certificado_icpbrasil(retorno):

@staticmethod
def consultar_sat(retorno):
"""Constrói uma :class:`RespostaSAT` para o retorno (unicode) da função
"""Constrói uma :class:`RespostaSAT` para o retorno (str) da função
:meth:`~satcfe.base.FuncoesSAT.consultar_sat`.
"""
resposta = analisar_retorno(forcar_unicode(retorno),
resposta = analisar_retorno(retorno,
funcao='ConsultarSAT')
if resposta.EEEEE not in ('08000',):
raise ExcecaoRespostaSAT(resposta)
Expand All @@ -102,10 +102,10 @@ def consultar_sat(retorno):

@staticmethod
def configurar_interface_de_rede(retorno):
"""Constrói uma :class:`RespostaSAT` para o retorno (unicode) da função
"""Constrói uma :class:`RespostaSAT` para o retorno (str) da função
:meth:`~satcfe.base.FuncoesSAT.configurar_interface_de_rede`.
"""
resposta = analisar_retorno(forcar_unicode(retorno),
resposta = analisar_retorno(retorno,
funcao='ConfigurarInterfaceDeRede')
if resposta.EEEEE not in ('12000',):
raise ExcecaoRespostaSAT(resposta)
Expand All @@ -114,10 +114,10 @@ def configurar_interface_de_rede(retorno):

@staticmethod
def associar_assinatura(retorno):
"""Constrói uma :class:`RespostaSAT` para o retorno (unicode) da função
"""Constrói uma :class:`RespostaSAT` para o retorno (str) da função
:meth:`~satcfe.base.FuncoesSAT.associar_assinatura`.
"""
resposta = analisar_retorno(forcar_unicode(retorno),
resposta = analisar_retorno(retorno,
funcao='AssociarAssinatura')
if resposta.EEEEE not in ('13000',):
raise ExcecaoRespostaSAT(resposta)
Expand All @@ -126,10 +126,10 @@ def associar_assinatura(retorno):

@staticmethod
def atualizar_software_sat(retorno):
"""Constrói uma :class:`RespostaSAT` para o retorno (unicode) da função
"""Constrói uma :class:`RespostaSAT` para o retorno (str) da função
:meth:`~satcfe.base.FuncoesSAT.atualizar_software_sat`.
"""
resposta = analisar_retorno(forcar_unicode(retorno),
resposta = analisar_retorno(retorno,
funcao='AtualizarSoftwareSAT')
if resposta.EEEEE not in ('14000',):
raise ExcecaoRespostaSAT(resposta)
Expand All @@ -138,10 +138,10 @@ def atualizar_software_sat(retorno):

@staticmethod
def bloquear_sat(retorno):
"""Constrói uma :class:`RespostaSAT` para o retorno (unicode) da função
"""Constrói uma :class:`RespostaSAT` para o retorno (str) da função
:meth:`~satcfe.base.FuncoesSAT.bloquear_sat`.
"""
resposta = analisar_retorno(forcar_unicode(retorno),
resposta = analisar_retorno(retorno,
funcao='BloquearSAT')
if resposta.EEEEE not in ('16000',):
raise ExcecaoRespostaSAT(resposta)
Expand All @@ -150,10 +150,10 @@ def bloquear_sat(retorno):

@staticmethod
def desbloquear_sat(retorno):
"""Constrói uma :class:`RespostaSAT` para o retorno (unicode) da função
"""Constrói uma :class:`RespostaSAT` para o retorno (str) da função
:meth:`~satcfe.base.FuncoesSAT.desbloquear_sat`.
"""
resposta = analisar_retorno(forcar_unicode(retorno),
resposta = analisar_retorno(retorno,
funcao='DesbloquearSAT')
if resposta.EEEEE not in ('17000',):
raise ExcecaoRespostaSAT(resposta)
Expand All @@ -162,10 +162,10 @@ def desbloquear_sat(retorno):

@staticmethod
def trocar_codigo_de_ativacao(retorno):
"""Constrói uma :class:`RespostaSAT` para o retorno (unicode) da função
"""Constrói uma :class:`RespostaSAT` para o retorno (str) da função
:meth:`~satcfe.base.FuncoesSAT.trocar_codigo_de_ativacao`.
"""
resposta = analisar_retorno(forcar_unicode(retorno),
resposta = analisar_retorno(retorno,
funcao='TrocarCodigoDeAtivacao')
if resposta.EEEEE not in ('18000',):
raise ExcecaoRespostaSAT(resposta)
Expand All @@ -182,7 +182,7 @@ def analisar_retorno(retorno,

O campos devem ser especificados como uma tupla onde cada elemento da tupla
deverá ser uma tupla contendo dois elementos: o nome do campo e uma função
de conversão a partir de uma string unicode. Por exemplo:
de conversão a partir de uma string str. Por exemplo:

.. sourcecode:: python

Expand All @@ -203,14 +203,14 @@ def analisar_retorno(retorno,
>>> resposta.atributos.verbatim
'123456|08000|SAT em operacao||'

:param unicode retorno: O conteúdo **unicode** da resposta retornada pela
:param str retorno: O conteúdo **str** da resposta retornada pela
função da DLL SAT.

:param type classe_resposta: O tipo :class:`RespostaSAT` ou especialização
que irá representar o retorno, após sua decomposição em campos.

:param tuple campos: Especificação dos campos (nomes) e seus conversores a
a partir do tipo ``unicode``.
a partir do tipo ``str``.

:param list campos_alternativos: Especifica conjuntos de campos alternativos
que serão considerados caso o número de campos encontrados na resposta
Expand Down