[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.
This commit is contained in:
@@ -119,7 +119,7 @@
|
||||
<filter string="Account Type" name="accounttype" domain="" context="{'group_by':'user_type_id'}"/>
|
||||
</group>
|
||||
<searchpanel class="account_root">
|
||||
<field name="root_id" disable_counters="1" icon="fa-filter"/>
|
||||
<field name="root_id" icon="fa-filter"/>
|
||||
</searchpanel>
|
||||
</search>
|
||||
</field>
|
||||
|
||||
@@ -368,7 +368,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//group" position="after">
|
||||
<searchpanel class="account_root">
|
||||
<field name="account_root_id" disable_counters="1" icon="fa-filter"/>
|
||||
<field name="account_root_id" icon="fa-filter"/>
|
||||
</searchpanel>
|
||||
</xpath>
|
||||
</field>
|
||||
|
||||
@@ -19,8 +19,8 @@
|
||||
<filter name="group_company" string="Company" domain="[]" context="{'group_by':'company_id'}"/>
|
||||
</group>
|
||||
<searchpanel>
|
||||
<field name="company_id" groups="base.group_multi_company" icon="fa-building"/>
|
||||
<field name="department_id" icon="fa-users"/>
|
||||
<field name="company_id" groups="base.group_multi_company" icon="fa-building" enable_counters="1"/>
|
||||
<field name="department_id" icon="fa-users" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>
|
||||
</field>
|
||||
|
||||
@@ -27,8 +27,8 @@
|
||||
<filter name="group_job" string="Job" domain="[]" context="{'group_by': 'job_id'}"/>
|
||||
</group>
|
||||
<searchpanel>
|
||||
<field name="company_id" groups="base.group_multi_company" icon="fa-building"/>
|
||||
<field name="department_id" icon="fa-users"/>
|
||||
<field name="company_id" groups="base.group_multi_company" icon="fa-building" enable_counters="1"/>
|
||||
<field name="department_id" icon="fa-users" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>
|
||||
</field>
|
||||
|
||||
@@ -15,8 +15,8 @@ async function createLunchView(params) {
|
||||
var searchArch = params.archs[`${params.model},false,search`] || '<search></search>';
|
||||
var searchPanelArch = `
|
||||
<searchpanel>
|
||||
<field name="category_id" select="multi" string="Categories"/>
|
||||
<field name="supplier_id" select="multi" string="Vendors"/>
|
||||
<field name="category_id" select="multi" string="Categories" enable_counters="1"/>
|
||||
<field name="supplier_id" select="multi" string="Vendors" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
`;
|
||||
searchArch = searchArch.split('</search>')[0] + searchPanelArch + '</search>';
|
||||
|
||||
@@ -16,8 +16,8 @@
|
||||
<filter name="group_by_category" string="Category" context="{'group_by': 'category_id'}"/>
|
||||
</group>
|
||||
<searchpanel>
|
||||
<field name="category_id" select="multi" string="Categories" icon="fa-cutlery" color="#875A7B"/>
|
||||
<field name="supplier_id" select="multi" string="Vendors" icon="fa-truck"/>
|
||||
<field name="category_id" select="multi" string="Categories" icon="fa-cutlery" color="#875A7B" enable_counters="1"/>
|
||||
<field name="supplier_id" select="multi" string="Vendors" icon="fa-truck" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>
|
||||
</field>
|
||||
|
||||
@@ -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', []),
|
||||
|
||||
@@ -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 {};
|
||||
|
||||
@@ -246,13 +246,13 @@
|
||||
<t t-set="value" t-value="category.values[valueId]"/>
|
||||
<li class="o_search_panel_category_value border-0 list-group-item" t-att-data-id="value.id" t-att-data-category-id="category.id">
|
||||
<header t-att-class="'list-group-item-action' + (value.id === category.activeValueId ? ' active' : '')">
|
||||
<label t-attf-class="o_search_panel_label mb0{{ category.disableCounters ? '' : ' o_with_counters' }}">
|
||||
<label t-attf-class="o_search_panel_label mb0{{ category.enableCounters ? ' o_with_counters' : '' }}">
|
||||
<div class="o_toggle_fold">
|
||||
<i t-if="value.childrenIds.length" t-attf-class="fa fa-caret-{{ value.folded ? 'right' : 'down' }}"/>
|
||||
</div>
|
||||
<span class="o_search_panel_label_title"><t t-esc="value.display_name"/></span>
|
||||
</label>
|
||||
<span t-if="!category.disableCounters and value.__count > 0"
|
||||
<span t-if="category.enableCounters and value.__count > 0"
|
||||
class="text-muted ml-2 small"
|
||||
t-esc="value.__count"
|
||||
/>
|
||||
@@ -293,7 +293,7 @@
|
||||
<header class="o_search_panel_group_header">
|
||||
<div class="custom-control custom-checkbox">
|
||||
<input type="checkbox" t-att-id="inputId" t-att-checked="group.state === 'checked' ? 'checked' : undefined" class="custom-control-input"/>
|
||||
<label t-att-for="inputId" t-attf-class="o_search_panel_label custom-control-label{{ group.disableCounters ? '' : ' o_with_counters' }}" t-att-title="group.tooltip">
|
||||
<label t-att-for="inputId" t-attf-class="o_search_panel_label custom-control-label{{ group.enableCounters ? ' o_with_counters' : '' }}" t-att-title="group.tooltip">
|
||||
<span class="o_search_panel_label_title">
|
||||
<span t-if="group.hex_color" t-attf-style="color: {{ group.hex_color }};">●</span>
|
||||
<t t-esc="group.name"/>
|
||||
@@ -326,7 +326,7 @@
|
||||
<input type="checkbox" t-att-id="inputId" t-att-checked="value.checked ? 'checked' : undefined" class="custom-control-input"/>
|
||||
<label t-att-for="inputId" class="o_search_panel_label custom-control-label" t-att-title="group && group.tooltip">
|
||||
<span class="o_search_panel_label_title" t-esc="value.display_name"/>
|
||||
<span t-if="!filter.disableCounters and value.__count > 0"
|
||||
<span t-if="filter.enableCounters and value.__count > 0"
|
||||
class="text-muted ml-2 small"
|
||||
t-esc="value.__count"
|
||||
/>
|
||||
|
||||
@@ -627,7 +627,7 @@ var MockServer = Class.extend({
|
||||
_mockSearchPanelRange: function (model, fieldName, kwargs = {}) {
|
||||
const field = this.data[model].fields[fieldName];
|
||||
let localCounters = {};
|
||||
if (field.type !== 'many2many' && !kwargs.disable_counters) {
|
||||
if (field.type !== 'many2many' && kwargs.enable_counters) {
|
||||
localCounters = this._mockSearchPanelLocalCounters(model, fieldName, kwargs);
|
||||
}
|
||||
if (['many2one', 'many2many'].includes(field.type)) {
|
||||
@@ -690,7 +690,7 @@ var MockServer = Class.extend({
|
||||
}
|
||||
const rangeKwargs = Object.assign({ comodelFieldNames }, kwargs);
|
||||
const valuesRange = this._mockSearchPanelRange(model, fieldName, rangeKwargs);
|
||||
if (parentName && !kwargs.disable_counters) {
|
||||
if (parentName && kwargs.enable_counters) {
|
||||
this._mockSearchPanelGlobalCounters(valuesRange, parentName);
|
||||
}
|
||||
return {
|
||||
@@ -748,7 +748,7 @@ var MockServer = Class.extend({
|
||||
}
|
||||
const rangeKwargs = Object.assign({ comodelFieldNames }, kwargs);
|
||||
const valuesRange = this._mockSearchPanelRange(model, fieldName, rangeKwargs);
|
||||
if (field.type === 'many2many' && !kwargs.disable_counters) {
|
||||
if (field.type === 'many2many' && kwargs.enable_counters) {
|
||||
const modelDomain = Domain.prototype.normalizeArray([
|
||||
...(kwargs.search_domain || []),
|
||||
...(kwargs.category_domain || []),
|
||||
|
||||
@@ -83,8 +83,8 @@ QUnit.module('Views', {
|
||||
'partner,false,search':
|
||||
`<search>
|
||||
<searchpanel>
|
||||
<field name="company_id"/>
|
||||
<field select="multi" name="category_id"/>
|
||||
<field name="company_id" enable_counters="1"/>
|
||||
<field name="category_id" select="multi" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
};
|
||||
@@ -126,8 +126,8 @@ QUnit.module('Views', {
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field name="company_id"/>
|
||||
<field select="multi" name="category_id"/>
|
||||
<field name="company_id" enable_counters="1"/>
|
||||
<field name="category_id" select="multi" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
@@ -186,8 +186,8 @@ QUnit.module('Views', {
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field name="company_id" icon="fa-car" color="blue"/>
|
||||
<field select="multi" name="state" icon="fa-star" color="#000"/>
|
||||
<field name="company_id" icon="fa-car" color="blue" enable_counters="1"/>
|
||||
<field name="state" select="multi" icon="fa-star" color="#000" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
@@ -224,8 +224,8 @@ QUnit.module('Views', {
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field name="company_id"/>
|
||||
<field select="multi" invisible="1" name="state"/>
|
||||
<field name="company_id" enable_counters="1"/>
|
||||
<field name="state" select="multi" invisible="1" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
@@ -267,9 +267,9 @@ QUnit.module('Views', {
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field name="company_id"/>
|
||||
<field select="multi" name="category_id"/>
|
||||
<field name="state"/>
|
||||
<field name="company_id" enable_counters="1"/>
|
||||
<field name="category_id" select="multi" enable_counters="1"/>
|
||||
<field name="state" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
}
|
||||
@@ -308,8 +308,8 @@ QUnit.module('Views', {
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field name="company_id"/>
|
||||
<field name="state"/>
|
||||
<field name="company_id" enable_counters="1"/>
|
||||
<field name="state" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
@@ -356,7 +356,7 @@ QUnit.module('Views', {
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field name="company_id"/>
|
||||
<field name="company_id" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
@@ -419,7 +419,12 @@ QUnit.module('Views', {
|
||||
</templates>
|
||||
</kanban>`,
|
||||
archs: {
|
||||
'partner,false,search': `<search><searchpanel><field name="state"/></searchpanel></search>`,
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field name="state" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
});
|
||||
|
||||
@@ -492,7 +497,7 @@ QUnit.module('Views', {
|
||||
'partner,false,search': `
|
||||
<seasrch>
|
||||
<searchpanel>
|
||||
<field name="company_id"/>
|
||||
<field name="company_id" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</seasrch>`,
|
||||
},
|
||||
@@ -553,7 +558,12 @@ QUnit.module('Views', {
|
||||
</templates>
|
||||
</kanban>`,
|
||||
archs: {
|
||||
'partner,false,search': `<search><searchpanel><field name="company_id"/></searchpanel></search>`,
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field name="company_id" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
mockRPC: function (route, args) {
|
||||
if (route === '/web/dataset/search_read') {
|
||||
@@ -610,7 +620,12 @@ QUnit.module('Views', {
|
||||
</templates>
|
||||
</kanban>`,
|
||||
archs: {
|
||||
'partner,false,search': `<search><searchpanel><field name="company_id"/></searchpanel></search>`,
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field name="company_id" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
mockRPC: async function (route, args) {
|
||||
if (route === '/web/dataset/call_kw/partner/search_panel_select_range') {
|
||||
@@ -659,8 +674,8 @@ QUnit.module('Views', {
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field name="company_id"/>
|
||||
<field name="state"/>
|
||||
<field name="company_id" enable_counters="1"/>
|
||||
<field name="state" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
@@ -731,7 +746,12 @@ QUnit.module('Views', {
|
||||
</templates>
|
||||
</kanban>`,
|
||||
archs: {
|
||||
'partner,false,search': `<search><searchpanel><field name="company_id"/></searchpanel></search>`,
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field name="company_id" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
});
|
||||
|
||||
@@ -824,7 +844,12 @@ QUnit.module('Views', {
|
||||
</templates>
|
||||
</kanban>`,
|
||||
archs: {
|
||||
'partner,false,search': `<search><searchpanel><field name="category_id"/></searchpanel></search>`,
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field name="category_id" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
});
|
||||
|
||||
@@ -872,7 +897,12 @@ QUnit.module('Views', {
|
||||
</templates>
|
||||
</kanban>`,
|
||||
archs: {
|
||||
'partner,false,search': `<search><searchpanel><field name="company_id"/></searchpanel></search>`,
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field name="company_id" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
});
|
||||
|
||||
@@ -920,7 +950,12 @@ QUnit.module('Views', {
|
||||
</templates>
|
||||
</kanban>`,
|
||||
archs: {
|
||||
'partner,false,search': `<search><searchpanel><field name="company_id"/></searchpanel></search>`,
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field name="company_id" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
});
|
||||
|
||||
@@ -967,7 +1002,12 @@ QUnit.module('Views', {
|
||||
</templates>
|
||||
</kanban>`,
|
||||
archs: {
|
||||
'partner,false,search': `<search><searchpanel><field name="company_id"/></searchpanel></search>`,
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field name="company_id" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
domain: [['bar', '=', true]],
|
||||
});
|
||||
@@ -1050,8 +1090,8 @@ QUnit.module('Views', {
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field name="state"/>
|
||||
<field select="multi" name="company_id"/>
|
||||
<field name="state" enable_counters="1"/>
|
||||
<field name="company_id" select="multi" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
@@ -1129,7 +1169,7 @@ QUnit.module('Views', {
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field select="multi" name="company_id"/>
|
||||
<field name="company_id" select="multi" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
@@ -1193,7 +1233,7 @@ QUnit.module('Views', {
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field select="multi" name="company_id"/>
|
||||
<field name="company_id" select="multi" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
@@ -1300,7 +1340,7 @@ QUnit.module('Views', {
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field select="multi" name="state"/>
|
||||
<field name="state" select="multi" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
@@ -1392,8 +1432,8 @@ QUnit.module('Views', {
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field name="state" disable_counters="1"/>
|
||||
<field select="multi" name="company_id"/>
|
||||
<field name="state"/>
|
||||
<field name="company_id" select="multi" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
@@ -1460,8 +1500,8 @@ QUnit.module('Views', {
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field name="category_id" disable_counters="1"/>
|
||||
<field select="multi" name="company_id"/>
|
||||
<field name="category_id"/>
|
||||
<field name="company_id" select="multi" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
@@ -1531,8 +1571,8 @@ QUnit.module('Views', {
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field name="state"/>
|
||||
<field name="company_id" disable_counters="1"/>
|
||||
<field name="state" enable_counters="1"/>
|
||||
<field name="company_id"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
@@ -1635,7 +1675,7 @@ QUnit.module('Views', {
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field name="state" disable_counters="1"/>
|
||||
<field name="state"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
@@ -1745,7 +1785,7 @@ QUnit.module('Views', {
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field select="multi" name="company_id" groupby="category_id"/>
|
||||
<field name="company_id" select="multi" groupby="category_id" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
@@ -1852,7 +1892,7 @@ QUnit.module('Views', {
|
||||
search_domain: [],
|
||||
comodel_domain: [['parent_id', '=', false]],
|
||||
group_domain: [],
|
||||
disable_counters: false,
|
||||
enable_counters: true,
|
||||
});
|
||||
}
|
||||
return result;
|
||||
@@ -1872,7 +1912,7 @@ QUnit.module('Views', {
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field select="multi" name="company_id" domain="[('parent_id','=',False)]"/>
|
||||
<field name="company_id" select="multi" domain="[('parent_id','=',False)]" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
@@ -1922,8 +1962,8 @@ QUnit.module('Views', {
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field name="category_id"/>
|
||||
<field select="multi" name="company_id" domain="[['category_id', '=', category_id]]"/>
|
||||
<field name="category_id" enable_counters="1"/>
|
||||
<field name="company_id" select="multi" domain="[['category_id', '=', category_id]]" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
@@ -1992,8 +2032,8 @@ QUnit.module('Views', {
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field select="multi" name="company_id"/>
|
||||
<field select="multi" name="state"/>
|
||||
<field name="company_id" select="multi" enable_counters="1"/>
|
||||
<field name="state" select="multi" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
@@ -2042,7 +2082,7 @@ QUnit.module('Views', {
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field select="multi" name="company_id"/>
|
||||
<field name="company_id" select="multi" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
@@ -2084,7 +2124,7 @@ QUnit.module('Views', {
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field select="multi" name="company_id" groupby="category_id"/>
|
||||
<field name="company_id" select="multi" groupby="category_id" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
@@ -2143,14 +2183,14 @@ QUnit.module('Views', {
|
||||
// There should be a group 'false' displayed with only value B inside it.
|
||||
assert.containsOnce($firstSection, '.o_search_panel_filter_group');
|
||||
assert.strictEqual($firstSection.find('.o_search_panel_filter_group').text().replace(/\s/g, ''),
|
||||
'falseB2');
|
||||
'falseB');
|
||||
assert.containsOnce($firstSection.find('.o_search_panel_filter_group'), '.o_search_panel_filter_value');
|
||||
|
||||
// Globally, there should be two values, one displayed in the group 'false', and one at the end of the section
|
||||
// (the group false is not displayed and its values are displayed at the first level)
|
||||
assert.containsN($firstSection, '.o_search_panel_filter_value', 2);
|
||||
assert.strictEqual($firstSection.find('.o_search_panel_filter_value').text().replace(/\s/g, ''),
|
||||
'B2A2');
|
||||
'BA');
|
||||
|
||||
kanban.destroy();
|
||||
});
|
||||
@@ -2180,8 +2220,8 @@ QUnit.module('Views', {
|
||||
'partner,false,search': `
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field name="company_id"/>
|
||||
<field select="multi" name="category_id"/>
|
||||
<field name="company_id" enable_counters="1"/>
|
||||
<field name="category_id" select="multi" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
@@ -2228,8 +2268,8 @@ QUnit.module('Views', {
|
||||
this.archs['partner,false,search'] =
|
||||
`<search>
|
||||
<searchpanel view_types="kanban,pivot">
|
||||
<field name="company_id"/>
|
||||
<field select="multi" name="category_id"/>
|
||||
<field name="company_id" enable_counters="1"/>
|
||||
<field name="category_id" select="multi" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`;
|
||||
|
||||
@@ -2537,7 +2577,7 @@ QUnit.module('Views', {
|
||||
`<search>
|
||||
<field name="name"/>
|
||||
<searchpanel>
|
||||
<field name="category_id"/>
|
||||
<field name="category_id" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>`,
|
||||
},
|
||||
|
||||
@@ -1995,7 +1995,8 @@ Possible children elements of the search view are:
|
||||
|
||||
* ``color``: determines the icon color
|
||||
|
||||
* ``disable_counters``: default is false. If set to true the counters won't be computed.
|
||||
* ``enable_counters``: default is false. If set to true the record counters will be computed and
|
||||
displayed if non-zero.
|
||||
|
||||
This feature has been implemented in case performances would be too bad.
|
||||
|
||||
|
||||
@@ -234,7 +234,7 @@
|
||||
<rng:optional><rng:attribute name="group"/></rng:optional>
|
||||
<rng:optional><rng:attribute name="color"/></rng:optional>
|
||||
<rng:optional><rng:attribute name="groupby"/></rng:optional>
|
||||
<rng:optional><rng:attribute name="disable_counters"/></rng:optional>
|
||||
<rng:optional><rng:attribute name="enable_counters"/></rng:optional>
|
||||
<rng:optional><rng:attribute name="operator"/></rng:optional>
|
||||
<rng:optional><rng:attribute name="colspan"/></rng:optional>
|
||||
<rng:optional><rng:attribute name="nolabel"/></rng:optional>
|
||||
|
||||
@@ -1853,7 +1853,7 @@ class TestViews(ViewCase):
|
||||
%s
|
||||
<searchpanel>
|
||||
%s
|
||||
<field select="multi" name="groups_id" domain="[['%s', '=', %s]]"/>
|
||||
<field name="groups_id" select="multi" domain="[['%s', '=', %s]]" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>
|
||||
"""
|
||||
@@ -1878,10 +1878,10 @@ class TestViews(ViewCase):
|
||||
arch = """
|
||||
<search>
|
||||
<searchpanel>
|
||||
<field name="inherit_id"/>
|
||||
<field name="inherit_id" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
<searchpanel>
|
||||
<field name="inherit_id"/>
|
||||
<field name="inherit_id" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>
|
||||
"""
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
<filter string="State" name="state" domain="[]" context="{'group_by':'state'}"/>
|
||||
</group>
|
||||
<searchpanel>
|
||||
<field name="category_id" groupby="parent_id" string="Categories"/>
|
||||
<field name="category_id" groupby="parent_id" string="Categories" enable_counters="1"/>
|
||||
</searchpanel>
|
||||
</search>
|
||||
</field>
|
||||
|
||||
@@ -48,7 +48,10 @@ class TestSelectRangeMulti(odoo.tests.TransactionCase):
|
||||
r1_id, r2_id, _, _ = records.ids
|
||||
|
||||
# counters
|
||||
result = self.SourceModel.search_panel_select_multi_range('tag_id')
|
||||
result = self.SourceModel.search_panel_select_multi_range(
|
||||
'tag_id',
|
||||
enable_counters=True,
|
||||
)
|
||||
self.assertEqual(
|
||||
result,
|
||||
[
|
||||
@@ -61,6 +64,7 @@ class TestSelectRangeMulti(odoo.tests.TransactionCase):
|
||||
# counters and search domain
|
||||
result = self.SourceModel.search_panel_select_multi_range(
|
||||
'tag_id',
|
||||
enable_counters=True,
|
||||
search_domain=[['id', 'in', [r1_id, r2_id]]],
|
||||
)
|
||||
self.assertEqual(
|
||||
@@ -73,10 +77,7 @@ class TestSelectRangeMulti(odoo.tests.TransactionCase):
|
||||
)
|
||||
|
||||
# no counters
|
||||
result = self.SourceModel.search_panel_select_multi_range(
|
||||
'tag_id',
|
||||
disable_counters=True,
|
||||
)
|
||||
result = self.SourceModel.search_panel_select_multi_range('tag_id')
|
||||
self.assertEqual(
|
||||
result,
|
||||
[
|
||||
@@ -86,10 +87,8 @@ class TestSelectRangeMulti(odoo.tests.TransactionCase):
|
||||
],
|
||||
)
|
||||
|
||||
# no counters and search domain
|
||||
result = self.SourceModel.search_panel_select_multi_range(
|
||||
'tag_id',
|
||||
disable_counters=True,
|
||||
search_domain=[['id', 'in', [r1_id, r2_id]]],
|
||||
)
|
||||
self.assertEqual(
|
||||
@@ -101,10 +100,10 @@ class TestSelectRangeMulti(odoo.tests.TransactionCase):
|
||||
]
|
||||
)
|
||||
|
||||
# many2one group_by
|
||||
result = self.SourceModel.search_panel_select_multi_range(
|
||||
'tag_id',
|
||||
group_by='folder_id'
|
||||
enable_counters=True,
|
||||
group_by='folder_id',
|
||||
)
|
||||
self.assertEqual(
|
||||
result,
|
||||
@@ -121,6 +120,7 @@ class TestSelectRangeMulti(odoo.tests.TransactionCase):
|
||||
# selection group_by
|
||||
result = self.SourceModel.search_panel_select_multi_range(
|
||||
'tag_id',
|
||||
enable_counters=True,
|
||||
group_by='status'
|
||||
)
|
||||
self.assertEqual(
|
||||
@@ -138,6 +138,7 @@ class TestSelectRangeMulti(odoo.tests.TransactionCase):
|
||||
# other group_by
|
||||
result = self.SourceModel.search_panel_select_multi_range(
|
||||
'tag_id',
|
||||
enable_counters=True,
|
||||
group_by='color'
|
||||
)
|
||||
self.assertEqual(
|
||||
@@ -189,7 +190,10 @@ class TestSelectRangeMulti(odoo.tests.TransactionCase):
|
||||
r1_id, r2_id, _, _ = records.ids
|
||||
|
||||
# counters
|
||||
result = self.SourceModel.search_panel_select_multi_range('tag_ids')
|
||||
result = self.SourceModel.search_panel_select_multi_range(
|
||||
'tag_ids',
|
||||
enable_counters=True,
|
||||
)
|
||||
self.assertEqual(
|
||||
result,
|
||||
[
|
||||
@@ -202,6 +206,7 @@ class TestSelectRangeMulti(odoo.tests.TransactionCase):
|
||||
# counters and search domain
|
||||
result = self.SourceModel.search_panel_select_multi_range(
|
||||
'tag_ids',
|
||||
enable_counters=True,
|
||||
search_domain=[['id', 'in', [r1_id, r2_id]]],
|
||||
)
|
||||
self.assertEqual(
|
||||
@@ -214,10 +219,7 @@ class TestSelectRangeMulti(odoo.tests.TransactionCase):
|
||||
)
|
||||
|
||||
# no counters
|
||||
result = self.SourceModel.search_panel_select_multi_range(
|
||||
'tag_ids',
|
||||
disable_counters=True,
|
||||
)
|
||||
result = self.SourceModel.search_panel_select_multi_range('tag_ids')
|
||||
self.assertEqual(
|
||||
result,
|
||||
[
|
||||
@@ -230,7 +232,6 @@ class TestSelectRangeMulti(odoo.tests.TransactionCase):
|
||||
# no counters and search domain
|
||||
result = self.SourceModel.search_panel_select_multi_range(
|
||||
'tag_ids',
|
||||
disable_counters=True,
|
||||
search_domain=[['id', 'in', [r1_id, r2_id]]],
|
||||
)
|
||||
self.assertEqual(
|
||||
@@ -245,6 +246,7 @@ class TestSelectRangeMulti(odoo.tests.TransactionCase):
|
||||
# many2one group_by
|
||||
result = self.SourceModel.search_panel_select_multi_range(
|
||||
'tag_ids',
|
||||
enable_counters=True,
|
||||
group_by='folder_id'
|
||||
)
|
||||
self.assertEqual(
|
||||
@@ -262,6 +264,7 @@ class TestSelectRangeMulti(odoo.tests.TransactionCase):
|
||||
# selection group_by
|
||||
result = self.SourceModel.search_panel_select_multi_range(
|
||||
'tag_ids',
|
||||
enable_counters=True,
|
||||
group_by='status'
|
||||
)
|
||||
self.assertEqual(
|
||||
@@ -279,6 +282,7 @@ class TestSelectRangeMulti(odoo.tests.TransactionCase):
|
||||
# other group_by
|
||||
result = self.SourceModel.search_panel_select_multi_range(
|
||||
'tag_ids',
|
||||
enable_counters=True,
|
||||
group_by='color'
|
||||
)
|
||||
self.assertEqual(
|
||||
@@ -296,6 +300,7 @@ class TestSelectRangeMulti(odoo.tests.TransactionCase):
|
||||
# group_domain and many2one groupby
|
||||
result = self.SourceModel.search_panel_select_multi_range(
|
||||
'tag_ids',
|
||||
enable_counters=True,
|
||||
group_by='folder_id',
|
||||
group_domain={
|
||||
json.dumps(f1_id): [('tag_ids', 'in', [t1_id]), ],
|
||||
@@ -318,6 +323,7 @@ class TestSelectRangeMulti(odoo.tests.TransactionCase):
|
||||
# group_domain and other group_by
|
||||
result = self.SourceModel.search_panel_select_multi_range(
|
||||
'tag_ids',
|
||||
enable_counters=True,
|
||||
group_by='color',
|
||||
group_domain={
|
||||
json.dumps(False): [('tag_ids', 'in', [t1_id]), ],
|
||||
@@ -357,7 +363,10 @@ class TestSelectRangeMulti(odoo.tests.TransactionCase):
|
||||
r1_id, _ = records.ids
|
||||
|
||||
# counters
|
||||
result = self.SourceModel.search_panel_select_multi_range('state')
|
||||
result = self.SourceModel.search_panel_select_multi_range(
|
||||
'state',
|
||||
enable_counters=True,
|
||||
)
|
||||
self.assertEqual(
|
||||
result,
|
||||
[
|
||||
@@ -369,7 +378,6 @@ class TestSelectRangeMulti(odoo.tests.TransactionCase):
|
||||
# no counters
|
||||
result = self.SourceModel.search_panel_select_multi_range(
|
||||
'state',
|
||||
disable_counters=True,
|
||||
)
|
||||
self.assertEqual(
|
||||
result,
|
||||
@@ -382,6 +390,7 @@ class TestSelectRangeMulti(odoo.tests.TransactionCase):
|
||||
# counters and search domain
|
||||
result = self.SourceModel.search_panel_select_multi_range(
|
||||
'state',
|
||||
enable_counters=True,
|
||||
search_domain=[['id', '=', r1_id]],
|
||||
)
|
||||
self.assertEqual(
|
||||
@@ -395,7 +404,6 @@ class TestSelectRangeMulti(odoo.tests.TransactionCase):
|
||||
# no counters and search domain
|
||||
result = self.SourceModel.search_panel_select_multi_range(
|
||||
'state',
|
||||
disable_counters=True,
|
||||
search_domain=[['id', '=', r1_id]],
|
||||
)
|
||||
self.assertEqual(
|
||||
|
||||
@@ -48,7 +48,10 @@ class TestSelectRange(odoo.tests.TransactionCase):
|
||||
r1_id, _, r3_id, _ = records.ids
|
||||
|
||||
# counters
|
||||
result = self.SourceModel.search_panel_select_range('folder_id')
|
||||
result = self.SourceModel.search_panel_select_range(
|
||||
'folder_id',
|
||||
enable_counters=True,
|
||||
)
|
||||
self.assertEqual(
|
||||
result['values'],
|
||||
[
|
||||
@@ -66,6 +69,7 @@ class TestSelectRange(odoo.tests.TransactionCase):
|
||||
# counters and search domain
|
||||
result = self.SourceModel.search_panel_select_range(
|
||||
'folder_id',
|
||||
enable_counters=True,
|
||||
search_domain=[['id', 'in', [r1_id, r3_id]]],
|
||||
)
|
||||
self.assertEqual(
|
||||
@@ -83,10 +87,7 @@ class TestSelectRange(odoo.tests.TransactionCase):
|
||||
)
|
||||
|
||||
# no counters
|
||||
result = self.SourceModel.search_panel_select_range(
|
||||
'folder_id',
|
||||
disable_counters=True,
|
||||
)
|
||||
result = self.SourceModel.search_panel_select_range('folder_id')
|
||||
self.assertEqual(
|
||||
result['values'],
|
||||
[
|
||||
@@ -104,7 +105,6 @@ class TestSelectRange(odoo.tests.TransactionCase):
|
||||
# no counters and search domain
|
||||
result = self.SourceModel.search_panel_select_range(
|
||||
'folder_id',
|
||||
disable_counters=True,
|
||||
search_domain=[['id', 'in', [r1_id, r3_id]]],
|
||||
)
|
||||
self.assertEqual(
|
||||
@@ -162,7 +162,10 @@ class TestSelectRange(odoo.tests.TransactionCase):
|
||||
])
|
||||
|
||||
# counters
|
||||
result = self.SourceModel.search_panel_select_range('folder_id')
|
||||
result = self.SourceModel.search_panel_select_range(
|
||||
'folder_id',
|
||||
enable_counters=True,
|
||||
)
|
||||
self.assertEqual(
|
||||
result['values'],
|
||||
[
|
||||
@@ -220,7 +223,10 @@ class TestSelectRange(odoo.tests.TransactionCase):
|
||||
r1_id, _, r3_id, _ = records.ids
|
||||
|
||||
# counters
|
||||
result = self.SourceModel.search_panel_select_range('categ_id')
|
||||
result = self.SourceModel.search_panel_select_range(
|
||||
'categ_id',
|
||||
enable_counters=True,
|
||||
)
|
||||
self.assertEqual(
|
||||
result['values'],
|
||||
[
|
||||
@@ -233,6 +239,7 @@ class TestSelectRange(odoo.tests.TransactionCase):
|
||||
# counters and search domain
|
||||
result = self.SourceModel.search_panel_select_range(
|
||||
'categ_id',
|
||||
enable_counters=True,
|
||||
search_domain=[['id', 'in', [r1_id, r3_id]]],
|
||||
)
|
||||
self.assertEqual(
|
||||
@@ -245,10 +252,7 @@ class TestSelectRange(odoo.tests.TransactionCase):
|
||||
)
|
||||
|
||||
# no counters
|
||||
result = self.SourceModel.search_panel_select_range(
|
||||
'categ_id',
|
||||
disable_counters=True,
|
||||
)
|
||||
result = self.SourceModel.search_panel_select_range('categ_id')
|
||||
self.assertEqual(
|
||||
result['values'],
|
||||
[
|
||||
@@ -261,7 +265,6 @@ class TestSelectRange(odoo.tests.TransactionCase):
|
||||
# no counters and search domain
|
||||
result = self.SourceModel.search_panel_select_range(
|
||||
'categ_id',
|
||||
disable_counters=True,
|
||||
search_domain=[['id', 'in', [r1_id, r3_id]]],
|
||||
)
|
||||
self.assertEqual(
|
||||
@@ -297,7 +300,10 @@ class TestSelectRange(odoo.tests.TransactionCase):
|
||||
r1_id, _ = records.ids
|
||||
|
||||
# counters
|
||||
result = self.SourceModel.search_panel_select_range('state')
|
||||
result = self.SourceModel.search_panel_select_range(
|
||||
'state',
|
||||
enable_counters=True,
|
||||
)
|
||||
self.assertEqual(
|
||||
result['values'],
|
||||
[
|
||||
@@ -307,10 +313,7 @@ class TestSelectRange(odoo.tests.TransactionCase):
|
||||
)
|
||||
|
||||
# no counters
|
||||
result = self.SourceModel.search_panel_select_range(
|
||||
'state',
|
||||
disable_counters=True,
|
||||
)
|
||||
result = self.SourceModel.search_panel_select_range('state')
|
||||
self.assertEqual(
|
||||
result['values'],
|
||||
[
|
||||
@@ -322,6 +325,7 @@ class TestSelectRange(odoo.tests.TransactionCase):
|
||||
# counters and search domain
|
||||
result = self.SourceModel.search_panel_select_range(
|
||||
'state',
|
||||
enable_counters=True,
|
||||
search_domain=[['id', '=', r1_id]],
|
||||
)
|
||||
self.assertEqual(
|
||||
@@ -335,7 +339,6 @@ class TestSelectRange(odoo.tests.TransactionCase):
|
||||
# no counters and search domain
|
||||
result = self.SourceModel.search_panel_select_range(
|
||||
'state',
|
||||
disable_counters=True,
|
||||
search_domain=[['id', '=', r1_id]],
|
||||
)
|
||||
self.assertEqual(
|
||||
|
||||
Reference in New Issue
Block a user