def get_all_groups_by_user(session, user): # type: (Session, User) -> List[Tuple[Group, int]] """Return groups a given user is a member of along with the user's role. This includes groups inherited from other groups, unlike get_groups_by_user. """ from grouper.graph import Graph grps = Graph().get_user_details(username=user.name)["groups"] groups = session.query(Group).filter(Group.name.in_(grps.keys())).all() return [(group, grps[group.name]["role"]) for group in groups]