Skip to content

Commit d1f80da

Browse files
author
Gauvain Pocentek
committed
link GitLab and User classes to their possible children
1 parent 01152da commit d1f80da

File tree

1 file changed

+29
-7
lines changed

1 file changed

+29
-7
lines changed

gitlab.py

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@ def authenticate(self, email=None, password=None):
5252

5353
r = self.rawPost('/session', {'email': email, 'password': password})
5454
if r.status_code == 201:
55-
self.user = User(self, r.json)
55+
self.user = CurrentUser(self, r.json)
5656
else:
57-
raise GitlabAuthenticationError()
57+
raise GitlabAuthenticationError(r.json['message'])
5858

5959
self.private_token = self.user.private_token
6060

@@ -189,6 +189,24 @@ def update(self, objClass, id, objData, **kwargs):
189189
else:
190190
raise GitlabUpdateError('%d: %s'%(r.status_code, r.text))
191191

192+
def getListOrObject(self, cls, id, **kwargs):
193+
if id == None:
194+
return cls.list(self, **kwargs)
195+
else:
196+
return cls.get(self, id, **kwargs)
197+
198+
def Project(self, id=None):
199+
return self.getListOrObject(Project, id)
200+
201+
def Group(self, id=None):
202+
return self.getListOrObject(Group, id)
203+
204+
def Issue(self, id=None):
205+
return self.getListOrObject(Issue, id)
206+
207+
def User(self, id=None):
208+
return self.getListOrObject(User, id)
209+
192210

193211
class GitlabObject(object):
194212
url = None
@@ -282,18 +300,22 @@ def __str__(self):
282300
class User(GitlabObject):
283301
url = '/users'
284302

303+
class CurrentUserKey(GitlabObject):
304+
url = '/user/keys'
305+
canUpdate = False
306+
285307
class CurrentUser(GitlabObject):
286308
url = '/user'
287309
canGetList = False
288310
canCreate = False
289311
canUpdate = False
290312
canDelete = False
291313

292-
class CurrentUserKey(GitlabObject):
293-
url = '/user/keys'
294-
canUpdate = False
295-
296-
url = '/users'
314+
def Key(self, id=None):
315+
if id == None:
316+
return CurrentUserKey.list(self.gitlab)
317+
else:
318+
return CurrentUserKey.get(self.gitlab, id)
297319

298320
class Group(GitlabObject):
299321
url = '/groups'

0 commit comments

Comments
 (0)