diff options
-rw-r--r-- | gitlab/__init__.py | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/gitlab/__init__.py b/gitlab/__init__.py index 5009e13..bdee4aa 100644 --- a/gitlab/__init__.py +++ b/gitlab/__init__.py @@ -471,16 +471,18 @@ class Gitlab(object): if inspect.isclass(obj): if not issubclass(obj, GitlabObject): raise GitlabError("Invalid class: %s" % obj) - params = {} - params[obj.idAttr] = id - else: - params = obj.__dict__.copy() + + params = {obj.idAttr: id if id else getattr(obj, obj.idAttr)} params.update(kwargs) + missing = [] for k in itertools.chain(obj.requiredUrlAttrs, obj.requiredDeleteAttrs): if k not in params: - missing.append(k) + try: + params[k] = getattr(obj, k) + except KeyError: + missing.append(k) if missing: raise GitlabDeleteError('Missing attribute(s): %s' % ", ".join(missing)) @@ -493,6 +495,10 @@ class Gitlab(object): # url-parameters left for attribute in obj.requiredUrlAttrs: del params[attribute] + if obj._id_in_delete_url: + # The ID is already built, no need to add it as extra key in query + # string + params.pop(obj.idAttr) try: r = self.session.delete(url, |