summaryrefslogtreecommitdiff
path: root/gitlab/objects.py
diff options
context:
space:
mode:
authorGauvain Pocentek <gauvain@pocentek.net>2016-10-23 21:46:28 +0200
committerGauvain Pocentek <gauvain@pocentek.net>2016-10-23 21:46:28 +0200
commitb15f17b6d2008ee658cf9206aa37faaf966a521b (patch)
tree0ea09ee088d28770c7bc6d0e34382ca1cb142a9f /gitlab/objects.py
parent6d3450c4fe4a2e592b9000be309819278f519e11 (diff)
downloadgitlab-b15f17b6d2008ee658cf9206aa37faaf966a521b.tar.gz
Add support for the notification settings API
Diffstat (limited to 'gitlab/objects.py')
-rw-r--r--gitlab/objects.py46
1 files changed, 46 insertions, 0 deletions
diff --git a/gitlab/objects.py b/gitlab/objects.py
index 0897c68..e95a894 100644
--- a/gitlab/objects.py
+++ b/gitlab/objects.py
@@ -752,6 +752,30 @@ class KeyManager(BaseManager):
obj_cls = Key
+class NotificationSettings(GitlabObject):
+ _url = '/notification_settings'
+ _id_in_update_url = False
+ optionalUpdateAttrs = ['level',
+ 'notification_email',
+ 'new_note',
+ 'new_issue',
+ 'reopen_issue',
+ 'close_issue',
+ 'reassign_issue',
+ 'new_merge_request',
+ 'reopen_merge_request',
+ 'close_merge_request',
+ 'reassign_merge_request',
+ 'merge_merge_request']
+ canList = False
+ canCreate = False
+ canDelete = False
+
+
+class NotificationSettingsManager(BaseManager):
+ obj_cls = NotificationSettings
+
+
class GroupIssue(GitlabObject):
_url = '/groups/%(group_id)s/issues'
canGet = 'from_list'
@@ -783,6 +807,15 @@ class GroupMemberManager(BaseManager):
obj_cls = GroupMember
+class GroupNotificationSettings(NotificationSettings):
+ _url = '/groups/%(group_id)s/notification_settings'
+ requiredUrlAttrs = ['group_id']
+
+
+class GroupNotificationSettingsManager(BaseManager):
+ obj_cls = GroupNotificationSettings
+
+
class GroupProject(GitlabObject):
_url = '/groups/%(group_id)s/projects'
canGet = 'from_list'
@@ -835,6 +868,8 @@ class Group(GitlabObject):
managers = [
('accessrequests', GroupAccessRequestManager, [('group_id', 'id')]),
('members', GroupMemberManager, [('group_id', 'id')]),
+ ('notificationsettings', GroupNotificationSettingsManager,
+ [('group_id', 'id')]),
('projects', GroupProjectManager, [('group_id', 'id')]),
('issues', GroupIssueManager, [('group_id', 'id')])
]
@@ -1385,6 +1420,15 @@ class ProjectNoteManager(BaseManager):
obj_cls = ProjectNote
+class ProjectNotificationSettings(NotificationSettings):
+ _url = '/projects/%(project_id)s/notification_settings'
+ requiredUrlAttrs = ['project_id']
+
+
+class ProjectNotificationSettingsManager(BaseManager):
+ obj_cls = ProjectNotificationSettings
+
+
class ProjectTagRelease(GitlabObject):
_url = '/projects/%(project_id)s/repository/tags/%(tag_name)/release'
canDelete = False
@@ -1987,6 +2031,8 @@ class Project(GitlabObject):
('mergerequests', ProjectMergeRequestManager, [('project_id', 'id')]),
('milestones', ProjectMilestoneManager, [('project_id', 'id')]),
('notes', ProjectNoteManager, [('project_id', 'id')]),
+ ('notificationsettings', ProjectNotificationSettingsManager,
+ [('project_id', 'id')]),
('pipelines', ProjectPipelineManager, [('project_id', 'id')]),
('services', ProjectServiceManager, [('project_id', 'id')]),
('snippets', ProjectSnippetManager, [('project_id', 'id')]),