Files
2025-12-23 10:03:45 +08:00

46 lines
2.1 KiB
Python

# -*- 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