diff options
| author | 2012-05-12 23:08:55 +0200 | |
|---|---|---|
| committer | 2012-05-12 23:08:55 +0200 | |
| commit | 748b320dd244341694c0d247d04c7f57ad4c052e (patch) | |
| tree | 37b7ffad24d21f398dbb0592395b65599594c40b /pygithub3/requests/pull_requests/__init__.py | |
| parent | New install environment to prod and dev (diff) | |
| parent | Some fixes/typos and 'validate_body' related (diff) | |
| download | python-github3-748b320dd244341694c0d247d04c7f57ad4c052e.tar.xz python-github3-748b320dd244341694c0d247d04c7f57ad4c052e.zip | |
Merge 'services/pull_requests'
Diffstat (limited to 'pygithub3/requests/pull_requests/__init__.py')
| -rw-r--r-- | pygithub3/requests/pull_requests/__init__.py | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/pygithub3/requests/pull_requests/__init__.py b/pygithub3/requests/pull_requests/__init__.py new file mode 100644 index 0000000..f25572d --- /dev/null +++ b/pygithub3/requests/pull_requests/__init__.py @@ -0,0 +1,68 @@ +# -*- encoding: utf-8 -*- + +from pygithub3.requests.base import Request, ValidationError +from pygithub3.resources.pull_requests import PullRequest, File +from pygithub3.resources.repos import Commit + + +class List(Request): + uri = 'repos/{user}/{repo}/pulls' + resource = PullRequest + + +class Get(Request): + uri = 'repos/{user}/{repo}/pulls/{number}' + resource = PullRequest + + +class Create(Request): + uri = 'repos/{user}/{repo}/pulls' + resource = PullRequest + body_schema = { + 'schema': ('title', 'body', 'base', 'head', 'issue'), + 'required': ('base', 'head'), + } + + def clean_body(self): + if (not ('title' in self.body and 'body' in self.body) and + not 'issue' in self.body): + raise ValidationError('pull request creation requires either an ' + 'issue number or a title and body') + return self.body + +class Update(Request): + uri = 'repos/{user}/{repo}/pulls/{number}' + resource = PullRequest + body_schema = { + 'schema': ('title', 'body', 'state'), + 'required': (), + } + + def clean_body(self): + if ('state' in self.body and + self.body['state'] not in ['open', 'closed']): + raise ValidationError('If a state is specified, it must be one ' + 'of "open" or "closed"') + return self.body + + +class List_commits(Request): + uri = 'repos/{user}/{repo}/pulls/{number}/commits' + resource = Commit + + +class List_files(Request): + uri = 'repos/{user}/{repo}/pulls/{number}/files' + resource = File + + +class Is_merged(Request): + uri = 'repos/{user}/{repo}/pulls/{number}/merge' + + +class Merge(Request): + uri = 'repos/{user}/{repo}/pulls/{number}/merge' + body_schema = { + 'schema': ('commit_message',), + 'required': (), + } |
