summaryrefslogtreecommitdiff
path: root/odoo/addons/base/models/ir_module.py
diff options
context:
space:
mode:
authorBarad Mahendra <mba@openerp.com>2020-08-13 13:40:51 +0000
committerBarad Mahendra <mba@openerp.com>2020-08-14 07:38:58 +0000
commitafe918c58e70c0698bcb38776c330731cbb7c56b (patch)
tree9bbddad4b80ae61b72986cedf4e1b6f64a09310e /odoo/addons/base/models/ir_module.py
parent00a7f3aaaddefb9cde9fa40b542f6f6915035637 (diff)
[IMP] base: Improve the search panel for module.
Purpose of the task is to improve the searchpanel of module and display only those category which has parent ctagory is false. So in this commit, - Display only those category which has parent_id is False - But count the number from child category as well as parent category does not contains the module - always visible those category even module count is 0 TaskID: 2240257 Related Enterprise: https://github.com/odoo/enterprise/pull/12413 Closes:55907 closes odoo/odoo#55907 Related: odoo/enterprise#12413 Related: odoo/upgrade#1626 Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
Diffstat (limited to 'odoo/addons/base/models/ir_module.py')
-rw-r--r--odoo/addons/base/models/ir_module.py33
1 files changed, 23 insertions, 10 deletions
diff --git a/odoo/addons/base/models/ir_module.py b/odoo/addons/base/models/ir_module.py
index fbc68d33a82..f5ae25bf811 100644
--- a/odoo/addons/base/models/ir_module.py
+++ b/odoo/addons/base/models/ir_module.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import base64
-from collections import defaultdict
+from collections import defaultdict, OrderedDict
from decorator import decorator
from operator import attrgetter
import importlib
@@ -926,7 +926,8 @@ class Module(models.Model):
@api.model
def search_panel_select_range(self, field_name, **kwargs):
if field_name == 'category_id':
- domain = [('module_ids', '!=', False)]
+ enable_counters = kwargs.get('enable_counters', False)
+ domain = [('parent_id', '=', False), ('child_ids.module_ids', '!=', False)]
excluded_xmlids = [
'base.module_category_website_theme',
@@ -947,16 +948,28 @@ class Module(models.Model):
domain,
[('id', 'not in', excluded_category_ids)],
])
- categories = self.env['ir.module.category'].search(domain)
- categories = categories | categories.mapped('parent_id')
- comodel_domain = [('id', 'in', categories.ids)]
+ Module = self.env['ir.module.module']
+ records = self.env['ir.module.category'].search_read(domain, ['display_name'])
+
+ values_range = OrderedDict()
+ for record in records:
+ record_id = record['id']
+ if enable_counters:
+ model_domain = expression.AND([
+ kwargs.get('search_domain', []),
+ kwargs.get('category_domain', []),
+ kwargs.get('filter_domain', []),
+ [('category_id', 'child_of', record_id), ('category_id', 'not in', excluded_category_ids)]
+ ])
+ record['__count'] = Module.search_count(model_domain)
+ values_range[record_id] = record
+
+ return {
+ 'parent_field': 'parent_id',
+ 'values': list(values_range.values()),
+ }
- return super(Module, self).search_panel_select_range(
- field_name,
- comodel_domain=comodel_domain,
- **kwargs
- )
return super(Module, self).search_panel_select_range(field_name, **kwargs)