diff --git a/alembic/env.py b/alembic/env.py index eb56a446..238b121a 100644 --- a/alembic/env.py +++ b/alembic/env.py @@ -25,7 +25,7 @@ if config.config_file_name is not None: # add your model's MetaData object here # for 'autogenerate' support -# from myapp import mymodel1w +# from myapp import mymodel # target_metadata = mymodel.Base.metadata target_metadata = Base.metadata diff --git a/private_gpt/users/api/v1/routers/users.py b/private_gpt/users/api/v1/routers/users.py index 9671cfc2..5a11fc82 100644 --- a/private_gpt/users/api/v1/routers/users.py +++ b/private_gpt/users/api/v1/routers/users.py @@ -285,61 +285,3 @@ def delete_user( content={"message": "User deleted successfully"}, ) - - -@router.post("/update_user") -def admin_update_user( - *, - db: Session = Depends(deps.get_db), - user_update: schemas.UserAdminUpdate, - current_user: models.User = Security( - deps.get_current_user, - scopes=[Role.ADMIN["name"], Role.SUPER_ADMIN["name"]], - ), -) -> Any: - """ - Update the user by the Admin/Super_ADMIN - """ - existing_user = crud.user.get(db, id=user_update.id) - - if existing_user is None: - raise HTTPException( - status_code=status.HTTP_404_NOT_FOUND, - detail=f"User not found with id: {user_update.id}", - ) - if existing_user.fullname == user_update.fullname: - pass - else: - fullname = crud.user.get_by_name(db, name=user_update.fullname) - if fullname: - raise HTTPException( - status_code=409, - detail="The user with this username already exists!", - ) - - role = crud.role.get_by_name(db,name=user_update.role) - if role.id == 1: - raise HTTPException( - status_code=status.HTTP_404_NOT_FOUND, - detail=f"Cannot create SUPER ADMIN!", - ) - - user_role = crud.user_role.get_by_user_id(db, user_id=existing_user.id) - role_in = schemas.UserRoleUpdate( - user_id = existing_user.id, - role_id = role.id, - ) - role = crud.user_role.update(db, db_obj=user_role, obj_in=role_in) - - user_in = schemas.UserUpdate(fullname=user_update.fullname, - email=existing_user.email, company_id=existing_user.user_role.company_id) - print("User in: ", user_in) - user = crud.user.update(db, db_obj=existing_user, obj_in=user_in) - - return JSONResponse( - status_code=status.HTTP_200_OK, - content={"message": "User updated successfully", - } - ) - - diff --git a/private_gpt/users/crud/user_crud.py b/private_gpt/users/crud/user_crud.py index e0150317..fb21a24b 100644 --- a/private_gpt/users/crud/user_crud.py +++ b/private_gpt/users/crud/user_crud.py @@ -3,7 +3,7 @@ from typing import Any, Dict, List, Optional, Union from private_gpt.users.core.security import get_password_hash, verify_password from private_gpt.users.crud.base import CRUDBase from private_gpt.users.models.user import User -from private_gpt.users.schemas.user import UserCreate, UserUpdate +from private_gpt.users.schemas.user import UserCreate, UserUpdate, AdminUpdate from private_gpt.users.models.user_role import UserRole from private_gpt.users.models.role import Role from sqlalchemy.orm import Session @@ -89,8 +89,5 @@ class CRUDUser(CRUDBase[User, UserCreate, UserUpdate]): .all() ) - def get_by_name(self, db: Session, *, name: str) -> Optional[User]: - return db.query(self.model).filter(User.fullname == name).first() - - + user = CRUDUser(User) \ No newline at end of file diff --git a/private_gpt/users/crud/user_role_crud.py b/private_gpt/users/crud/user_role_crud.py index ccceca22..c929e17e 100644 --- a/private_gpt/users/crud/user_role_crud.py +++ b/private_gpt/users/crud/user_role_crud.py @@ -16,5 +16,10 @@ class CRUDUserRole(CRUDBase[UserRole, UserRoleCreate, UserRoleUpdate]): self, db: Session, *, user_id: int )-> Optional[UserRole]: return db.query(UserRole).filter(UserRole.user_id == user_id).delete() + + # def update_user_role( + # self, db: Session, *, user_id: int, role_id: int + # ) -> Optional[UserRole]: + # return self.update(db, ) user_role = CRUDUserRole(UserRole) \ No newline at end of file diff --git a/private_gpt/users/schemas/__init__.py b/private_gpt/users/schemas/__init__.py index 4d68d2d4..deb1a6af 100644 --- a/private_gpt/users/schemas/__init__.py +++ b/private_gpt/users/schemas/__init__.py @@ -1,6 +1,6 @@ from .role import Role, RoleCreate, RoleInDB, RoleUpdate from .token import TokenSchema, TokenPayload -from .user import User, UserCreate, UserInDB, UserUpdate, UserBaseSchema, Profile, UsernameUpdate, DeleteUser, UserAdminUpdate +from .user import User, UserCreate, UserInDB, UserUpdate, UserBaseSchema, Profile, UsernameUpdate, DeleteUser, AdminUpdate from .user_role import UserRole, UserRoleCreate, UserRoleInDB, UserRoleUpdate from .subscription import Subscription, SubscriptionBase, SubscriptionCreate, SubscriptionUpdate from .company import Company, CompanyBase, CompanyCreate, CompanyUpdate \ No newline at end of file diff --git a/private_gpt/users/schemas/user.py b/private_gpt/users/schemas/user.py index 5b42ff2a..e932768e 100644 --- a/private_gpt/users/schemas/user.py +++ b/private_gpt/users/schemas/user.py @@ -58,8 +58,6 @@ class Profile(UserBaseSchema): class DeleteUser(BaseModel): id: int - -class UserAdminUpdate(BaseModel): - id: int +class AdminUpdate(BaseModel): fullname: str - role: str \ No newline at end of file + role: int \ No newline at end of file diff --git a/private_gpt/users/schemas/user_role.py b/private_gpt/users/schemas/user_role.py index 1e569313..65894f50 100644 --- a/private_gpt/users/schemas/user_role.py +++ b/private_gpt/users/schemas/user_role.py @@ -19,7 +19,6 @@ class UserRoleCreate(UserRoleBase): # Properties to receive via API on update class UserRoleUpdate(BaseModel): - user_id: int role_id: int class Config: