Skip to content

Add "Find groups from user" recipe #340

@schloerke

Description

@schloerke

Docs issue: https://github.com/rstudio/connect/issues/28176

Proposal that can be done today:

user = client.users.get("USER_GUID_HERE")
user_guid = user["guid"]

user_groups = user.groups.find()
# For every group
for group in client.groups.find():
    # Get group members
    group_guid = group["guid"]
    response = client.get("v1/groups/{group_guid}/members")
    members_raw = response.json()
    # For each member in the group
    for member_raw in members_raw:
        if member_raw["guid"] == user_guid:
            user_groups.append(group)
            break
user_groups

Proposal if Group.members is added:

## By implementing `Group.members` property...
for group in client.groups.find():
    group_members: list[User] = group.members.find()
    for group_member in group_members:
        if group_member['guid'] == user_guid:
            user_groups.append(group)
            break

Proposal if User.groups property and Group.members property are added

## By implementing `User.groups` property...
user_groups = user.groups.find()

# ...where
@property
def user_groups(self) -> UserGroups:
    ...

class UserGroups(Resource):

    def find() -> list[User]:
        user_groups: list[Group] = []
    
        for group in self.params.client.groups.find():
            group_members = group.members.find()
            for group_member in group_members:
                if group_member['guid'] == user_guid:
                    user_groups.append(group)
                    break

        return user_groups

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestsdkUsed for automation

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions