@@ -10,7 +10,6 @@ def main():
10
10
parser .add_argument ('--server' , '-s' , required = True , help = 'Tableau server address' )
11
11
parser .add_argument ('--username' , '-u' , required = True , help = 'username to sign into server' )
12
12
parser .add_argument ('--password' , '-p' , required = False , help = 'password to sign into server' )
13
- # TODO: for workbook, only disable and enable
14
13
parser .add_argument ('--mode' , '-m' , required = False , choices = ['disable' , 'enable' , 'enable_all' , 'enable_selective' ],
15
14
help = 'enable/disable materialized views for sites/workbooks' )
16
15
parser .add_argument ('--status' , '-st' , required = False , action = 'store_true' ,
@@ -134,6 +133,8 @@ def update_project_by_path(args, materialized_views_mode, password, site_content
134
133
server = TSC .Server (args .server , use_server_version = True )
135
134
project_name = args .project_path .split ('/' )[- 1 ]
136
135
with server .auth .sign_in (tableau_auth ):
136
+ if not assert_site_enabled_for_materialized_views (server , site_content_url ):
137
+ return False
137
138
projects = [project for project in TSC .Pager (server .projects ) if project .name == project_name ]
138
139
139
140
possible_paths = get_project_paths (server , projects )
@@ -148,6 +149,8 @@ def update_project_by_name(args, materialized_views_config, password, site_conte
148
149
tableau_auth = TSC .TableauAuth (args .username , password , site_content_url )
149
150
server = TSC .Server (args .server , use_server_version = True )
150
151
with server .auth .sign_in (tableau_auth ):
152
+ if not assert_site_enabled_for_materialized_views (server , site_content_url ):
153
+ return False
151
154
# get all projects with given name
152
155
projects = [project for project in TSC .Pager (server .projects ) if project .name == args .project_name ]
153
156
@@ -191,6 +194,8 @@ def update_workbook(args, materialized_views_config, password, site_content_url)
191
194
tableau_auth = TSC .TableauAuth (args .username , password , site_id = site_content_url )
192
195
server = TSC .Server (args .server , use_server_version = True )
193
196
with server .auth .sign_in (tableau_auth ):
197
+ if not assert_site_enabled_for_materialized_views (server , site_content_url ):
198
+ return False
194
199
if args .path_list is not None :
195
200
workbook_path_mapping = parse_workbook_path (args .path_list )
196
201
all_projects = {project .id : project for project in TSC .Pager (server .projects )}
@@ -273,5 +278,14 @@ def assert_options_valid(args):
273
278
return False
274
279
return True
275
280
281
+
282
+ def assert_site_enabled_for_materialized_views (server , site_content_url ):
283
+ parent_site = server .sites .get_by_content_url (site_content_url )
284
+ if parent_site .materialized_views_mode == "disable" :
285
+ print ('Cannot update workbook/project because site is disabled for materialized views' )
286
+ return False
287
+ return True
288
+
289
+
276
290
if __name__ == "__main__" :
277
291
main ()
0 commit comments