Skip to content

Commit

Permalink
Fix discovery of parents object attrs for managers
Browse files Browse the repository at this point in the history
  • Loading branch information
Gauvain Pocentek committed Jan 16, 2016
1 parent a4e29f8 commit 0e0c81d
Showing 1 changed file with 15 additions and 10 deletions.
25 changes: 15 additions & 10 deletions gitlab/objects.py
Expand Up @@ -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
Expand Down Expand Up @@ -71,11 +72,14 @@ def __init__(self, gl, parent=None, args=[]):
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:
Expand All @@ -89,10 +93,11 @@ def get(self, id, **kwargs):
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.
Expand All @@ -107,10 +112,10 @@ def list(self, **kwargs):
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`.
Expand All @@ -129,10 +134,10 @@ def create(self, data, **kwargs):
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.
Expand All @@ -144,10 +149,10 @@ def delete(self, id, **kwargs):
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)
Expand Down

0 comments on commit 0e0c81d

Please sign in to comment.