adding base project
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
from fastapi import APIRouter, Depends, HTTPException, status
|
||||
from sqlalchemy.orm import Session
|
||||
from typing import List, Any, Optional
|
||||
|
||||
from app.core.deps import get_db, get_current_user_token
|
||||
from app.menu.models import GrpMenuAccess
|
||||
|
||||
router = APIRouter(tags=["Menu & Navigation"])
|
||||
|
||||
@router.get("/fndMenu/menuloadbyuser")
|
||||
@router.get("/MenuAccess/set_menu_for_user")
|
||||
def menu_load_by_user(
|
||||
db: Session = Depends(get_db),
|
||||
token_payload: Optional[dict] = Depends(get_current_user_token)
|
||||
):
|
||||
"""
|
||||
Returns menu hierarchy matching Spring Boot's LoadMenuController /menuloadbyuser.
|
||||
Fetches all root menu items (menu_id = 0) and attaches their corresponding submenus.
|
||||
"""
|
||||
usr_grp = 1
|
||||
if token_payload:
|
||||
usr_grp = token_payload.get("user_grp", 1)
|
||||
|
||||
# 1. Fetch root menus (menu_id == 0)
|
||||
roots = db.query(GrpMenuAccess).filter(
|
||||
GrpMenuAccess.menu_id == 0,
|
||||
GrpMenuAccess.usr_grp == usr_grp,
|
||||
GrpMenuAccess.status == "A"
|
||||
).order_by(GrpMenuAccess.item_seq).all()
|
||||
|
||||
response_list = []
|
||||
for r in roots:
|
||||
# 2. Fetch submenus for each root
|
||||
submenus = db.query(GrpMenuAccess).filter(
|
||||
GrpMenuAccess.menu_id == r.menu_item_id,
|
||||
GrpMenuAccess.usr_grp == usr_grp,
|
||||
GrpMenuAccess.status == "A"
|
||||
).order_by(GrpMenuAccess.item_seq).all()
|
||||
|
||||
sub_list = []
|
||||
for s in submenus:
|
||||
sub_list.append({
|
||||
"id": s.id,
|
||||
"menuId": s.menu_id,
|
||||
"menuItemId": s.menu_item_id,
|
||||
"menuItemDesc": s.menu_item_desc,
|
||||
"moduleName": s.module_name,
|
||||
"main_menu_action_name": s.main_menu_action_name,
|
||||
"main_menu_icon_name": s.main_menu_icon_name,
|
||||
"itemSeq": s.item_seq,
|
||||
"status": s.status,
|
||||
"role": s.role,
|
||||
"mCreate": s.m_create,
|
||||
"mEdit": s.m_edit,
|
||||
"mQuery": s.m_query,
|
||||
"mDelete": s.m_delete,
|
||||
"mexport": s.m_export,
|
||||
"mVisible": s.m_visible
|
||||
})
|
||||
|
||||
response_list.append({
|
||||
"id": r.id,
|
||||
"menuId": r.menu_id,
|
||||
"menuItemId": r.menu_item_id,
|
||||
"menuItemDesc": r.menu_item_desc,
|
||||
"moduleName": r.module_name,
|
||||
"main_menu_action_name": r.main_menu_action_name,
|
||||
"main_menu_icon_name": r.main_menu_icon_name,
|
||||
"itemSeq": r.item_seq,
|
||||
"status": r.status,
|
||||
"role": r.role,
|
||||
"subMenus": sub_list
|
||||
})
|
||||
|
||||
return response_list
|
||||
|
||||
@router.get("/fndMenu/listofusrgrp")
|
||||
def list_of_usr_grp(db: Session = Depends(get_db)):
|
||||
"""Returns all distinct user groups."""
|
||||
return [{"usrGrp": 1, "groupName": "Admin Group"}]
|
||||
Reference in New Issue
Block a user