From f5f0ca843d98bcbaf0fd8ad63a31a3cacf390168 Mon Sep 17 00:00:00 2001 From: Julien Mougenot Date: Thu, 9 Apr 2020 07:42:20 +0000 Subject: [PATCH] [IMP] *: enable_counters with false as default In the search panel, the attribute disable_counters with default False has been changed to enable_counters with default False. --- .../account/views/account_account_views.xml | 2 +- addons/account/views/account_move_views.xml | 2 +- addons/hr/views/hr_employee_public_views.xml | 4 +- addons/hr/views/hr_employee_views.xml | 4 +- addons/lunch/static/tests/lunch_test_utils.js | 4 +- addons/lunch/views/lunch_product_views.xml | 4 +- addons/web/models/models.py | 10 +- .../web/static/src/js/views/search_panel.js | 12 +- addons/web/static/src/xml/kanban.xml | 8 +- .../web/static/tests/helpers/mock_server.js | 6 +- .../static/tests/views/search_panel_tests.js | 146 +++++++++++------- doc/reference/views.rst | 3 +- odoo/addons/base/rng/common.rng | 2 +- odoo/addons/base/tests/test_views.py | 6 +- odoo/addons/base/views/ir_module_views.xml | 2 +- .../test_search_panel_select_multi_range.py | 44 +++--- .../tests/test_search_panel_select_range.py | 41 ++--- 17 files changed, 176 insertions(+), 124 deletions(-) diff --git a/addons/account/views/account_account_views.xml b/addons/account/views/account_account_views.xml index 7dfed0fc2aa..7bd0635f47a 100644 --- a/addons/account/views/account_account_views.xml +++ b/addons/account/views/account_account_views.xml @@ -119,7 +119,7 @@ diff --git a/addons/account/views/account_move_views.xml b/addons/account/views/account_move_views.xml index ca50b0d889c..aa5fefbfc44 100644 --- a/addons/account/views/account_move_views.xml +++ b/addons/account/views/account_move_views.xml @@ -368,7 +368,7 @@ diff --git a/addons/hr/views/hr_employee_public_views.xml b/addons/hr/views/hr_employee_public_views.xml index 8016e5fd0de..4d8d9517a63 100644 --- a/addons/hr/views/hr_employee_public_views.xml +++ b/addons/hr/views/hr_employee_public_views.xml @@ -19,8 +19,8 @@ - - + + diff --git a/addons/hr/views/hr_employee_views.xml b/addons/hr/views/hr_employee_views.xml index be6e198f362..0f10300a53d 100644 --- a/addons/hr/views/hr_employee_views.xml +++ b/addons/hr/views/hr_employee_views.xml @@ -27,8 +27,8 @@ - - + + diff --git a/addons/lunch/static/tests/lunch_test_utils.js b/addons/lunch/static/tests/lunch_test_utils.js index a59328a05dd..baa7f18904c 100644 --- a/addons/lunch/static/tests/lunch_test_utils.js +++ b/addons/lunch/static/tests/lunch_test_utils.js @@ -15,8 +15,8 @@ async function createLunchView(params) { var searchArch = params.archs[`${params.model},false,search`] || ''; var searchPanelArch = ` - - + + `; searchArch = searchArch.split('')[0] + searchPanelArch + ''; diff --git a/addons/lunch/views/lunch_product_views.xml b/addons/lunch/views/lunch_product_views.xml index 7764aa19b45..d7aa38839e3 100644 --- a/addons/lunch/views/lunch_product_views.xml +++ b/addons/lunch/views/lunch_product_views.xml @@ -16,8 +16,8 @@ - - + + diff --git a/addons/web/models/models.py b/addons/web/models/models.py index 348fecb8cb1..714e7e30c63 100644 --- a/addons/web/models/models.py +++ b/addons/web/models/models.py @@ -314,7 +314,7 @@ class Base(models.AbstractModel): the values are functions used to process the field names values. They must accept the single parameter record (see below) - :param disable_counters: whether to count records by value. This is done in + :param enable_counters: whether to count records by value. This is done in search_panel_local_counters :param filter_domain: domain generated by filters (this parameter is used in search_panel_local_counters) @@ -329,7 +329,7 @@ class Base(models.AbstractModel): field = self._fields[field_name] local_counters = {} - if field.type != 'many2many' and not kwargs.get('disable_counters'): + if field.type != 'many2many' and kwargs.get('enable_counters'): local_counters = self.search_panel_local_counters(field_name, **kwargs) if field.type in ['many2many', 'many2one']: @@ -375,7 +375,7 @@ class Base(models.AbstractModel): (this parameter is used in _search_panel_range) :param comodel_domain: domain of field values (if relational) (this parameter is used in _search_panel_range) - :param disable_counters: whether to count records by value + :param enable_counters: whether to count records by value :param search_domain: base domain of search (this parameter is used in _search_panel_range) :return: { @@ -428,7 +428,7 @@ class Base(models.AbstractModel): :param category_domain: domain generated by categories :param comodel_domain: domain of field values (if relational) (this parameter is used in _search_panel_range) - :param disable_counters: whether to count records by value + :param enable_counters: whether to count records by value :param filter_domain: domain generated by filters :param group_by: extra field to read on comodel, to group comodel records :param group_domain: dict, one domain for each activated group @@ -480,7 +480,7 @@ class Base(models.AbstractModel): values_range = self._search_panel_range(field_name, comodel_field_names=field_names, **kwargs) - if field.type == 'many2many' and not kwargs.get('disable_counters'): + if field.type == 'many2many' and kwargs.get('enable_counters'): # fetch the counts model_domain = AND([ kwargs.get('search_domain', []), diff --git a/addons/web/static/src/js/views/search_panel.js b/addons/web/static/src/js/views/search_panel.js index 38019fc01cd..5d45150266a 100644 --- a/addons/web/static/src/js/views/search_panel.js +++ b/addons/web/static/src/js/views/search_panel.js @@ -44,7 +44,7 @@ function _processSearchPanelNode(node, fields) { const section = { color: childNode.attrs.color, description: childNode.attrs.string || fields[fieldName].string, - disableCounters: !!pyUtils.py_eval(childNode.attrs.disable_counters || '0'), + enableCounters: !!pyUtils.py_eval(childNode.attrs.enable_counters || '0'), fieldName: fieldName, icon: childNode.attrs.icon, id: sectionId, @@ -390,14 +390,14 @@ const SearchPanel = Widget.extend({ const proms = []; for (const category of Object.values(this.categories)) { const field = this.fields[category.fieldName]; - if (force || !category.disableCounters) { + if (force || category.enableCounters) { const prom = this._rpc({ method: 'search_panel_select_range', model: this.model, args: [category.fieldName], kwargs: { category_domain: this._getCategoryDomain(category.id), - disable_counters: category.disableCounters, + enable_counters: category.enableCounters, search_domain: this.searchDomain, }, }).then(({ parent_field, values }) => { @@ -433,7 +433,7 @@ const SearchPanel = Widget.extend({ kwargs: { category_domain: categoryDomain, comodel_domain: Domain.prototype.stringToArray(filter.domain, evalContext), - disable_counters: filter.disableCounters, + enable_counters: filter.enableCounters, filter_domain: this._getFilterDomain(filter.id), group_by: filter.groupBy || false, group_domain: this._getGroupDomain(filter), @@ -535,10 +535,10 @@ const SearchPanel = Widget.extend({ * @returns {(Array{}|Array[]|undefined)} */ _getGroupDomain(filter) { - const { fieldName, groups, disableCounters } = filter; + const { fieldName, groups, enableCounters } = filter; const { type: fieldType } = this.fields[fieldName]; - if (disableCounters || !groups) { + if (!enableCounters || !groups) { switch (fieldType) { case 'many2one': return []; case 'many2many': return {}; diff --git a/addons/web/static/src/xml/kanban.xml b/addons/web/static/src/xml/kanban.xml index 374ddf73353..f8e6781f6c3 100644 --- a/addons/web/static/src/xml/kanban.xml +++ b/addons/web/static/src/xml/kanban.xml @@ -246,13 +246,13 @@
  • -