Skip to content

Commit 0e0c81d

Browse files
author
Gauvain Pocentek
committed
Fix discovery of parents object attrs for managers
1 parent a4e29f8 commit 0e0c81d

File tree

1 file changed

+15
-10
lines changed

1 file changed

+15
-10
lines changed

gitlab/objects.py

+15-10
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
from __future__ import print_function
1919
from __future__ import division
2020
from __future__ import absolute_import
21+
import copy
2122
import itertools
2223
import json
2324
import sys
@@ -71,11 +72,14 @@ def __init__(self, gl, parent=None, args=[]):
7172
raise AttributeError("obj_cls must be defined")
7273

7374
def _set_parent_args(self, **kwargs):
75+
args = copy.copy(kwargs)
7476
if self.parent is not None:
7577
for attr, parent_attr in self.args:
76-
kwargs.setdefault(attr, getattr(self.parent, parent_attr))
78+
args.setdefault(attr, getattr(self.parent, parent_attr))
7779

78-
def get(self, id, **kwargs):
80+
return args
81+
82+
def get(self, id=None, **kwargs):
7983
"""Get a GitLab object.
8084
8185
Args:
@@ -89,10 +93,11 @@ def get(self, id, **kwargs):
8993
NotImplementedError: If objects cannot be retrieved.
9094
GitlabGetError: If the server fails to perform the request.
9195
"""
92-
self._set_parent_args(**kwargs)
96+
args = self._set_parent_args(**kwargs)
97+
print(args)
9398
if not self.obj_cls.canGet:
9499
raise NotImplementedError
95-
return self.obj_cls.get(self.gitlab, id, **kwargs)
100+
return self.obj_cls.get(self.gitlab, id, **args)
96101

97102
def list(self, **kwargs):
98103
"""Get a list of GitLab objects.
@@ -107,10 +112,10 @@ def list(self, **kwargs):
107112
NotImplementedError: If objects cannot be listed.
108113
GitlabListError: If the server fails to perform the request.
109114
"""
110-
self._set_parent_args(**kwargs)
115+
args = self._set_parent_args(**kwargs)
111116
if not self.obj_cls.canList:
112117
raise NotImplementedError
113-
return self.obj_cls.list(self.gitlab, **kwargs)
118+
return self.obj_cls.list(self.gitlab, **args)
114119

115120
def create(self, data, **kwargs):
116121
"""Create a new object of class `obj_cls`.
@@ -129,10 +134,10 @@ def create(self, data, **kwargs):
129134
NotImplementedError: If objects cannot be created.
130135
GitlabCreateError: If the server fails to perform the request.
131136
"""
132-
self._set_parent_args(**kwargs)
137+
args = self._set_parent_args(**kwargs)
133138
if not self.obj_cls.canCreate:
134139
raise NotImplementedError
135-
return self.obj_cls.create(self.gitlab, data, **kwargs)
140+
return self.obj_cls.create(self.gitlab, data, **args)
136141

137142
def delete(self, id, **kwargs):
138143
"""Delete a GitLab object.
@@ -144,10 +149,10 @@ def delete(self, id, **kwargs):
144149
NotImplementedError: If objects cannot be deleted.
145150
GitlabDeleteError: If the server fails to perform the request.
146151
"""
147-
self._set_parent_args(**kwargs)
152+
args = self._set_parent_args(**kwargs)
148153
if not self.obj_cls.canDelete:
149154
raise NotImplementedError
150-
self.gitlab.delete(self.obj_cls, id, **kwargs)
155+
self.gitlab.delete(self.obj_cls, id, **args)
151156

152157
def _custom_list(self, url, cls, **kwargs):
153158
r = self.gitlab._raw_get(url, **kwargs)

0 commit comments

Comments
 (0)