summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGauvain Pocentek <gauvain@pocentek.net>2016-07-24 18:06:29 +0200
committerGauvain Pocentek <gauvain@pocentek.net>2016-07-24 18:06:29 +0200
commit580f21ea9a80bfe7062296ac7684489d5375df69 (patch)
treea9f33f46af28fc403cb9046848d431d916a9ecd2
parent261f9470f457673e8082e673fb09861a993fdabc (diff)
downloadgitlab-580f21ea9a80bfe7062296ac7684489d5375df69.tar.gz
Add support from listing group issues
-rw-r--r--docs/gl_objects/issues.py10
-rw-r--r--docs/gl_objects/issues.rst16
-rw-r--r--gitlab/__init__.py2
-rw-r--r--gitlab/objects.py17
4 files changed, 44 insertions, 1 deletions
diff --git a/docs/gl_objects/issues.py b/docs/gl_objects/issues.py
index e0eadbe..a378910 100644
--- a/docs/gl_objects/issues.py
+++ b/docs/gl_objects/issues.py
@@ -8,6 +8,16 @@ closed_issues = gl.issues.list(state='closed')
tagged_issues = gl.issues.list(labels=['foo', 'bar'])
# end filtered list
+# group issues list
+issues = gl.group_issues.list(group_id=1)
+# or
+issues = group.issues.list()
+# Filter using the state, labels and milestone parameters
+issues = group.issues.list(milestone='1.0', state='opened')
+# Order using the order_by and sort parameters
+issues = group.issues.list(order_by='created_at', sort='desc')
+# end group issues list
+
# project issues list
issues = gl.project_issues.list(project_id=1)
# or
diff --git a/docs/gl_objects/issues.rst b/docs/gl_objects/issues.rst
index 335ec54..ac23043 100644
--- a/docs/gl_objects/issues.rst
+++ b/docs/gl_objects/issues.rst
@@ -25,6 +25,22 @@ Use the ``state`` and ``label`` parameters to filter the results. Use the
:start-after: # filtered list
:end-before: # end filtered list
+Group issues
+============
+
+Use :class:`~gitlab.objects.GroupIssue` objects to manipulate issues. The
+:attr:`gitlab.Gitlab.project_issues` and :attr:`Group.issues
+<gitlab.objects.Group.issues>` manager objects provide helper functions.
+
+Examples
+--------
+
+List the group issues:
+
+.. literalinclude:: issues.py
+ :start-after: # group issues list
+ :end-before: # end group issues list
+
Project issues
==============
diff --git a/gitlab/__init__.py b/gitlab/__init__.py
index 30aad85..f819186 100644
--- a/gitlab/__init__.py
+++ b/gitlab/__init__.py
@@ -68,6 +68,7 @@ class Gitlab(object):
user_emails (UserEmailManager): Manager for GitLab users' emails.
user_keys (UserKeyManager): Manager for GitLab users' SSH keys.
users (UserManager): Manager for GitLab users
+ group_issues (GroupIssueManager): Manager for GitLab group issues
group_projects (GroupProjectManager): Manager for GitLab group projects
group_members (GroupMemberManager): Manager for GitLab group members
groups (GroupManager): Manager for GitLab members
@@ -148,6 +149,7 @@ class Gitlab(object):
self.user_emails = UserEmailManager(self)
self.user_keys = UserKeyManager(self)
self.users = UserManager(self)
+ self.group_issues = GroupIssueManager(self)
self.group_projects = GroupProjectManager(self)
self.group_members = GroupMemberManager(self)
self.groups = GroupManager(self)
diff --git a/gitlab/objects.py b/gitlab/objects.py
index ea9f9ab..315abde 100644
--- a/gitlab/objects.py
+++ b/gitlab/objects.py
@@ -679,6 +679,20 @@ class ApplicationSettingsManager(BaseManager):
obj_cls = ApplicationSettings
+class GroupIssue(GitlabObject):
+ _url = '/groups/%(group_id)s/issues'
+ canGet = 'from_list'
+ canCreate = False
+ canUpdate = False
+ canDelete = False
+ requiredUrlAttrs = ['group_id']
+ optionalListAttrs = ['state', 'labels', 'milestone', 'order_by', 'sort']
+
+
+class GroupIssueManager(BaseManager):
+ obj_cls = GroupIssue
+
+
class GroupMember(GitlabObject):
_url = '/groups/%(group_id)s/members'
canGet = 'from_list'
@@ -718,7 +732,8 @@ class Group(GitlabObject):
optionalUpdateAttrs = ['name', 'path', 'description', 'visibility_level']
shortPrintAttr = 'name'
managers = [('members', GroupMemberManager, [('group_id', 'id')]),
- ('projects', GroupProjectManager, [('group_id', 'id')])]
+ ('projects', GroupProjectManager, [('group_id', 'id')]),
+ ('issues', GroupIssueManager, [('group_id', 'id')])]
GUEST_ACCESS = 10
REPORTER_ACCESS = 20