46 lines
2.1 KiB
Python
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
|