# Copyright 2009-2020 Noviat.
# License LGPL-3 or later (http://www.gnu.org/licenses/lpgl).

import logging
from sys import exc_info
from traceback import format_exception

from odoo.tools import config

_logger = logging.getLogger(__name__)

try:
    import fintech
except ImportError:
    fintech = None
    _logger.warning('Failed to import fintech')

fintech_register_name = config.get('fintech_register_name')
fintech_register_keycode = config.get('fintech_register_keycode')
fintech_register_users = config.get('fintech_register_users')

try:
    if fintech:
        fintech_register_users = (
            fintech_register_users
            and [x.strip() for x in fintech_register_users.split(',')]
            or None
        )
        fintech.cryptolib = 'cryptography'
        fintech.register(
            name=fintech_register_name,
            keycode=fintech_register_keycode,
            users=fintech_register_users)
except RuntimeError as e:
    if str(e) == "'register' can be called only once":
        pass
    else:
        _logger.error(str(e))
        fintech.register()
except Exception:
    msg = "fintech.register error"
    tb = ''.join(format_exception(*exc_info()))
    msg += '\n%s' % tb
    _logger.error(msg)
    fintech.register()