import logging from celery import shared_task from ERP_5.utils.tasks_hook import HookTask from erp_system.models import PermissionsModel, Menu # 默认情况下,每一个功能菜单的接口的请求方法数量 methods = {'POST': '新增', 'GET': '查询', 'PUT': '修改', 'DELETE': '删除', 'PATCH': '局部修改'} logger = logging.getLogger('my') # 在装饰器中,指定一个任务钩子 @shared_task(base=HookTask) def create_menus_permissions(menu_id): # 定义了一个任务 logger.info('Menu对象已经新增完成了!') instance = Menu.objects.get(pk=menu_id) if not instance.parent: # 表示是一个顶级菜单,没有请求URL地址,不是一个接口 permission = PermissionsModel.objects.create( name=instance.name + "的权限", is_menu=True, menu=instance ) else: # 表示是接口:有父菜单,有请求的url地址 for method in methods: permission = PermissionsModel.objects.create( name=methods.get(method) + "的权限", is_menu=False, menu=instance, method=method, path=instance.url, desc=f'{instance.name}的{methods.get(method)}的权限' )