server-client-python icon indicating copy to clipboard operation
server-client-python copied to clipboard

Unable to publish a workbook successfully

Open JeffreyLine opened this issue 6 months ago • 2 comments

Describe the bug I have some code that I have been using for quite some time to publish workbook and also data sources to our on -prem environment. We just migrated to the cloud. While I had to change how we authenticate to the cloud the code to publish a dashboard is not completing. This is a workbook that is connecting live to a database that is on-prem. That is why I was using the skip_connection_check=True. Which seems to hang for me.

Versions I'm using version 0.36 right now.

To Reproduce Here is a snippet of the code I was using originally.

    if row['AssetType'] == 'Workbook':
        try:
            ################  PUBLISH WORKBOOK ################
            displayviews = gethiddensheets(server, asset.id, dload_path, RunProcessPath)
            print('    Publishing Workbook!')
            show_tabs = True
            if row['ShowTabs'].upper() == 'FALSE':
                show_tabs = False
            wb_item = TSC.WorkbookItem(name=row['AssetName'], project_id=row['DestinationProjectLUID'], show_tabs=show_tabs)
            if displayviews is None:
                publishedasset = server.workbooks.publish(wb_item, dload_path, 'Overwrite',
                                                      as_job=False, skip_connection_check='True', show_tabs=row['ShowTabs'])
            elif displayviews == -1:
                print('ERROR: Grabbing Hidden Sheets!')
                result = '1|ERROR: Grabbing Hidden Sheets!|'
            else:
                publishedasset = server.workbooks.publish(wb_item, dload_path, 'Overwrite',
                                                      as_job=False, skip_connection_check='True',
                                                      hidden_views=displayviews)
        except Exception as e:
            print('ERROR: Publishing Workbook!')
            print("error in level argument", e.args[0])
            result = '1|ERROR: Publishing Workbook!|'
            return result

New code to adjust for the hidden views in the wb_item:

    if row['AssetType'] == 'Workbook':
        try:
            ################  PUBLISH WORKBOOK ################
            #workbook = server.workbooks.get_by_id(asset.id)
            #all_connections = server.workbooks.populate_connections(workbook)
            displayviews = gethiddensheets(server, asset.id, dload_path, RunProcessPath)
            print('    Publishing Workbook!')
            show_tabs = True
            if row['ShowTabs'].upper() == 'FALSE':
                show_tabs = False
            wb_item = TSC.WorkbookItem(name=row['AssetName'], project_id=row['DestinationProjectLUID'], show_tabs=show_tabs)
            if displayviews is None:
                publishedasset = server.workbooks.publish(wb_item, dload_path, 'Overwrite')
            elif displayviews == -1:
                print('ERROR: Grabbing Hidden Sheets!')
                result = '1|ERROR: Grabbing Hidden Sheets!| '
            else:
                try:
                    print('Hidden Views')
                    wb_item.hidden_views = displayviews

                   publishedasset = server.workbooks.publish(wb_item, dload_path, mode='Overwrite',
                                                              skip_connection_check=True,
                                                              as_job=False)

Results server.workbooks.publish never returns. If I remove or change skip_connection_check to false it does complete with the following error.

403132: Forbidden
		AssetPromotionRequest failed to establish a connection to your datasource.

JeffreyLine avatar Jul 14 '25 03:07 JeffreyLine

The database is on prem, correct? Do you have tableau bridge setup?

jorwoods avatar Jul 14 '25 03:07 jorwoods

Yes the database is on-prem and we do have Tableau bridge setup and the database I'm connecting to does work via the bridge. Now our bridge client happens to be on another server than the one that is running this code. Not sure if that would affect anything.

Quick update. It appears to only be affecting a live connection embedded in a workbook. Or a workbook that is using a server data source that is also a live connection.

JeffreyLine avatar Jul 14 '25 03:07 JeffreyLine