Source code for pyfva.clientes.verificador

'''
Created on 20 jul. 2017

@author: luis
'''
from pyfva.soap.verificador import ValideElServicio, VerificadorSoapServiceStub,\
    ExisteUnaSolicitudDeFirmaCompleta

from pyfva.soap import settings
from pyfva.constants import get_text_representation, ERRORES_VERIFICACION

from pyfva import logger


[docs]class ClienteVerificador(object): """Verifica si una firma ha sido completada .. note:: Los parámetros negocio y entidad de momento no son requeridos, pero puede que en un futuro cercano lo sean, por lo que se recomienda suministrarlos. :param negocio: número de identificación del negocio (provisto por el BCCR) :param entidad: número de identificación de la entidad (provisto por el BCCR) """ DEFAULT_ERROR = { 'codigo_error': 1, 'texto_codigo_error': get_text_representation(ERRORES_VERIFICACION, 1), 'existe_firma': False, 'fue_exitosa': False } def __init__(self, negocio=settings.DEFAULT_BUSSINESS, entidad=settings.DEFAULT_ENTITY): self.negocio = negocio self.entidad = entidad
[docs] def existe_solicitud_de_firma_completa(self, identificacion): """Verifica si una solicitud de firma ha sida completada por el usuario en el sistema del BCCR :param identificacion: número de identificación de la persona Retorna una diccionario con los siguientes elementos, en caso de error retorna **DEFAULT_ERROR**. :returns: **codigo_error:** Número con el código de error 0 es éxito **texto_codigo_error:** Descripción del error **exitosa:** True si fue exitosa, False si no lo fue **existe_firma:** Retorna True si hay un proceso de firma activo o False si no. """ logger.info({'message': "Verificador: existe solicitud de firma completa", 'data': identificacion, 'location': __file__}) try: dev = self._existe_solicitud_de_firma_completa(identificacion) except Exception as e: logger.error({'message': "Verificador: existe_solicitud_de_firma_completa", 'data': e, 'location': __file__}) dev = self.DEFAULT_ERROR logger.debug({'message': "Verificador: existe solicitud de firma completa", 'data': {'identification':identificacion, 'result': dev}, 'location': __file__}) return dev
[docs] def validar_servicio(self): """ Valida si el servicio está disponible. :returns: True si lo está o False si ocurrió algún error contactando al BCCR o el servicio no está disponible """ dev = self._validar_servicio() logger.debug({'message': "Verificador: validar servicio", 'data':dev, 'location': __file__}) return dev
# Private methods def _existe_solicitud_de_firma_completa(self, identificacion): stub = VerificadorSoapServiceStub() options = ExisteUnaSolicitudDeFirmaCompleta() options.laCedulaDelUsuario = identificacion status = stub.ExisteUnaSolicitudDeFirmaCompleta(options) result = status.soap_body.ExisteUnaSolicitudDeFirmaCompletaResult return self._extract_solicitud_firma_completa(result) def _extract_solicitud_firma_completa(self, result): dev = {} dev.update(self.DEFAULT_ERROR) dev['codigo_error'] = result.CodigoDeError dev['texto_codigo_error'] = get_text_representation( ERRORES_VERIFICACION, result.CodigoDeError) dev['existe_firma'] = result.FueExitosa dev['fue_exitosa'] = result.ExisteUnaFirmaCompleta return dev def _validar_servicio(self): stub = VerificadorSoapServiceStub() option = ValideElServicio() try: status = stub.ValideElServicio(option) dev = status.soap_body.ValideElServicioResult except Exception as e: logger.error({'message': "Verificador: Servicio de verificación fallando", 'data': e, 'location': __file__}) dev = False return dev