From e483c3162ad75d8536a61b2e9296bf8f4d2d57c5 Mon Sep 17 00:00:00 2001 From: Vincent Jacques Date: Sun, 19 Feb 2012 16:47:06 +0100 Subject: [PATCH] Add Team object --- ReferenceOfApis.md | 28 ++++++++++++++-------------- ReferenceOfClasses.md | 29 +++++++++++++++++++++++++++++ github/GithubObjects.py | 16 ++++++++++++++++ 3 files changed, 59 insertions(+), 14 deletions(-) diff --git a/ReferenceOfApis.md b/ReferenceOfApis.md index 51cd0dbcad..f20f830aae 100644 --- a/ReferenceOfApis.md +++ b/ReferenceOfApis.md @@ -96,8 +96,8 @@ API `/orgs/:org/repos` API `/orgs/:org/teams` ====================== -* GET: `Organization.get_teams()`: list of `Team` (TODO SOON) -* POST: `Organization.create_team( ... ): `Team` (TODO SOON) +* GET: `Organization.get_teams()`: list of `Team` +* POST: `Organization.create_team( ... ): `Team` API `/repos/:user/:repo` ======================== @@ -358,7 +358,7 @@ API `/repos/:user/:repo/tags` API `/repos/:user/:repo/teams` ============================== -* GET: `Repository.get_teams()`: list of `Team` (TODO SOON) +* GET: `Repository.get_teams()`: list of `Team` API `/repos/:user/:repo/watchers` ================================= @@ -366,29 +366,29 @@ API `/repos/:user/:repo/watchers` API `/teams/:id` ================ -* GET: Lazy completion of `Team` (TODO SOON) -* PATCH: `Team.edit( ... )` (TODO SOON) -* DELETE: `Team.delete()` (TODO SOON) +* GET: Lazy completion of `Team` +* PATCH: `Team.edit( ... )` +* DELETE: `Team.delete()` API `/teams/:id/members` ======================== -* GET: `Team.get_members()`: list of `NamedUser` (TODO SOON) +* GET: `Team.get_members()`: list of `NamedUser` API `/teams/:id/members/:user` ============================== -* GET: `Team.has_in_members( user )`: `bool` (TODO SOON) -* PUT: `Team.add_to_members( user )` (TODO SOON) -* DELETE: `Team.remove_from_members( user )` (TODO SOON) +* GET: `Team.has_in_members( user )`: `bool` +* PUT: `Team.add_to_members( user )` +* DELETE: `Team.remove_from_members( user )` API `/teams/:id/repos` ====================== -* GET: `Team.get_repos()`: list of `Repository` (TODO SOON) +* GET: `Team.get_repos()`: list of `Repository` API `/teams/:id/repos/:user/:repo` ================================== -* GET: `Team.has_in_repos( repo )`: `bool` (TODO SOON) -* PUT: `Team.add_to_repos( repo )` (TODO SOON) -* DELETE: `Team.remove_from_repos( repo )` (TODO SOON) +* GET: `Team.has_in_repos( repo )`: `bool` +* PUT: `Team.add_to_repos( repo )` +* DELETE: `Team.remove_from_repos( repo )` API `/user` =========== diff --git a/ReferenceOfClasses.md b/ReferenceOfClasses.md index b55958e055..c1a56c171c 100644 --- a/ReferenceOfClasses.md +++ b/ReferenceOfClasses.md @@ -90,6 +90,11 @@ Members * `add_to_public_members( user )` * `remove_from_public_members( user )` +Teams +----- +* `get_teams()`: list of `Team` +* `create_team( ... )`: `Team`: see [API](http://developer.github.com/v3/.../#...) for parameters (TODO SOON) + Class `Repository` ================== * Attributes: see [API](http://developer.github.com/v3/repos/#get) @@ -128,6 +133,30 @@ Git objects * `get_git_tag( sha )`: `GitTag` * `create_git_tag( ... )`: `GitTag`: see [API](http://developer.github.com/v3/git/tags/#create-a-tag-object) for parameters +Teams +----- +* `get_teams()`: list of `Team` + +Class `Team` +============ +* Attributes: see [API](http://developer.github.com/v3/.../#...) (TODO SOON) +* `edit( ... )`: see [API](http://developer.github.com/v3/.../#...) for parameters (TODO SOON) +* `delete()` + +Members +------- +* `get_members()`: list of `NamedUser` +* `has_in_members( user )`: `bool` +* `add_to_members( user )` +* `remove_from_members( user )` + +Repositories +------------ +* `get_repos()`: list of `Repository` +* `has_in_repos( user )`: `bool` +* `add_to_repos( user )` +* `remove_from_repos( user )` + Class `GitRef` ============== * Attributes: see [API](http://developer.github.com/v3/git/refs/#get-a-reference) diff --git a/github/GithubObjects.py b/github/GithubObjects.py index d3fc33b5ac..6f50a09914 100644 --- a/github/GithubObjects.py +++ b/github/GithubObjects.py @@ -178,3 +178,19 @@ def __createForkForOrg( org, repo ): assert isinstance( repo, Repository ) return Repository( org._github, org._github._dataRequest( "POST", repo._baseUrl + "/forks", { "org": org.login }, None ), lazy = True ) Organization._addAttributePolicy( MethodFromCallable( "create_fork", __createForkForOrg ) ) + +Team = GithubObject( + "Team", + BaseUrl( lambda obj: "/teams/" + obj.id ) + Identity( lambda obj: obj.id ), + BasicAttributes( + ### @todo + ), + Editable( [], [] ), ### @todo + Deletable(), + ListOfReferences( "members", NamedUser, addable = True, removable = True, hasable = True ), + ListOfReferences( "repos", Repository, addable = True, removable = True, hasable = True ), +) + +Organization._addAttributePolicy( ListOfObjects( "teams", Team, creatable = True ) ) +Repository._addAttributePolicy( ListOfReferences( "teams", Team ) )