mirror of
https://github.com/rzmk/learnhouse.git
synced 2025-12-19 04:19:25 +00:00
197 lines
5.6 KiB
Python
197 lines
5.6 KiB
Python
from fastapi import APIRouter, Depends, Request
|
|
from sqlmodel import Session
|
|
from src.db.usergroups import UserGroupCreate, UserGroupRead, UserGroupUpdate
|
|
from src.db.users import PublicUser, UserRead
|
|
from src.services.users.usergroups import (
|
|
add_resources_to_usergroup,
|
|
add_users_to_usergroup,
|
|
create_usergroup,
|
|
delete_usergroup_by_id,
|
|
get_usergroups_by_resource,
|
|
get_users_linked_to_usergroup,
|
|
read_usergroup_by_id,
|
|
read_usergroups_by_org_id,
|
|
remove_resources_from_usergroup,
|
|
remove_users_from_usergroup,
|
|
update_usergroup_by_id,
|
|
)
|
|
from src.security.auth import get_current_user
|
|
from src.core.events.database import get_db_session
|
|
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.post("/", response_model=UserGroupRead, tags=["usergroups"])
|
|
async def api_create_usergroup(
|
|
*,
|
|
request: Request,
|
|
db_session: Session = Depends(get_db_session),
|
|
current_user: PublicUser = Depends(get_current_user),
|
|
usergroup_object: UserGroupCreate,
|
|
) -> UserGroupRead:
|
|
"""
|
|
Create User
|
|
"""
|
|
return await create_usergroup(request, db_session, current_user, usergroup_object)
|
|
|
|
|
|
@router.get("/{usergroup_id}", response_model=UserGroupRead, tags=["usergroups"])
|
|
async def api_get_usergroup(
|
|
*,
|
|
request: Request,
|
|
db_session: Session = Depends(get_db_session),
|
|
current_user: PublicUser = Depends(get_current_user),
|
|
usergroup_id: int,
|
|
) -> UserGroupRead:
|
|
"""
|
|
Get UserGroup
|
|
"""
|
|
return await read_usergroup_by_id(request, db_session, current_user, usergroup_id)
|
|
|
|
|
|
@router.get("/{usergroup_id}/users", response_model=list[UserRead], tags=["usergroups"])
|
|
async def api_get_users_linked_to_usergroup(
|
|
*,
|
|
request: Request,
|
|
db_session: Session = Depends(get_db_session),
|
|
current_user: PublicUser = Depends(get_current_user),
|
|
usergroup_id: int,
|
|
) -> list[UserRead]:
|
|
"""
|
|
Get Users linked to UserGroup
|
|
"""
|
|
return await get_users_linked_to_usergroup(
|
|
request, db_session, current_user, usergroup_id
|
|
)
|
|
|
|
|
|
@router.get("/org/{org_id}", response_model=list[UserGroupRead], tags=["usergroups"])
|
|
async def api_get_usergroups(
|
|
*,
|
|
request: Request,
|
|
db_session: Session = Depends(get_db_session),
|
|
current_user: PublicUser = Depends(get_current_user),
|
|
org_id: int,
|
|
) -> list[UserGroupRead]:
|
|
"""
|
|
Get UserGroups by Org
|
|
"""
|
|
return await read_usergroups_by_org_id(request, db_session, current_user, org_id)
|
|
|
|
|
|
@router.get(
|
|
"/resource/{resource_uuid}", response_model=list[UserGroupRead], tags=["usergroups"]
|
|
)
|
|
async def api_get_usergroupsby_resource(
|
|
*,
|
|
request: Request,
|
|
db_session: Session = Depends(get_db_session),
|
|
current_user: PublicUser = Depends(get_current_user),
|
|
resource_uuid: str,
|
|
) -> list[UserGroupRead]:
|
|
"""
|
|
Get UserGroups by Org
|
|
"""
|
|
return await get_usergroups_by_resource(
|
|
request, db_session, current_user, resource_uuid
|
|
)
|
|
|
|
|
|
@router.put("/{usergroup_id}", response_model=UserGroupRead, tags=["usergroups"])
|
|
async def api_update_usergroup(
|
|
*,
|
|
request: Request,
|
|
db_session: Session = Depends(get_db_session),
|
|
current_user: PublicUser = Depends(get_current_user),
|
|
usergroup_id: int,
|
|
usergroup_object: UserGroupUpdate,
|
|
) -> UserGroupRead:
|
|
"""
|
|
Update UserGroup
|
|
"""
|
|
return await update_usergroup_by_id(
|
|
request, db_session, current_user, usergroup_id, usergroup_object
|
|
)
|
|
|
|
|
|
@router.delete("/{usergroup_id}", tags=["usergroups"])
|
|
async def api_delete_usergroup(
|
|
*,
|
|
request: Request,
|
|
db_session: Session = Depends(get_db_session),
|
|
current_user: PublicUser = Depends(get_current_user),
|
|
usergroup_id: int,
|
|
) -> str:
|
|
"""
|
|
Delete UserGroup
|
|
"""
|
|
return await delete_usergroup_by_id(request, db_session, current_user, usergroup_id)
|
|
|
|
|
|
@router.post("/{usergroup_id}/add_users", tags=["usergroups"])
|
|
async def api_add_users_to_usergroup(
|
|
*,
|
|
request: Request,
|
|
db_session: Session = Depends(get_db_session),
|
|
current_user: PublicUser = Depends(get_current_user),
|
|
usergroup_id: int,
|
|
user_ids: str,
|
|
) -> str:
|
|
"""
|
|
Add Users to UserGroup
|
|
"""
|
|
return await add_users_to_usergroup(
|
|
request, db_session, current_user, usergroup_id, user_ids
|
|
)
|
|
|
|
|
|
@router.delete("/{usergroup_id}/remove_users", tags=["usergroups"])
|
|
async def api_delete_users_from_usergroup(
|
|
*,
|
|
request: Request,
|
|
db_session: Session = Depends(get_db_session),
|
|
current_user: PublicUser = Depends(get_current_user),
|
|
usergroup_id: int,
|
|
user_ids: str,
|
|
) -> str:
|
|
"""
|
|
Delete Users from UserGroup
|
|
"""
|
|
return await remove_users_from_usergroup(
|
|
request, db_session, current_user, usergroup_id, user_ids
|
|
)
|
|
|
|
|
|
@router.post("/{usergroup_id}/add_resources", tags=["usergroups"])
|
|
async def api_add_resources_to_usergroup(
|
|
*,
|
|
request: Request,
|
|
db_session: Session = Depends(get_db_session),
|
|
current_user: PublicUser = Depends(get_current_user),
|
|
usergroup_id: int,
|
|
resource_uuids: str,
|
|
) -> str:
|
|
"""
|
|
Add Resources to UserGroup
|
|
"""
|
|
return await add_resources_to_usergroup(
|
|
request, db_session, current_user, usergroup_id, resource_uuids
|
|
)
|
|
|
|
|
|
@router.delete("/{usergroup_id}/remove_resources", tags=["usergroups"])
|
|
async def api_delete_resources_from_usergroup(
|
|
*,
|
|
request: Request,
|
|
db_session: Session = Depends(get_db_session),
|
|
current_user: PublicUser = Depends(get_current_user),
|
|
usergroup_id: int,
|
|
resource_uuids: str,
|
|
) -> str:
|
|
"""
|
|
Delete Resources from UserGroup
|
|
"""
|
|
return await remove_resources_from_usergroup(
|
|
request, db_session, current_user, usergroup_id, resource_uuids
|
|
)
|