From c0cbbc3b03125e51482ccd55e52cdfae5289db3d Mon Sep 17 00:00:00 2001 From: Antonin Bourguignon Date: Mon, 29 Oct 2012 11:46:36 +0100 Subject: [PATCH] [IMP] define a name_get() that includes the complete hierarchy of menus also improve code style (var names) bzr revid: abo@openerp.com-20121029104636-6psw5ucyjy3zoyro --- openerp/addons/base/ir/ir_ui_menu.py | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/openerp/addons/base/ir/ir_ui_menu.py b/openerp/addons/base/ir/ir_ui_menu.py index 5ab546cb554..43ece8c0868 100644 --- a/openerp/addons/base/ir/ir_ui_menu.py +++ b/openerp/addons/base/ir/ir_ui_menu.py @@ -132,20 +132,29 @@ class ir_ui_menu(osv.osv): return len(result) return result - def _get_full_name(self, cr, uid, ids, name, args, context): - res = {} - for m in self.browse(cr, uid, ids, context=context): - res[m.id] = self._get_one_full_name(m) + def name_get(self, cr, uid, ids, context=None): + res = [] + for id in ids: + elmt = self.browse(cr, uid, id, context=context) + res.append((id, self._get_one_full_name(elmt))) return res - def _get_one_full_name(self, menu, level=6): + def _get_full_name(self, cr, uid, ids, name=None, args=None, context=None): + if context == None: + context = {} + res = {} + for elmt in self.browse(cr, uid, ids, context=context): + res[elmt.id] = self._get_one_full_name(elmt) + return res + + def _get_one_full_name(self, elmt, level=6): if level<=0: return '...' - if menu.parent_id: - parent_path = self._get_one_full_name(menu.parent_id, level-1) + "/" + if elmt.parent_id: + parent_path = self._get_one_full_name(elmt.parent_id, level-1) + "/" else: parent_path = '' - return parent_path + menu.name + return parent_path + elmt.name def create(self, *args, **kwargs): self.clear_cache() @@ -282,7 +291,7 @@ class ir_ui_menu(osv.osv): 'groups_id': fields.many2many('res.groups', 'ir_ui_menu_group_rel', 'menu_id', 'gid', 'Groups', help="If you have groups, the visibility of this menu will be based on these groups. "\ "If this field is empty, OpenERP will compute visibility based on the related object's read access."), - 'complete_name': fields.function(_get_full_name, + 'complete_name': fields.function(_get_full_name, string='Full Path', type='char', size=128), 'icon': fields.selection(tools.icons, 'Icon', size=64), 'icon_pict': fields.function(_get_icon_pict, type='char', size=32),