diff --git a/tableauserverclient/models/schedule_item.py b/tableauserverclient/models/schedule_item.py index 18c0516d1..94823d6c2 100644 --- a/tableauserverclient/models/schedule_item.py +++ b/tableauserverclient/models/schedule_item.py @@ -103,6 +103,10 @@ def state(self, value): def updated_at(self): return self._updated_at + @property + def warnings(self): + return self._warnings + def _parse_common_tags(self, schedule_xml, ns): if not isinstance(schedule_xml, ET.Element): schedule_xml = ET.fromstring(schedule_xml).find('.//t:schedule', namespaces=ns) @@ -125,7 +129,7 @@ def _parse_common_tags(self, schedule_xml, ns): return self def _set_values(self, id_, name, state, created_at, updated_at, schedule_type, - next_run_at, end_schedule_at, execution_order, priority, interval_item): + next_run_at, end_schedule_at, execution_order, priority, interval_item, warnings=None): if id_ is not None: self._id = id_ if name: @@ -148,6 +152,8 @@ def _set_values(self, id_, name, state, created_at, updated_at, schedule_type, self._priority = priority if interval_item: self._interval_item = interval_item + if warnings: + self._warnings = warnings @classmethod def from_response(cls, resp, ns): @@ -156,6 +162,11 @@ def from_response(cls, resp, ns): @classmethod def from_element(cls, parsed_response, ns): + all_warning_xml = parsed_response.findall('.//t:warning', namespaces=ns) + warnings = list() if len(all_warning_xml) > 0 else None + for warning_xml in all_warning_xml: + warnings.append(warning_xml.get('message', None)) + all_schedule_items = [] all_schedule_xml = parsed_response.findall('.//t:schedule', namespaces=ns) for schedule_xml in all_schedule_xml: @@ -174,7 +185,8 @@ def from_element(cls, parsed_response, ns): end_schedule_at=end_schedule_at, execution_order=None, priority=None, - interval_item=None) + interval_item=None, + warnings=warnings) all_schedule_items.append(schedule_item) return all_schedule_items diff --git a/test/assets/schedule_create_weekly.xml b/test/assets/schedule_create_weekly.xml index 624a56e25..a12a6eace 100644 --- a/test/assets/schedule_create_weekly.xml +++ b/test/assets/schedule_create_weekly.xml @@ -9,4 +9,8 @@ + + + + \ No newline at end of file diff --git a/test/test_schedule.py b/test/test_schedule.py index b5aadcbca..310a2b84a 100644 --- a/test/test_schedule.py +++ b/test/test_schedule.py @@ -153,6 +153,9 @@ def test_create_weekly(self): self.assertEqual(time(9, 15), new_schedule.interval_item.start_time) self.assertEqual(("Monday", "Wednesday", "Friday"), new_schedule.interval_item.interval) + self.assertEqual(2, len(new_schedule.warnings)) + self.assertEqual("warning 1", new_schedule.warnings[0]) + self.assertEqual("warning 2", new_schedule.warnings[1]) def test_create_monthly(self): with open(CREATE_MONTHLY_XML, "rb") as f: