diff options
| author | Barad Mahendra <mba@openerp.com> | 2020-08-13 13:40:51 +0000 |
|---|---|---|
| committer | Barad Mahendra <mba@openerp.com> | 2020-08-14 07:38:58 +0000 |
| commit | afe918c58e70c0698bcb38776c330731cbb7c56b (patch) | |
| tree | 9bbddad4b80ae61b72986cedf4e1b6f64a09310e /odoo/addons/base/models/ir_module.py | |
| parent | 00a7f3aaaddefb9cde9fa40b542f6f6915035637 (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.py | 33 |
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) |
