Skip to content

Commit 397101d

Browse files
committed
Improve "Team preferences"
Also use new methods `{get,update}_preferences` to avoid confusion.
1 parent 3869ca1 commit 397101d

File tree

2 files changed

+49
-9
lines changed

2 files changed

+49
-9
lines changed

grafana_client/elements/team.py

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import typing as t
2+
import warnings
23

34
from ..model import PersonalPreferences
45
from .base import Base
@@ -135,7 +136,27 @@ def remove_team_member(self, team_id, user_id):
135136
r = self.client.DELETE(remove_team_member_path)
136137
return r
137138

138-
def get_team_preferences(self, team_id):
139+
def get_team_preferences(self, team_id: int):
140+
"""
141+
142+
:param team_id:
143+
:return:
144+
"""
145+
warnings.warn("This method is deprecated, please use `get_preferences`", DeprecationWarning)
146+
return self.get_preferences(team_id=team_id)
147+
148+
def update_team_preferences(self, team_id: int, preferences: t.Dict):
149+
"""
150+
151+
:param team_id:
152+
:param preferences:
153+
:return:
154+
"""
155+
warnings.warn("This method is deprecated, please use `update_preferences`", DeprecationWarning)
156+
preferences = PersonalPreferences(**preferences)
157+
return self.update_preferences(team_id=team_id, preferences=preferences)
158+
159+
def get_preferences(self, team_id: int):
139160
"""
140161
141162
:param team_id:
@@ -145,22 +166,20 @@ def get_team_preferences(self, team_id):
145166
r = self.client.GET(get_team_preferences_path)
146167
return r
147168

148-
def update_team_preferences(self, team_id, preferences: t.Union[PersonalPreferences, t.Dict]):
169+
def update_preferences(self, team_id: int, preferences: PersonalPreferences):
149170
"""
150171
151172
:param team_id:
152173
:param preferences:
153174
:return:
154175
"""
155176
update_team_preferences_path = "/teams/%s/preferences" % team_id
156-
if isinstance(preferences, dict):
157-
data = preferences
158-
elif isinstance(preferences, PersonalPreferences):
177+
if isinstance(preferences, PersonalPreferences):
159178
data = preferences.asdict(filter_none=True)
160179
else:
161180
raise TypeError(
162181
f"Unable to use data type '{type(preferences)}' for updating preferences. "
163-
f"Use `PersonalPreferences` or `dict`."
182+
f"Please use `PersonalPreferences` instead."
164183
)
165184
r = self.client.PUT(update_team_preferences_path, json=data)
166185
return r

test/elements/test_team.py

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,9 @@ def test_remove_team_member(self, m):
244244

245245
@requests_mock.Mocker()
246246
def test_get_team_preferences(self, m):
247+
"""
248+
Legacy method.
249+
"""
247250
m.get(
248251
"http://localhost/api/teams/1/preferences",
249252
json={"theme": "", "homeDashboardId": 0, "timezone": ""},
@@ -252,7 +255,10 @@ def test_get_team_preferences(self, m):
252255
self.assertEqual(prefs["homeDashboardId"], 0)
253256

254257
@requests_mock.Mocker()
255-
def test_update_team_preferences_dict(self, m):
258+
def test_update_team_preferences(self, m):
259+
"""
260+
Legacy method, using a dictionary.
261+
"""
256262
m.put(
257263
"http://localhost/api/teams/1/preferences",
258264
json={"message": "Preferences updated"},
@@ -266,14 +272,29 @@ def test_update_team_preferences_dict(self, m):
266272
self.assertEqual(updates["message"], "Preferences updated")
267273

268274
@requests_mock.Mocker()
269-
def test_update_team_preferences_model(self, m):
275+
def test_get_preferences(self, m):
276+
"""
277+
Modern method.
278+
"""
279+
m.get(
280+
"http://localhost/api/teams/1/preferences",
281+
json={"theme": "", "homeDashboardId": 0, "timezone": ""},
282+
)
283+
prefs = self.grafana.teams.get_preferences("1")
284+
self.assertEqual(prefs["homeDashboardId"], 0)
285+
286+
@requests_mock.Mocker()
287+
def test_update_preferences(self, m):
288+
"""
289+
Modern method, using a `PersonalPreferences` instance.
290+
"""
270291
m.put(
271292
"http://localhost/api/teams/1/preferences",
272293
json={"message": "Preferences updated"},
273294
)
274295
prefs = PersonalPreferences(theme="light", homeDashboardId=0, timezone="utc")
275296

276-
updates = self.grafana.teams.update_team_preferences("1", prefs)
297+
updates = self.grafana.teams.update_preferences("1", prefs)
277298
history = m.request_history
278299
json_payload = history[0].json()
279300
self.assertEqual(json_payload["theme"], "light")

0 commit comments

Comments
 (0)