summaryrefslogtreecommitdiff
path: root/gitlab/objects.py
diff options
context:
space:
mode:
authorGauvain Pocentek <gauvain.pocentek@objectif-libre.com>2016-01-16 19:34:37 +0100
committerGauvain Pocentek <gauvain.pocentek@objectif-libre.com>2016-01-16 19:34:37 +0100
commit0e0c81d229f03397d4f342fe96fef2f1405b6124 (patch)
tree26a9118ab14587b6a55507fd3d537a7ad2f3dd4a /gitlab/objects.py
parenta4e29f86d7851da12e40491d517c1af17da66336 (diff)
downloadgitlab-0e0c81d229f03397d4f342fe96fef2f1405b6124.tar.gz
Fix discovery of parents object attrs for managers
Diffstat (limited to 'gitlab/objects.py')
-rw-r--r--gitlab/objects.py25
1 files changed, 15 insertions, 10 deletions
diff --git a/gitlab/objects.py b/gitlab/objects.py
index baffec8..945f19b 100644
--- a/gitlab/objects.py
+++ b/gitlab/objects.py
@@ -18,6 +18,7 @@
from __future__ import print_function
from __future__ import division
from __future__ import absolute_import
+import copy
import itertools
import json
import sys
@@ -71,11 +72,14 @@ class BaseManager(object):
raise AttributeError("obj_cls must be defined")
def _set_parent_args(self, **kwargs):
+ args = copy.copy(kwargs)
if self.parent is not None:
for attr, parent_attr in self.args:
- kwargs.setdefault(attr, getattr(self.parent, parent_attr))
+ args.setdefault(attr, getattr(self.parent, parent_attr))
- def get(self, id, **kwargs):
+ return args
+
+ def get(self, id=None, **kwargs):
"""Get a GitLab object.
Args:
@@ -89,10 +93,11 @@ class BaseManager(object):
NotImplementedError: If objects cannot be retrieved.
GitlabGetError: If the server fails to perform the request.
"""
- self._set_parent_args(**kwargs)
+ args = self._set_parent_args(**kwargs)
+ print(args)
if not self.obj_cls.canGet:
raise NotImplementedError
- return self.obj_cls.get(self.gitlab, id, **kwargs)
+ return self.obj_cls.get(self.gitlab, id, **args)
def list(self, **kwargs):
"""Get a list of GitLab objects.
@@ -107,10 +112,10 @@ class BaseManager(object):
NotImplementedError: If objects cannot be listed.
GitlabListError: If the server fails to perform the request.
"""
- self._set_parent_args(**kwargs)
+ args = self._set_parent_args(**kwargs)
if not self.obj_cls.canList:
raise NotImplementedError
- return self.obj_cls.list(self.gitlab, **kwargs)
+ return self.obj_cls.list(self.gitlab, **args)
def create(self, data, **kwargs):
"""Create a new object of class `obj_cls`.
@@ -129,10 +134,10 @@ class BaseManager(object):
NotImplementedError: If objects cannot be created.
GitlabCreateError: If the server fails to perform the request.
"""
- self._set_parent_args(**kwargs)
+ args = self._set_parent_args(**kwargs)
if not self.obj_cls.canCreate:
raise NotImplementedError
- return self.obj_cls.create(self.gitlab, data, **kwargs)
+ return self.obj_cls.create(self.gitlab, data, **args)
def delete(self, id, **kwargs):
"""Delete a GitLab object.
@@ -144,10 +149,10 @@ class BaseManager(object):
NotImplementedError: If objects cannot be deleted.
GitlabDeleteError: If the server fails to perform the request.
"""
- self._set_parent_args(**kwargs)
+ args = self._set_parent_args(**kwargs)
if not self.obj_cls.canDelete:
raise NotImplementedError
- self.gitlab.delete(self.obj_cls, id, **kwargs)
+ self.gitlab.delete(self.obj_cls, id, **args)
def _custom_list(self, url, cls, **kwargs):
r = self.gitlab._raw_get(url, **kwargs)