Spaces:
Sleeping
Sleeping
import os | |
from pathlib import Path | |
from typing import Optional | |
from open_webui.apps.webui.models.groups import ( | |
Groups, | |
GroupForm, | |
GroupUpdateForm, | |
GroupResponse, | |
) | |
from open_webui.config import CACHE_DIR | |
from open_webui.constants import ERROR_MESSAGES | |
from fastapi import APIRouter, Depends, HTTPException, Request, status | |
from open_webui.utils.utils import get_admin_user, get_verified_user | |
router = APIRouter() | |
############################ | |
# GetFunctions | |
############################ | |
async def get_groups(user=Depends(get_verified_user)): | |
if user.role == "admin": | |
return Groups.get_groups() | |
else: | |
return Groups.get_groups_by_member_id(user.id) | |
############################ | |
# CreateNewGroup | |
############################ | |
async def create_new_function(form_data: GroupForm, user=Depends(get_admin_user)): | |
try: | |
group = Groups.insert_new_group(user.id, form_data) | |
if group: | |
return group | |
else: | |
raise HTTPException( | |
status_code=status.HTTP_400_BAD_REQUEST, | |
detail=ERROR_MESSAGES.DEFAULT("Error creating group"), | |
) | |
except Exception as e: | |
print(e) | |
raise HTTPException( | |
status_code=status.HTTP_400_BAD_REQUEST, | |
detail=ERROR_MESSAGES.DEFAULT(e), | |
) | |
############################ | |
# GetGroupById | |
############################ | |
async def get_group_by_id(id: str, user=Depends(get_admin_user)): | |
group = Groups.get_group_by_id(id) | |
if group: | |
return group | |
else: | |
raise HTTPException( | |
status_code=status.HTTP_401_UNAUTHORIZED, | |
detail=ERROR_MESSAGES.NOT_FOUND, | |
) | |
############################ | |
# UpdateGroupById | |
############################ | |
async def update_group_by_id( | |
id: str, form_data: GroupUpdateForm, user=Depends(get_admin_user) | |
): | |
try: | |
group = Groups.update_group_by_id(id, form_data) | |
if group: | |
return group | |
else: | |
raise HTTPException( | |
status_code=status.HTTP_400_BAD_REQUEST, | |
detail=ERROR_MESSAGES.DEFAULT("Error updating group"), | |
) | |
except Exception as e: | |
print(e) | |
raise HTTPException( | |
status_code=status.HTTP_400_BAD_REQUEST, | |
detail=ERROR_MESSAGES.DEFAULT(e), | |
) | |
############################ | |
# DeleteGroupById | |
############################ | |
async def delete_group_by_id(id: str, user=Depends(get_admin_user)): | |
try: | |
result = Groups.delete_group_by_id(id) | |
if result: | |
return result | |
else: | |
raise HTTPException( | |
status_code=status.HTTP_400_BAD_REQUEST, | |
detail=ERROR_MESSAGES.DEFAULT("Error deleting group"), | |
) | |
except Exception as e: | |
print(e) | |
raise HTTPException( | |
status_code=status.HTTP_400_BAD_REQUEST, | |
detail=ERROR_MESSAGES.DEFAULT(e), | |
) | |