Skip to content

Commit 6885a8a

Browse files
authored
Merge pull request #1391 from ivanB1975/master
Add workbook and datasource name attributes to JobItem Model
2 parents 55a74e3 + 4f542b5 commit 6885a8a

2 files changed

Lines changed: 32 additions & 0 deletions

File tree

tableauserverclient/models/job_item.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ def __init__(
3333
datasource_id: Optional[str] = None,
3434
flow_run: Optional[FlowRunItem] = None,
3535
updated_at: Optional[datetime.datetime] = None,
36+
workbook_name: Optional[str] = None,
37+
datasource_name: Optional[str] = None,
3638
):
3739
self._id = id_
3840
self._type = job_type
@@ -47,6 +49,8 @@ def __init__(
4749
self._datasource_id = datasource_id
4850
self._flow_run = flow_run
4951
self._updated_at = updated_at
52+
self._workbook_name = workbook_name
53+
self._datasource_name = datasource_name
5054

5155
@property
5256
def id(self) -> str:
@@ -117,6 +121,14 @@ def flow_run(self, value):
117121
def updated_at(self) -> Optional[datetime.datetime]:
118122
return self._updated_at
119123

124+
@property
125+
def workbook_name(self) -> Optional[str]:
126+
return self._workbook_name
127+
128+
@property
129+
def datasource_name(self) -> Optional[str]:
130+
return self._datasource_name
131+
120132
def __str__(self):
121133
return (
122134
"<Job#{_id} {_type} created_at({_created_at}) started_at({_started_at}) updated_at({_updated_at}) completed_at({_completed_at})"
@@ -148,8 +160,10 @@ def _parse_element(cls, element, ns):
148160
mode = element.get("mode", None)
149161
workbook = element.find(".//t:workbook[@id]", namespaces=ns)
150162
workbook_id = workbook.get("id") if workbook is not None else None
163+
workbook_name = workbook.get("name") if workbook is not None else None
151164
datasource = element.find(".//t:datasource[@id]", namespaces=ns)
152165
datasource_id = datasource.get("id") if datasource is not None else None
166+
datasource_name = datasource.get("name") if datasource is not None else None
153167
flow_run = None
154168
updated_at = parse_datetime(element.get("updatedAt", None))
155169
for flow_job in element.findall(".//t:runFlowJobType", namespaces=ns):
@@ -172,6 +186,8 @@ def _parse_element(cls, element, ns):
172186
datasource_id,
173187
flow_run,
174188
updated_at,
189+
workbook_name,
190+
datasource_name,
175191
)
176192

177193

test/test_job.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,3 +120,19 @@ def test_get_job_workbook_id(self) -> None:
120120
m.get(f"{self.baseurl}/{job_id}", text=response_xml)
121121
job = self.server.jobs.get_by_id(job_id)
122122
self.assertEqual(job.workbook_id, "5998aaaf-1abe-4d38-b4d9-bc53e85bdd13")
123+
124+
def test_get_job_workbook_name(self) -> None:
125+
response_xml = read_xml_asset(GET_BY_ID_WORKBOOK)
126+
job_id = "bb1aab79-db54-4e96-9dd3-461d8f081d08"
127+
with requests_mock.mock() as m:
128+
m.get(f"{self.baseurl}/{job_id}", text=response_xml)
129+
job = self.server.jobs.get_by_id(job_id)
130+
self.assertEqual(job.workbook_name, "Superstore")
131+
132+
def test_get_job_datasource_name(self) -> None:
133+
response_xml = read_xml_asset(GET_BY_ID_FAILED_XML)
134+
job_id = "777bf7c4-421d-4b2c-a518-11b90187c545"
135+
with requests_mock.mock() as m:
136+
m.get(f"{self.baseurl}/{job_id}", text=response_xml)
137+
job = self.server.jobs.get_by_id(job_id)
138+
self.assertEqual(job.datasource_name, "World Indicators")

0 commit comments

Comments
 (0)