@@ -70,6 +70,18 @@ def create(self, data, **kwargs):
7070 raise NotImplementedError
7171 return self .obj_cls .create (self .gitlab , data , ** kwargs )
7272
73+ def _custom_list (self , url , cls , ** kwargs ):
74+ r = self .gitlab ._raw_get (url , ** kwargs )
75+ raise_error_from_response (r , GitlabListError )
76+
77+ l = []
78+ for j in r .json ():
79+ o = cls (self , j )
80+ o ._from_api = True
81+ l .append (o )
82+
83+ return l
84+
7385
7486class GitlabObject (object ):
7587 """Base class for all classes that interface with GitLab
@@ -433,6 +445,14 @@ def transfer_project(self, id, **kwargs):
433445class GroupManager (BaseManager ):
434446 obj_cls = Group
435447
448+ def search (self , query , ** kwargs ):
449+ """Searches groups by name.
450+
451+ Returns a list of matching groups.
452+ """
453+ url = '/groups?search=' + query
454+ return self ._custom_list (url , Group , ** kwargs )
455+
436456
437457class Hook (GitlabObject ):
438458 _url = '/hooks'
@@ -1016,32 +1036,21 @@ class UserProject(GitlabObject):
10161036class ProjectManager (BaseManager ):
10171037 obj_cls = Project
10181038
1019- def _custom_list (self , url , ** kwargs ):
1020- r = self .gitlab ._raw_get (url , ** kwargs )
1021- raise_error_from_response (r , GitlabListError )
1022-
1023- l = []
1024- for o in r .json ():
1025- p = Project (self , o )
1026- p ._from_api = True
1027- l .append (p )
1028-
1029- return l
1030-
10311039 def search (self , query , ** kwargs ):
10321040 """Searches projects by name.
10331041
10341042 Returns a list of matching projects.
10351043 """
1036- return self ._custom_list ("/projects/search/" + query , ** kwargs )
1044+ return self ._custom_list ("/projects/search/" + query , Project ,
1045+ ** kwargs )
10371046
10381047 def all (self , ** kwargs ):
10391048 """Lists all the projects (need admin rights)."""
1040- return self ._custom_list ("/projects/all" , ** kwargs )
1049+ return self ._custom_list ("/projects/all" , Project , ** kwargs )
10411050
10421051 def owned (self , ** kwargs ):
10431052 """Lists owned projects."""
1044- return self ._custom_list ("/projects/owned" , ** kwargs )
1053+ return self ._custom_list ("/projects/owned" , Project , ** kwargs )
10451054
10461055
10471056class UserProjectManager (BaseManager ):
0 commit comments