diff --git a/tableauserverclient/models/property_decorators.py b/tableauserverclient/models/property_decorators.py
index d893305f7..2a47c889a 100644
--- a/tableauserverclient/models/property_decorators.py
+++ b/tableauserverclient/models/property_decorators.py
@@ -144,8 +144,10 @@ def wrapper(self, value):
if not isinstance(value, dict):
raise ValueError("{} is not type 'dict', cannot update {})".format(value.__class__.__name__,
func.__name__))
- if len(value) != 2 or not all(attr in value.keys() for attr in ('acceleration_enabled',
- 'accelerate_now')):
+ if len(value) != 4 or not all(attr in value.keys() for attr in ('acceleration_enabled',
+ 'accelerate_now',
+ 'last_updated_at',
+ 'acceleration_status')):
error = "{} should have 2 keys ".format(func.__name__)
error += "'acceleration_enabled' and 'accelerate_now'"
error += "instead you have {}".format(value.keys())
diff --git a/tableauserverclient/models/workbook_item.py b/tableauserverclient/models/workbook_item.py
index 75acb5b15..a7decd41f 100644
--- a/tableauserverclient/models/workbook_item.py
+++ b/tableauserverclient/models/workbook_item.py
@@ -28,7 +28,9 @@ def __init__(self, project_id, name=None, show_tabs=False):
self.show_tabs = show_tabs
self.tags = set()
self.data_acceleration_config = {'acceleration_enabled': None,
- 'accelerate_now': None}
+ 'accelerate_now': None,
+ 'last_updated_at': None,
+ 'acceleration_status': None}
self._permissions = None
@property
@@ -248,7 +250,8 @@ def _parse_element(workbook_xml, ns):
if views_elem is not None:
views = ViewItem.from_xml_element(views_elem, ns)
- data_acceleration_config = {'acceleration_enabled': None, 'accelerate_now': None}
+ data_acceleration_config = {'acceleration_enabled': None, 'accelerate_now': None,
+ 'last_updated_at': None, 'acceleration_status': None}
data_acceleration_elem = workbook_xml.find('.//t:dataAccelerationConfig', namespaces=ns)
if data_acceleration_elem is not None:
data_acceleration_config = parse_data_acceleration_config(data_acceleration_elem)
@@ -268,8 +271,16 @@ def parse_data_acceleration_config(data_acceleration_elem):
if accelerate_now is not None:
accelerate_now = string_to_bool(accelerate_now)
+ last_updated_at = data_acceleration_elem.get('lastUpdatedAt', None)
+ if last_updated_at is not None:
+ last_updated_at = parse_datetime(last_updated_at)
+
+ acceleration_status = data_acceleration_elem.get('accelerationStatus', None)
+
data_acceleration_config['acceleration_enabled'] = acceleration_enabled
data_acceleration_config['accelerate_now'] = accelerate_now
+ data_acceleration_config['last_updated_at'] = last_updated_at
+ data_acceleration_config['acceleration_status'] = acceleration_status
return data_acceleration_config
diff --git a/tableauserverclient/server/request_options.py b/tableauserverclient/server/request_options.py
index 7e1e6a808..af2ed27de 100644
--- a/tableauserverclient/server/request_options.py
+++ b/tableauserverclient/server/request_options.py
@@ -11,6 +11,7 @@ class Operator:
LessThan = 'lt'
LessThanOrEqual = 'lte'
In = 'in'
+ Has = 'has'
class Field:
Args = 'args'
diff --git a/test/assets/workbook_update.xml b/test/assets/workbook_update.xml
index 7a72759d8..6e5d36105 100644
--- a/test/assets/workbook_update.xml
+++ b/test/assets/workbook_update.xml
@@ -4,6 +4,6 @@
-
+
\ No newline at end of file
diff --git a/test/test_workbook.py b/test/test_workbook.py
index fac6c49a1..06019cfac 100644
--- a/test/test_workbook.py
+++ b/test/test_workbook.py
@@ -131,8 +131,10 @@ def test_update(self):
single_workbook._id = '1f951daf-4061-451a-9df1-69a8062664f2'
single_workbook.owner_id = 'dd2239f6-ddf1-4107-981a-4cf94e415794'
single_workbook.name = 'renamedWorkbook'
- single_workbook.materialized_views_config = {'materialized_views_enabled': True,
- 'run_materialization_now': False}
+ single_workbook.data_acceleration_config = {'acceleration_enabled': True,
+ 'accelerate_now': False,
+ 'last_updated_at': None,
+ 'acceleration_status': None}
single_workbook = self.server.workbooks.update(single_workbook)
self.assertEqual('1f951daf-4061-451a-9df1-69a8062664f2', single_workbook.id)
@@ -140,8 +142,8 @@ def test_update(self):
self.assertEqual('1d0304cd-3796-429f-b815-7258370b9b74', single_workbook.project_id)
self.assertEqual('dd2239f6-ddf1-4107-981a-4cf94e415794', single_workbook.owner_id)
self.assertEqual('renamedWorkbook', single_workbook.name)
- self.assertEqual(True, single_workbook.materialized_views_config['materialized_views_enabled'])
- self.assertEqual(False, single_workbook.materialized_views_config['run_materialization_now'])
+ self.assertEqual(True, single_workbook.data_acceleration_config['acceleration_enabled'])
+ self.assertEqual(False, single_workbook.data_acceleration_config['accelerate_now'])
def test_update_missing_id(self):
single_workbook = TSC.WorkbookItem('test')