Skip to content

Commit 100cb6d

Browse files
committed
feat: linked task get_by_id
1 parent 17a7443 commit 100cb6d

File tree

2 files changed

+36
-1
lines changed

2 files changed

+36
-1
lines changed

tableauserverclient/server/endpoint/linked_tasks_endpoint.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import List, Optional, Tuple
1+
from typing import List, Optional, Tuple, Union
22

33
from tableauserverclient.helpers.logging import logger
44
from tableauserverclient.models.linked_tasks_item import LinkedTaskItem
@@ -24,3 +24,12 @@ def get(self, req_options: Optional["RequestOptions"] = None) -> Tuple[List[Link
2424
pagination_item = PaginationItem.from_response(server_response.content, self.parent_srv.namespace)
2525
all_group_items = LinkedTaskItem.from_response(server_response.content, self.parent_srv.namespace)
2626
return all_group_items, pagination_item
27+
28+
@api(version="3.15")
29+
def get_by_id(self, linked_task: Union[LinkedTaskItem, str]) -> LinkedTaskItem:
30+
task_id = getattr(linked_task, "id", linked_task)
31+
logger.info("Querying all linked tasks on site")
32+
url = f"{self.baseurl}/{task_id}"
33+
server_response = self.get_request(url)
34+
all_group_items = LinkedTaskItem.from_response(server_response.content, self.parent_srv.namespace)
35+
return all_group_items[0]

test/test_linked_tasks.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,3 +73,29 @@ def test_get_linked_tasks(self):
7373
assert task.num_steps == 1
7474
assert task.schedule is not None
7575
assert task.schedule.id == "be077332-d01d-481b-b2f3-917e463d4dca"
76+
77+
def test_get_by_id_str_linked_task(self):
78+
id_ = "1b8211dc-51a8-45ce-a831-b5921708e03e"
79+
80+
with requests_mock.mock() as m:
81+
m.get(f"{self.baseurl}/{id_}", text=GET_LINKED_TASKS.read_text())
82+
task = self.server.linked_tasks.get_by_id(id_)
83+
84+
assert task.id == "1b8211dc-51a8-45ce-a831-b5921708e03e"
85+
assert task.num_steps == 1
86+
assert task.schedule is not None
87+
assert task.schedule.id == "be077332-d01d-481b-b2f3-917e463d4dca"
88+
89+
def test_get_by_id_obj_linked_task(self):
90+
id_ = "1b8211dc-51a8-45ce-a831-b5921708e03e"
91+
in_task = LinkedTaskItem()
92+
in_task.id = id_
93+
94+
with requests_mock.mock() as m:
95+
m.get(f"{self.baseurl}/{id_}", text=GET_LINKED_TASKS.read_text())
96+
task = self.server.linked_tasks.get_by_id(in_task)
97+
98+
assert task.id == "1b8211dc-51a8-45ce-a831-b5921708e03e"
99+
assert task.num_steps == 1
100+
assert task.schedule is not None
101+
assert task.schedule.id == "be077332-d01d-481b-b2f3-917e463d4dca"

0 commit comments

Comments
 (0)