Skip to content

Commit dbbcb10

Browse files
committed
Adapt test to listitems
1 parent b3304e3 commit dbbcb10

File tree

2 files changed

+48
-9
lines changed

2 files changed

+48
-9
lines changed

dataikuapi/dss/admin.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import datetime
22

3+
from dataikuapi.dss.utils import DSSTaggableObjectListItem
4+
35
from .future import DSSFuture
46
import json, warnings
57

@@ -1169,6 +1171,38 @@ def delete(self):
11691171
return self.client._perform_empty(
11701172
"DELETE", "/personal-api-keys/%s" % self.id_)
11711173

1174+
class DSSPersonalApiKeyListItem(DSSTaggableObjectListItem):
1175+
"""An item in a list of datasets. Do not instantiate this class, :meth:`dataikuapi.DSSClient.list_personal_api_keys` or :meth:`dataikuapi.DSSClient.list_all_personal_api_keys`"""
1176+
def __init__(self, client, data):
1177+
super(DSSPersonalApiKeyListItem, self).__init__(data)
1178+
self.client = client
1179+
1180+
def to_personal_api_key(self):
1181+
"""Gets the :class:`DSSPersonalApiKey` corresponding to this item"""
1182+
return DSSPersonalApiKey(self.client, self._data["id"])
1183+
1184+
@property
1185+
def id(self):
1186+
return self._data["id"]
1187+
@property
1188+
def user(self):
1189+
return self._data["user"]
1190+
@property
1191+
def key(self):
1192+
return self._data["key"]
1193+
@property
1194+
def label(self):
1195+
return self._data["label"]
1196+
@property
1197+
def description(self):
1198+
return self._data["description"]
1199+
@property
1200+
def created_on(self):
1201+
return self._data["createdOn"]
1202+
@property
1203+
def created_by(self):
1204+
return self._data["createdBy"]
1205+
11721206
class DSSCluster(object):
11731207
"""
11741208
A handle to interact with a cluster on the DSS instance

dataikuapi/dssclient.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
from .dss.project import DSSProject
1111
from .dss.app import DSSApp
1212
from .dss.plugin import DSSPlugin
13-
from .dss.admin import DSSUser, DSSUserActivity, DSSOwnUser, DSSGroup, DSSConnection, DSSGeneralSettings, DSSCodeEnv, DSSGlobalApiKey, DSSCluster, DSSGlobalUsageSummary, DSSInstanceVariables, DSSPersonalApiKey
13+
from .dss.admin import DSSPersonalApiKeyListItem, DSSUser, DSSUserActivity, DSSOwnUser, DSSGroup, DSSConnection, DSSGeneralSettings, DSSCodeEnv, DSSGlobalApiKey, DSSCluster, DSSGlobalUsageSummary, DSSInstanceVariables, DSSPersonalApiKey
1414

1515
from .dss.meaning import DSSMeaning
1616
from .dss.sqlquery import DSSSQLQuery
@@ -674,21 +674,24 @@ def create_global_api_key(self, label=None, description=None, admin=False):
674674
# Personal API Keys
675675
########################################################
676676

677-
def list_personal_api_keys(self, as_type='objects'):
677+
def list_personal_api_keys(self, as_type='listitems'):
678678
"""
679679
List all your personal API keys.
680680
681681
:param str as_type: How to return the personal API keys. Possible values are "dict" and "objects"
682682
683-
:return: if as_type=dict, each personal API keys is returned as a dict.
683+
:return: if as_type=listitems, each one as a :class:`dataikuapi.dss.admin.DSSPersonalApiKeyListItem`.
684684
if as_type=objects, each key is returned as a :class:`dataikuapi.dss.admin.DSSPersonalApiKey`.
685685
"""
686686
resp = self._perform_json(
687687
"GET", "/personal-api-keys/")
688-
if as_type == 'objects':
688+
689+
if as_type == "listitems":
690+
return [DSSPersonalApiKeyListItem(self, item) for item in resp]
691+
elif as_type == 'objects':
689692
return [DSSPersonalApiKey(self, item['id']) for item in resp]
690693
else:
691-
return resp
694+
raise ValueError("Unknown as_type")
692695

693696
def get_personal_api_key(self, id):
694697
"""
@@ -723,22 +726,24 @@ def create_personal_api_key(self, label="", description="", as_type='dict'):
723726
else:
724727
return resp
725728

726-
def list_all_personal_api_keys(self, as_type='objects'):
729+
def list_all_personal_api_keys(self, as_type='listitems'):
727730
"""
728731
List all personal API keys.
729732
Only admin can list all the keys.
730733
731734
:param str as_type: How to return the personal API keys. Possible values are "dict" and "objects"
732735
733-
:return: if as_type=dict, each personal API keys is returned as a dict.
736+
:return: if as_type=listitems, each one as a :class:`dataikuapi.dss.admin.DSSPersonalApiKeyListItem`.
734737
if as_type=objects, each key is returned as a :class:`dataikuapi.dss.admin.DSSPersonalApiKey`.
735738
"""
736739
resp = self._perform_json(
737740
"GET", "/admin/personal-api-keys/")
738-
if as_type == 'objects':
741+
if as_type == "listitems":
742+
return [DSSPersonalApiKeyListItem(self, item) for item in resp]
743+
elif as_type == 'objects':
739744
return [DSSPersonalApiKey(self, item['id']) for item in resp]
740745
else:
741-
return resp
746+
raise ValueError("Unknown as_type")
742747

743748
def create_personal_api_key_for_user(self, user, label="", description="", as_type='object'):
744749
"""

0 commit comments

Comments
 (0)