"""Client API for teams in Nexus."""importqnexus.exceptionsasqnx_excfromqnexus.clientimportget_nexus_clientfromqnexus.contextimportmerge_scope_from_contextfromqnexus.models.referencesimportDataframableList,TeamReffromqnexus.models.scopeimportScopeFilterEnum
[docs]@merge_scope_from_contextdefget_all(scope:ScopeFilterEnum=ScopeFilterEnum.USER)->DataframableList[TeamRef]:"""No fuzzy name matching."""res=get_nexus_client().get("/api/teams/v1beta2",params={"scope":scope.value},)ifres.status_code!=200:raiseqnx_exc.ResourceFetchFailed(message=res.text,status_code=res.status_code)returnDataframableList([TeamRef(id=team["id"],name=team["attributes"]["name"],description=team["attributes"]["description"],)forteaminres.json()["data"]])
[docs]@merge_scope_from_contextdefget(name:str,scope:ScopeFilterEnum=ScopeFilterEnum.USER)->TeamRef:""" Get a single team using filters. Throws an exception if the filters do not match exactly one object. """res=get_nexus_client().get("/api/teams/v1beta2",params={"filter[team][name]":name,"scope":scope.value,},)ifres.status_code==404orres.json()["data"]==[]:raiseqnx_exc.ZeroMatchesifres.status_code!=200:raiseqnx_exc.ResourceFetchFailed(message=res.text,status_code=res.status_code)teams_list=[TeamRef(id=team["id"],name=team["attributes"]["name"],description=team["attributes"]["description"],)forteaminres.json()["data"]]iflen(teams_list)>1:print(teams_list)raiseqnx_exc.NoUniqueMatchreturnteams_list[0]
@merge_scope_from_contextdef_fetch_by_id(team_id:str,scope:ScopeFilterEnum=ScopeFilterEnum.USER)->TeamRef:""" Get a single team by id. """res=get_nexus_client().get(f"/api/teams/v1beta2/{team_id}",params={"scope":scope.value},)ifres.status_code==404:raiseqnx_exc.ZeroMatchesifres.status_code!=200:raiseqnx_exc.ResourceFetchFailed(message=res.text,status_code=res.status_code)team_dict=res.json()["data"]returnTeamRef(id=team_dict["id"],name=team_dict["attributes"]["name"],description=team_dict["attributes"]["description"],)
[docs]defcreate(name:str,description:str|None=None)->TeamRef:"""Create a team in Nexus."""resp=get_nexus_client().post("/api/teams/v1beta2",json={"data":{"attributes":{"name":name,"description":description,"display_name":name,},"relationships":{},"type":"team",},},)ifresp.status_code!=201:raiseqnx_exc.ResourceCreateFailed(message=resp.text,status_code=resp.status_code)team_dict=resp.json()["data"]returnTeamRef(id=team_dict["id"],name=team_dict["attributes"]["name"],description=team_dict["attributes"]["description"],)