@@ -6,33 +6,45 @@ class DSSProjectFolder(object):
66
77 Do not create this class directly, instead use :meth:`dataikuapi.DSSClient.get_project_folder` or :meth:`dataikuapi.DSSClient.get_root_project_folder`
88 """
9- def __init__ (self , client , project_folder_id ):
9+ def __init__ (self , client , data ):
1010 self .client = client
11- self .project_folder_id = project_folder_id
11+ self ._data = data
1212
1313 ########################################################
1414 # Project folder basics
1515 ########################################################
16- def get_name (self ):
16+
17+ @property
18+ def id (self ):
1719 """
18- Get this project folder's name or None if it is the root project folder
20+ Get this project folder's id
21+ :returns str: the id of this project folder
22+ """
23+ return self ._data ["id" ]
1924
25+ @property
26+ def name (self ):
27+ """
28+ Get this project folder's name or None if it is the root project folder
2029 :returns str: the name of this project folders or None for the root project folder
2130 """
22- return self .client . _perform_json ( "GET" , "/project-folders/%s" % self . project_folder_id ) .get ("name" , None )
31+ return self ._data .get ("name" , None )
2332
24- def get_path (self ):
33+ def get_name (self ):
34+ """
35+ See name
2536 """
26- Get this project fodler's path based on the root project folder
37+ return self . name
2738
28- :returns str: the path of this project folder
39+ def get_path (self ):
40+ """
41+ Get this project folder's path from the orot, in the form of /name/name/name
42+ :return str: the path of this project folder
2943 """
30- definition = self .client ._perform_json ("GET" , "/project-folders/%s" % self .project_folder_id )
31- parent_id = definition .get ("parentId" , None )
32- if parent_id is not None :
33- parent = DSSProjectFolder (self .client , parent_id )
44+ parent = self .get_parent ()
45+ if parent is not None :
3446 path = parent .get_path ()
35- return ("" if path == "/" else path ) + "/" + definition . get ( " name" , "" )
47+ return ("" if path == "/" else path ) + "/" + self . name
3648 else :
3749 return "/"
3850
@@ -42,37 +54,32 @@ def get_parent(self):
4254
4355 :returns: A :class:`dataikuapi.dss.projectfolders.DSSProjectFolder` to interact with its parent or None for the root project folder
4456 """
45- parent_id = self .client . _perform_json ( "GET" , "/project-folders/%s" % self . project_folder_id ) .get ("parentId" , None )
57+ parent_id = self ._data .get ("parentId" , None )
4658 if parent_id is None :
4759 return None
4860 else :
49- return DSSProjectFolder ( self .client , parent_id )
61+ return self .client . get_project_folder ( parent_id )
5062
5163 def list_child_folders (self ):
5264 """
5365 List the child project folders inside this project folder
54-
5566 :returns list: A list of :class:`dataikuapi.dss.projectfolders.DSSProjectFolder` to interact with its sub-folders
5667 """
57- children = self .client ._perform_json ("GET" , "/project-folders/%s" % self .project_folder_id ).get ("childrenIds" , [])
58- return [DSSProjectFolder (self .client , child ) for child in children ]
68+ return [self .client .get_project_folder (child_id ) for child_id in self ._data ["childrenIds" ]]
5969
6070 def list_project_keys (self ):
6171 """
6272 List the project keys of the projects that are stored in this project folder
63-
6473 :returns list: A list of project keys
6574 """
66- return self .client . _perform_json ( "GET" , "/project-folders/%s" % self . project_folder_id ). get ( " projectKeys", [])
75+ return self ._data [ " projectKeys"]
6776
6877 def list_projects (self ):
6978 """
7079 List the projects that are stored in this project folder
71-
7280 :returns list: A list of :class:`dataikuapi.dss.project.DSSProject` to interact with its projects
7381 """
74- project_keys = self .client ._perform_json ("GET" , "/project-folders/%s" % self .project_folder_id ).get ("projectKeys" , [])
75- return [DSSProject (self .client , pkey ) for pkey in project_keys ]
82+ return [self .client .get_project (pkey ) for pkey in self .list_project_keys ()]
7683
7784 ########################################################
7885 # Project folder deletion
@@ -84,8 +91,7 @@ def delete(self):
8491
8592 This call requires an API key with admin rights
8693 """
87- return self .client ._perform_empty (
88- "DELETE" , "/project-folders/%s" % self .project_folder_id )
94+ return self .client ._perform_empty ("DELETE" , "/project-folders/%s" % self .id )
8995
9096 ########################################################
9197 # Project folder settings
@@ -94,8 +100,8 @@ def get_settings(self):
94100 """
95101 :returns: A :class:`dataikuapi.dss.projectfolder.DSSProjectFolderSettings` to interact with this project folder settings
96102 """
97- settings = self .client ._perform_json ("GET" , "/project-folders/%s/settings" % self .project_folder_id )
98- return DSSProjectFolderSettings (self .client , self .project_folder_id , settings )
103+ settings = self .client ._perform_json ("GET" , "/project-folders/%s/settings" % self .id )
104+ return DSSProjectFolderSettings (self .client , self .id , settings )
99105
100106 ########################################################
101107 # Project folder sub-folder creation
@@ -110,8 +116,8 @@ def create_sub_folder(self, name):
110116 params = {
111117 "name" : name
112118 }
113- pf = self .client ._perform_json ("POST" , "/project-folders/%s/children" % self .project_folder_id , params = params )
114- return DSSProjectFolder (self .client , pf [ "id" ] )
119+ pf = self .client ._perform_json ("POST" , "/project-folders/%s/children" % self .id , params = params )
120+ return DSSProjectFolder (self .client , pf )
115121
116122 ########################################################
117123 # Project creation
@@ -130,7 +136,7 @@ def create_project(self, project_key, name, owner, description=None, settings=No
130136
131137 :returns: A class:`dataikuapi.dss.project.DSSProject` project handle to interact with this project
132138 """
133- return self .client .create_project (project_key , name , owner , description = description , settings = settings , project_folder_id = self .project_folder_id )
139+ return self .client .create_project (project_key , name , owner , description = description , settings = settings , project_folder_id = self .id )
134140
135141 ########################################################
136142 # Project folder move
@@ -143,9 +149,9 @@ def move_to(self, destination):
143149 :type destination: A :class:`dataikuapi.dss.projectfolders.DSSProjectFolder`
144150 """
145151 params = {
146- "destination" : destination .project_folder_id
152+ "destination" : destination .id
147153 }
148- self .client ._perform_empty ("POST" , "/project-folders/%s/move" % self .project_folder_id , params = params )
154+ self .client ._perform_empty ("POST" , "/project-folders/%s/move" % self .id , params = params )
149155
150156 ########################################################
151157 # Project move
@@ -158,10 +164,13 @@ def move_project_to(self, project_key, destination):
158164 :param destination: the project folder to put this project into
159165 :type destination: A :class:`dataikuapi.dss.projectfolders.DSSProjectFolder`
160166 """
167+ # Be nice with what people pass
168+ if isinstance (project_key , DSSProject ):
169+ project_key = project_key .project_key
161170 params = {
162- "destination" : destination .project_folder_id
171+ "destination" : destination .id
163172 }
164- self .client ._perform_empty ("POST" , "/project-folders/%s/projects/%s/move" % (self .project_folder_id , project_key ), params = params )
173+ self .client ._perform_empty ("POST" , "/project-folders/%s/projects/%s/move" % (self .id , project_key ), params = params )
165174
166175class DSSProjectFolderSettings (object ):
167176 """
@@ -171,7 +180,7 @@ class DSSProjectFolderSettings(object):
171180 """
172181 def __init__ (self , client , project_folder_id , settings ):
173182 self .client = client
174- self .project_folder_id = project_folder_id
183+ self .id = project_folder_id
175184 self .settings = settings
176185
177186 def get_raw (self ):
@@ -220,5 +229,5 @@ def get_permissions(self):
220229
221230 def save (self ):
222231 """Saves back the settings to the project folder"""
223- self .client ._perform_empty ("PUT" , "/project-folders/%s/settings" % (self .project_folder_id ), body = self .settings )
232+ self .client ._perform_empty ("PUT" , "/project-folders/%s/settings" % (self .id ), body = self .settings )
224233
0 commit comments