From 0495d7ae8c8c483d4240774ce57b7472b72c7654 Mon Sep 17 00:00:00 2001 From: Benjamin Willig Date: Fri, 20 Oct 2017 12:41:59 +0200 Subject: [PATCH] [FIX] web_advanced_search: 2 fixes * Ensure that domain field can be evaluated before creating x2x field * Fixed navigation error after using x2x advanced search --- web_advanced_search/__openerp__.py | 2 +- .../static/src/js/web_advanced_search_x2x.js | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/web_advanced_search/__openerp__.py b/web_advanced_search/__openerp__.py index f74f45b4..ff4e5a3e 100644 --- a/web_advanced_search/__openerp__.py +++ b/web_advanced_search/__openerp__.py @@ -5,7 +5,7 @@ { "name": "Search x2x fields", - "version": "10.0.2.0.2", + "version": "10.0.2.0.3", "author": "Therp BV, " "Tecnativa, " "Odoo Community Association (OCA)", diff --git a/web_advanced_search/static/src/js/web_advanced_search_x2x.js b/web_advanced_search/static/src/js/web_advanced_search_x2x.js index 33153cc4..06cc0eea 100644 --- a/web_advanced_search/static/src/js/web_advanced_search_x2x.js +++ b/web_advanced_search/static/src/js/web_advanced_search_x2x.js @@ -12,6 +12,7 @@ odoo.define('web_advanced_search_x2x.search_filters', function (require) { var SearchView = require('web.SearchView'); var data = require('web.data'); var core = require('web.core'); + var pyeval = require('web.pyeval'); var X2XAdvancedSearchPropositionMixin = { template: "web_advanced_search_x2x.proposition", @@ -37,9 +38,11 @@ odoo.define('web_advanced_search_x2x.search_filters', function (require) { 'value': 'domain', 'text': core._lt('is in selection'), }); // Avoid hiding filter when using special widgets - this.events["click"] = function (event) { - event.stopPropagation(); - } + this.events = $.extend({}, this.events, { + click: function (event) { + event.stopPropagation(); + }, + }); return this._super.apply(this, arguments); }, @@ -83,6 +86,16 @@ odoo.define('web_advanced_search_x2x.search_filters', function (require) { } var widget = this.x2x_widget(); if (!widget) return; + + var field_domain = this.field.domain; + if (typeof field_domain === 'string') { + try { + pyeval.eval('domain', field_domain); + } catch(e) { + this.field.domain = "[]"; + } + } + this._x2x_field = new widget( this, this.x2x_field_create_options()