diff --git a/addons/iap/models/iap.py b/addons/iap/models/iap.py
index 8d6b85e6d73..6bc661d3fdd 100644
--- a/addons/iap/models/iap.py
+++ b/addons/iap/models/iap.py
@@ -199,7 +199,7 @@ class IapAccount(models.Model):
}
credit = jsonrpc(url=url, params=params)
- account.write({'insufficient_credit': credit == 0})
+ account.sudo().write({'insufficient_credit': credit == 0})
return credit
diff --git a/addons/partner_autocomplete/data/cron.xml b/addons/partner_autocomplete/data/cron.xml
index f382d10f7f2..bd27eb7e38f 100644
--- a/addons/partner_autocomplete/data/cron.xml
+++ b/addons/partner_autocomplete/data/cron.xml
@@ -4,7 +4,7 @@
code
model.start_sync()
- 1
+ 60
minutes
-1
diff --git a/addons/partner_autocomplete/models/res_config_settings.py b/addons/partner_autocomplete/models/res_config_settings.py
index f28046d6189..63e550abb84 100644
--- a/addons/partner_autocomplete/models/res_config_settings.py
+++ b/addons/partner_autocomplete/models/res_config_settings.py
@@ -9,9 +9,11 @@ class ResConfigSettings(models.TransientModel):
partner_autocomplete_insufficient_credit = fields.Boolean('Insufficient credit', default=lambda self: self.env['iap.account'].get('partner_autocomplete').insufficient_credit)
@api.multi
- def redirect_to_buy_autocmplete_credit(self):
+ def redirect_to_buy_autocomplete_credit(self):
+ Account = self.env['iap.account']
+ Account.get('partner_autocomplete').sudo().write({'insufficient_credit': False})
return {
'type': 'ir.actions.act_url',
- 'url': self.env['iap.account'].get_credits_url('partner_autocomplete'),
+ 'url': Account.get_credits_url('partner_autocomplete'),
'target': '_new',
}
diff --git a/addons/partner_autocomplete/models/res_partner.py b/addons/partner_autocomplete/models/res_partner.py
index 60d5b182222..dcb7d107ed3 100644
--- a/addons/partner_autocomplete/models/res_partner.py
+++ b/addons/partner_autocomplete/models/res_partner.py
@@ -10,7 +10,7 @@ from odoo.addons.iap.models.iap import InsufficientCreditError
_logger = logging.getLogger(__name__)
-PARTNER_REMOTE_URL = 'https://partner-autocomplete.odoo.com/iap/partner_autocomplete'
+DEFAULT_ENDPOINT = 'https://partner-autocomplete.odoo.com'
class ResPartner(models.Model):
_name = 'res.partner'
@@ -75,9 +75,15 @@ class ResPartner(models.Model):
return country_id, state_id
+ @api.model
+ def get_endpoint(self):
+ url = self.env['ir.config_parameter'].sudo().get_param('iap.partner_autocomplete.endpoint', DEFAULT_ENDPOINT)
+ url += '/iap/partner_autocomplete'
+ return url
+
@api.model
def _rpc_remote_api(self, action, params, timeout=15):
- url = '%s/%s' % (PARTNER_REMOTE_URL, action)
+ url = '%s/%s' % (self.get_endpoint(), action)
account = self.env['iap.account'].get('partner_autocomplete')
params.update({
'db_uuid': self.env['ir.config_parameter'].sudo().get_param('database.uuid'),
@@ -90,10 +96,9 @@ class ResPartner(models.Model):
except (ConnectionError, HTTPError, exceptions.AccessError) as exception:
_logger.error('Autocomplete API error: %s' % str(exception))
return False, str(exception)
- except InsufficientCreditError:
- account = self.env['iap.account'].get('partner_autocomplete')
- if account:
- account.write({'insufficient_credit': True})
+ except InsufficientCreditError as exception:
+ _logger.warning('Insufficient Credits for Autocomplete Service: %s' % str(exception))
+ account.sudo().write({'insufficient_credit': True})
return False, 'Insufficient Credit'
@api.model
@@ -172,9 +177,8 @@ class ResPartner(models.Model):
@api.multi
def write(self, values):
- record = super(ResPartner, self).write(values)
+ res = super(ResPartner, self).write(values)
if len(self) == 1:
- for partner in self:
- partner._update_autocomplete_data(values.get('vat', False))
+ self._update_autocomplete_data(values.get('vat', False))
- return record
+ return res
diff --git a/addons/partner_autocomplete/static/src/js/partner_autocomplete_core.js b/addons/partner_autocomplete/static/src/js/partner_autocomplete_core.js
index 05bd10c9114..0b709021e7b 100644
--- a/addons/partner_autocomplete/static/src/js/partner_autocomplete_core.js
+++ b/addons/partner_autocomplete/static/src/js/partner_autocomplete_core.js
@@ -43,7 +43,8 @@ return {
return suggestion.website;
});
clearbitSuggestions.forEach(function (suggestion) {
- if (websites.indexOf(suggestion.website) < 0) {
+ if (websites.indexOf(suggestion.domain) < 0) {
+ websites.push(suggestion.domain);
odooSuggestions.push(suggestion);
}
});
diff --git a/addons/partner_autocomplete/static/src/js/partner_autocomplete_many2one.js b/addons/partner_autocomplete/static/src/js/partner_autocomplete_many2one.js
index 40780df75ce..6abf1751461 100644
--- a/addons/partner_autocomplete/static/src/js/partner_autocomplete_many2one.js
+++ b/addons/partner_autocomplete/static/src/js/partner_autocomplete_many2one.js
@@ -65,16 +65,19 @@ var PartnerField = FieldMany2One.extend({
*/
_modifyAutompleteRendering: function (){
var api = this.$input.data('ui-autocomplete');
- var renderWithoutLogo = api._renderItem;
- api._renderItem = function ( ul, item ) {
- var $li = renderWithoutLogo.call(this, ul, item);
+ api._renderItem = function(ul, item){
+ ul.addClass('o_partner_autocomplete_dropdown');
+ var $a = $('')["html"](item.label);
if (item.logo){
- var $a = $li.find('>a').addClass('o_partner_autocomplete_dropdown_item');
var $img = $('
').attr('src', item.logo);
$a.append($img);
}
- return $li;
+ return $("
")
+ .data("item.autocomplete",item)
+ .append($a)
+ .appendTo(ul)
+ .addClass(item.classname);
};
},
@@ -104,20 +107,17 @@ var PartnerField = FieldMany2One.extend({
Autocomplete.autocomplete(search_val).then(function (suggestions) {
var choices = [];
if (suggestions && suggestions.length) {
- choices.push({
- label: _t('Create and Edit from Autocomplete :'),
- });
_.each(suggestions, function (suggestion) {
- var label =_.str.sprintf('%s - %s', suggestion.label, suggestion.description);
- label = label.replace(new RegExp(search_val, "gi"), "$&");
+ var label = ' ';
+ label += _.str.sprintf('%s, %s', suggestion.label, suggestion.description);
choices.push({
label: label,
action: function () {
self._createPartner(suggestion);
},
- classname: 'o_m2o_dropdown_option',
logo: suggestion.logo,
+ classname: 'o_partner_autocomplete_dropdown_item',
});
});
}
diff --git a/addons/partner_autocomplete/static/src/scss/partner_autocomplete.scss b/addons/partner_autocomplete/static/src/scss/partner_autocomplete.scss
index a63e2434b6f..d70477e7cb3 100644
--- a/addons/partner_autocomplete/static/src/scss/partner_autocomplete.scss
+++ b/addons/partner_autocomplete/static/src/scss/partner_autocomplete.scss
@@ -18,11 +18,29 @@
}
}
-.ui-autocomplete .ui-menu-item > a.o_partner_autocomplete_dropdown_item {
- > img {
- float: right;
- width: 20px;
- height: 20px;
+.ui-autocomplete.o_partner_autocomplete_dropdown {
+ > .ui-menu-item:nth-of-type(1n+16) {
+ display: none;
}
-
-}
\ No newline at end of file
+ > .o_partner_autocomplete_dropdown_item {
+ > a {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ position: relative;
+ padding-right: 50px;
+ padding-left: 40px;
+ max-width: 400px;
+ > img {
+ position: absolute;
+ width: 20px;
+ height: 20px;
+ right: 20px;
+ top: 3px;
+ }
+ }
+ }
+ > .ui-menu-item.ui-state-focus .text-muted {
+ color: white !important;
+ }
+}
diff --git a/addons/partner_autocomplete/static/tests/partner_autocomplete_tests.js b/addons/partner_autocomplete/static/tests/partner_autocomplete_tests.js
index 5e7a3ae3c1e..5eebcf85ce0 100644
--- a/addons/partner_autocomplete/static/tests/partner_autocomplete_tests.js
+++ b/addons/partner_autocomplete/static/tests/partner_autocomplete_tests.js
@@ -37,7 +37,7 @@ odoo.define('partner_autocomplete.tests', function (require) {
QUnit.module('partner_autocomplete', {
before: function () {
var suggestions = [
- {name: "Odoo", website: "odoo.com", logo: "odoo.com/logo.png", vat: "BE0477472701"}
+ {name: "Odoo", website: "odoo.com", domain: "odoo.com", logo: "odoo.com/logo.png", vat: "BE0477472701"}
];
var enrich_data = {
diff --git a/addons/partner_autocomplete/views/res_config_settings_views.xml b/addons/partner_autocomplete/views/res_config_settings_views.xml
index 8c97b9e4aeb..13889bc52a2 100644
--- a/addons/partner_autocomplete/views/res_config_settings_views.xml
+++ b/addons/partner_autocomplete/views/res_config_settings_views.xml
@@ -9,11 +9,11 @@
-
-
-
+
+
+
You don't have credits to auto-complete companies' data anymore.
-