aboutsummaryrefslogtreecommitdiffstats
path: root/pygithub3/requests/issues/milestones.py
diff options
context:
space:
mode:
Diffstat (limited to 'pygithub3/requests/issues/milestones.py')
-rw-r--r--pygithub3/requests/issues/milestones.py39
1 files changed, 39 insertions, 0 deletions
diff --git a/pygithub3/requests/issues/milestones.py b/pygithub3/requests/issues/milestones.py
new file mode 100644
index 0000000..4093c7e
--- /dev/null
+++ b/pygithub3/requests/issues/milestones.py
@@ -0,0 +1,39 @@
+# -*- encoding: utf-8 -*-
+
+from pygithub3.requests.base import Request, ValidationError
+from pygithub3.resources.issues import Milestone
+
+
+class List(Request):
+ uri = 'repos/{user}/{repo}/milestones'
+ resource = Milestone
+
+
+class Get(Request):
+ uri = 'repos/{user}/{repo}/milestones/{number}'
+ resource = Milestone
+
+
+class Create(Request):
+ uri = 'repos/{user}/{repo}/milestones'
+ resource = Milestone
+ body_schema = {
+ 'schema': ('title', 'state', 'description', 'due_on'),
+ 'required': ('title',)
+ }
+
+ def clean_body(self): # Test if API normalize it
+ state = self.body.get('state', '')
+ if state and state.lower() not in ('open', 'closed'):
+ raise ValidationError("'state' must be 'open' or 'closed'")
+ return self.body
+
+
+class Update(Create):
+
+ uri = 'repos/{user}/{repo}/milestones/{number}'
+
+
+class Delete(Request):
+ uri = 'repos/{user}/{repo}/milestones/{number}'
+ resource = Milestone