# -*- coding: utf-8 -*- """ @File : home.py @Time : 2024/12/22 @Author : XSK @Version : 16.0 @Contact : chiyuan@workdomain.top @Desc : 添加菜单角标数量获取接口 """ from odoo import http from odoo.http import request from odoo.addons.web.controllers.home import Home as WebHome # 菜单角标数量对应模型枚举 # '菜单的xmlid': { 'model': '获取角标数量的模型', 'func': '获取的函数'} MENU_BADGE_MODEL_FUNC_ENUM = { 'base.menu_action_res_users': {'model': 'file.preview.test', 'func': 'get_menu_badge_count'}, 'yuthon_notice.yuthon_notice_menu1': {'model': 'yuthon.notice', 'func': 'get_no_read_count'}, 'purchase.purchase_order_view_tree': {'model': 'purchase.order', 'func': 'get_no_read_count'}, 'yuthon_property.yuthon_property_rent_list': {'model': 'property.rent.list', 'func': 'get_no_read_count'}, 'yuthon_property.yuthon_property_management_list': {'model': 'property.management.list', 'func': 'get_no_read_count'}, 'yuthon_property.yuthon_property_deposit_list': {'model': 'property.deposit.list', 'func': 'get_no_read_count'}, 'yuthon_will_task.menu_yuthon_will_task_root': {'model': 'yuthon.will.task', 'func': 'read_number'}, 'issue_library.yuthon_library_my_menu': {'model': 'issue.library', 'func': 'read_number'}, 'yuthon_property_approval.property_lease_contract_coming_menu': {'model': 'property.lease.contract', 'func': 'read_coming_count'}, 'yuthon_property_approval.property_lease_contract_coming_due_menu': {'model': 'property.lease.contract', 'func': 'read_due_count'}, } class Home(WebHome): # 获取菜单角标数量 @http.route('/web/webclient/load_menus_badges_count', type='json', auth='public') def web_load_menus_badges_count(self): menu_badge_count = {} for menu, data in MENU_BADGE_MODEL_FUNC_ENUM.items(): try: use_model = data.get('model') use_func = data.get('func') if use_model and use_func: menu_badge_count[menu] = getattr(request.env[use_model], use_func)() except Exception as e: print(str(e)) return menu_badge_count