update. 完善用户相关增删改查接口以及Schema模型

This commit is contained in:
2026-04-11 05:29:27 +08:00
parent a9de2d1f68
commit 7dd59de036
8 changed files with 243 additions and 130 deletions
+16 -24
View File
@@ -1,23 +1,29 @@
# api/menus.py
from typing import List
from django.shortcuts import get_object_or_404
from loguru import logger
from ninja import Router
from ninja.errors import HttpError
from users.models import Menu
from users.permission import has_permission
from users.permission import require_permissions
from users.schema import MenuOut, MenuCreate, MenuUpdate
router = Router(tags=['menus'])
@router.post("/", response=MenuOut, summary="创建菜单")
def create_menu(request, payload: MenuCreate):
if not has_permission(request.auth.id, "menu:create"):
raise HttpError(403, "权限不足")
@router.get("/", response=List[MenuOut], summary="获取菜单列表")
@require_permissions("menu:list")
def list_menus(request):
menus = Menu.objects.all()
logger.info(menus)
permissions = [m.permission_code for m in menus]
logger.info(permissions)
return menus
@router.post("/", response=MenuOut, summary="创建菜单")
@require_permissions("menu:create")
def create_menu(request, payload: MenuCreate):
data = payload.dict()
parent_id = data.pop('parent_id', None)
if parent_id:
@@ -27,29 +33,16 @@ def create_menu(request, payload: MenuCreate):
return menu
@router.get("/", response=List[MenuOut], summary="获取菜单列表")
def list_menus(request):
if not has_permission(request.auth.id, "menu:list"):
raise HttpError(403, "权限不足")
menus = Menu.objects.all()
logger.info(menus)
permissions = [m.permission_code for m in menus]
logger.info(permissions)
return menus
@router.get("/{menu_id}/", response=MenuOut, summary="获取菜单详情")
@require_permissions("menu:view")
def get_menu(request, menu_id: int):
if not has_permission(request.auth.id, "menu:view"):
raise HttpError(403, "权限不足")
menu = get_object_or_404(Menu, id=menu_id)
return menu
@router.put("/{menu_id}/", response=MenuOut, summary="更新菜单")
@require_permissions("menu:update")
def update_menu(request, menu_id: int, payload: MenuUpdate):
# if not has_permission(request.auth.id, "menu:update"):
# raise HttpError(403, "权限不足")
logger.debug(payload)
menu = get_object_or_404(Menu, id=menu_id)
data = payload.dict()
@@ -67,9 +60,8 @@ def update_menu(request, menu_id: int, payload: MenuUpdate):
@router.delete("/{menu_id}/", summary="删除菜单")
@require_permissions("menu:delete")
def delete_menu(request, menu_id: int):
if not has_permission(request.auth.id, "menu:delete"):
raise HttpError(403, "权限不足")
menu = get_object_or_404(Menu, id=menu_id)
menu.delete()
return {"success": True}