53 lines
2.2 KiB
Python
53 lines
2.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
import logging
|
|
|
|
from odoo import api, models, exceptions, _
|
|
from odoo.addons.iap.tools import iap_tools
|
|
from requests.exceptions import HTTPError
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
|
|
class IapAutocompleteEnrichAPI(models.AbstractModel):
|
|
_name = 'iap.autocomplete.api'
|
|
_description = 'IAP Partner Autocomplete API'
|
|
_DEFAULT_ENDPOINT = 'https://partner-autocomplete.odoo.com'
|
|
|
|
@api.model
|
|
def _contact_iap(self, local_endpoint, action, params, timeout=15):
|
|
if self.env.registry.in_test_mode():
|
|
raise exceptions.ValidationError(_('Test mode'))
|
|
account = self.env['iap.account'].get('partner_autocomplete')
|
|
if not account.account_token:
|
|
raise ValueError(_('No account token'))
|
|
params.update({
|
|
'db_uuid': self.env['ir.config_parameter'].sudo().get_param('database.uuid'),
|
|
'account_token': account.account_token,
|
|
'country_code': self.env.company.country_id.code,
|
|
'zip': self.env.company.zip,
|
|
})
|
|
base_url = self.env['ir.config_parameter'].sudo().get_param('iap.partner_autocomplete.endpoint', self._DEFAULT_ENDPOINT)
|
|
return iap_tools.iap_jsonrpc(base_url + local_endpoint + '/' + action, params=params, timeout=timeout)
|
|
|
|
@api.model
|
|
def _request_partner_autocomplete(self, action, params, timeout=15):
|
|
""" Contact endpoint to get autocomplete data.
|
|
|
|
:return tuple: results, error code
|
|
"""
|
|
try:
|
|
results = self._contact_iap('/iap/partner_autocomplete', action, params, timeout=timeout)
|
|
except exceptions.ValidationError:
|
|
return False, 'Insufficient Credit'
|
|
except (ConnectionError, HTTPError, exceptions.AccessError, exceptions.UserError) as exception:
|
|
_logger.warning('Autocomplete API error: %s', str(exception))
|
|
return False, str(exception)
|
|
except iap_tools.InsufficientCreditError as exception:
|
|
_logger.warning('Insufficient Credits for Autocomplete Service: %s', str(exception))
|
|
return False, 'Insufficient Credit'
|
|
except ValueError:
|
|
return False, 'No account token'
|
|
return results, False
|