diff --git a/pyproject.toml b/pyproject.toml index 3fd1918..dc4e6ec 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -11,11 +11,11 @@ build-backend = "setuptools.build_meta" [tool.semantic_release] -version_source = "tag" +version_source = "tag_only" branch = "main" major_on_zero = true upload_to_pypi = false -upload_to_repository = true +# upload_to_repository = true upload_to_release = true commit_version_number = true tag_commit = true diff --git a/src/actions/workspace.py b/src/actions/workspace.py index 14cf2f4..ad23c52 100644 --- a/src/actions/workspace.py +++ b/src/actions/workspace.py @@ -138,7 +138,7 @@ async def remove_workspace_member(workspace: Workspace, account_id: ResourceID): if not account: raise AccountExceptions.AccountNotFound(account_id) - if account.id not in [ResourceID(member.ref.id) for member in workspace.members]: + if account.id not in [ResourceID(member.id) for member in workspace.members]: raise WorkspaceExceptions.UserNotMember(workspace, account) return await workspace.remove_member(account) diff --git a/src/models/documents.py b/src/models/documents.py index a70e447..fff1a4d 100644 --- a/src/models/documents.py +++ b/src/models/documents.py @@ -70,13 +70,13 @@ async def remove_member(self, account, save: bool = True) -> bool: # Remove the account from the group # await self.fetch_link("members") for i, member in enumerate(self.members): - if account.id == member.ref.id: + if account.id == member.id: self.members.remove(member) - Debug.info(f"Removed member {member.ref.id} from {self.resource_type} {self.id}") # type: ignore + Debug.info(f"Removed member {member.id} from {self.resource_type} {self.id}") # type: ignore break # Remove the policy from the group - await self.fetch_link("policies") + # await self.fetch_link("policies") for policy in self.policies: # pc = await policy.policy_holder.fetch() # type: ignore pc = policy.policy_holder # type: ignore diff --git a/src/routes/account.py b/src/routes/account.py index 818f73b..9e631c9 100644 --- a/src/routes/account.py +++ b/src/routes/account.py @@ -11,6 +11,16 @@ router = APIRouter() +@router.get("", + response_model=AccountSchemas.AccountList) +async def get_all_accounts(): + try: + accounts = [AccountSchemas.AccountShort(**account.dict()) for account in await Account.find_all().to_list()] + return AccountSchemas.AccountList(accounts=accounts) + except APIException as e: + raise HTTPException(status_code=e.code, detail=str(e)) + + # Delete current user account @router.delete("/me", status_code=status.HTTP_204_NO_CONTENT) diff --git a/src/schemas/account.py b/src/schemas/account.py index 03210b4..a6519e0 100644 --- a/src/schemas/account.py +++ b/src/schemas/account.py @@ -35,6 +35,10 @@ class AccountShort(BaseModel): last_name: str +class AccountList(BaseModel): + accounts: list[AccountShort] + + class CreateAccount(schemas.BaseUserCreate): email: EmailStr = Field(...) first_name: str = Field( diff --git a/src/utils/permissions.py b/src/utils/permissions.py index 9c2406b..151b141 100644 --- a/src/utils/permissions.py +++ b/src/utils/permissions.py @@ -31,7 +31,12 @@ def parse_action_file(resource_type: str) -> Permissions: WORKSPACE_ALL_PERMISSIONS = WorkspacePermissions(-1) # type: ignore -WORKSPACE_BASIC_PERMISSIONS = (WorkspacePermissions["get_workspace"]) # type: ignore +# WORKSPACE_BASIC_PERMISSIONS = (WorkspacePermissions["get_workspace"]) # type: ignore +WORKSPACE_BASIC_PERMISSIONS = (WorkspacePermissions["get_workspace"] + # type: ignore + WorkspacePermissions["get_workspace_members"] + # type: ignore + WorkspacePermissions["get_workspace_policy"] + # type: ignore + WorkspacePermissions["get_workspace_policies"] + # type: ignore + WorkspacePermissions["get_groups"]) # type: ignore # Example: (WorkspacePermissions["get_workspace"] + WorkspacePermissions["get_workspace_members"]) GROUP_ALL_PERMISSIONS = GroupPermissions(-1) # type: ignore