Source code for IGitt.GitHub.GitHubTeam

"""
Contains the GitHub Team implementation.
"""
from typing import Set

from IGitt.GitHub import GH_INSTANCE_URL
from IGitt.GitHub import GitHubMixin
from IGitt.GitHub.GitHubUser import GitHubUser
from IGitt.GitHub.GitHubOrganization import GitHubOrganization
from IGitt.Interfaces.Team import Team
from IGitt.Interfaces import get


[docs]class GitHubTeam(GitHubMixin, Team): """ Represents a team on GitHub. """ def __init__(self, token, team_id): """ :param team_id: The id of the team. """ self._token = token self._id = team_id self._url = '/teams/{team_id}'.format(team_id=team_id) @property def name(self) -> str: """ Name of the team. """ return self.data['name'] @property def id(self) -> int: """ Retrieves the id of the team. """ return self._id @property def description(self) -> str: """ Returns the description of this team. """ return self.data['description'] @property def web_url(self): return '{}/orgs/{}/teams/{}'.format(GH_INSTANCE_URL, self.get_organization.name, self.name) @property def members(self) -> Set[GitHubUser]: """ Returns the user handles of all members of this team. """ return { GitHubUser.from_data(user, self._token, user['login']) for user in get( self._token, self.url + '/members' ) }
[docs] def is_member(self, username): """ Checks if given username is member of this team. """ usernames = [user.username for user in self.members] return True if username in usernames else False
@property def get_organization(self): """ Returns parent organization. """ return GitHubOrganization.from_data(self.data['organization'], self._token, self.data['organization']['login'])