diff --git a/tabcmd/commands/datasources_and_workbooks/publish_command.py b/tabcmd/commands/datasources_and_workbooks/publish_command.py index 8ec8871f..39c430f0 100644 --- a/tabcmd/commands/datasources_and_workbooks/publish_command.py +++ b/tabcmd/commands/datasources_and_workbooks/publish_command.py @@ -69,11 +69,13 @@ def run_command(cls, args): if args.db_username: creds = TSC.models.ConnectionCredentials(args.db_username, args.db_password, embed=args.save_db_password) workbook_connections = TSC.ConnectionItem() + workbook_connections.server_address = args.db_server workbook_connections.connection_credentials = creds datasource_credentials = creds elif args.oauth_username: creds = TSC.models.ConnectionCredentials(args.oauth_username, None, embed=False, oauth=args.save_oauth) workbook_connections = TSC.ConnectionItem() + workbook_connections.server_address = args.db_server workbook_connections.connection_credentials = creds datasource_credentials = creds else: @@ -183,7 +185,7 @@ def publish_workbook_file(args, logger, server, project_id, str_filename, publis publish_mode, # args.thumbnail_username, not yet implemented in tsc # args.thumbnail_group, - connections=credentials, + connections=[credentials] if credentials else None, as_job=False, skip_connection_check=args.skip_connection_check, ) diff --git a/tabcmd/execution/global_options.py b/tabcmd/execution/global_options.py index a0c1ee79..cf80b8e9 100644 --- a/tabcmd/execution/global_options.py +++ b/tabcmd/execution/global_options.py @@ -258,6 +258,7 @@ def set_publish_args(parser): creds.add_argument("--db-username", help=_("publish.options.db-username")) parser.add_argument("--save-oauth", action="store_true", help=_("publish.options.save-oauth")) + parser.add_argument("--db-server", help=_("publish.options.db-server")) parser.add_argument("--db-password", help=_("publish.options.db-password")) parser.add_argument("--save-db-password", action="store_true", help=_("publish.options.save-db-password")) diff --git a/tabcmd/locales/de/LC_MESSAGES/tabcmd.mo b/tabcmd/locales/de/LC_MESSAGES/tabcmd.mo index cac49e59..91b71d3f 100644 Binary files a/tabcmd/locales/de/LC_MESSAGES/tabcmd.mo and b/tabcmd/locales/de/LC_MESSAGES/tabcmd.mo differ diff --git a/tabcmd/locales/de/tabcmd_messages_de.properties b/tabcmd/locales/de/tabcmd_messages_de.properties index 3b7578f4..d9fbddee 100644 --- a/tabcmd/locales/de/tabcmd_messages_de.properties +++ b/tabcmd/locales/de/tabcmd_messages_de.properties @@ -233,6 +233,7 @@ publish.errors.server_resource_not_found=Die von Ihnen angegebene Ressource exis publish.options.append=Extraktdatei an vorhandene Datenquelle anfügen publish.options.async=Asynchron veröffentlichen publish.options.db-password=Datenbankkennwort für alle Datenquellen +publish.options.db-server=Serveradresse der Datenbank, die den eingebetteten Verbindungsanmeldeinformationen zugeordnet werden soll. Erforderlich bei Verwendung von --db-username oder --oauth-username zum Veröffentlichen einer Arbeitsmappe. publish.options.db-username=Datenbankbenutzername für alle Datenquellen publish.options.description=Beschreibung der Arbeitsmappe oder Datenquelle publish.options.encrypt_extracts=Extrakte auf dem Server verschlüsseln diff --git a/tabcmd/locales/en/LC_MESSAGES/tabcmd.mo b/tabcmd/locales/en/LC_MESSAGES/tabcmd.mo index 6bc6de81..f3e06d38 100644 Binary files a/tabcmd/locales/en/LC_MESSAGES/tabcmd.mo and b/tabcmd/locales/en/LC_MESSAGES/tabcmd.mo differ diff --git a/tabcmd/locales/en/tabcmd_messages_en.properties b/tabcmd/locales/en/tabcmd_messages_en.properties index 2fe0f59e..763cde97 100644 --- a/tabcmd/locales/en/tabcmd_messages_en.properties +++ b/tabcmd/locales/en/tabcmd_messages_en.properties @@ -204,6 +204,7 @@ publish.errors.server_resource_not_found=The resource you specified does not exi publish.options.append=Append extract file to existing data source publish.options.async=Publish asynchronously publish.options.db-password=Database password for all data sources +publish.options.db-server=Server address of the database to associate with the embedded connection credentials. Required when using --db-username or --oauth-username to publish a workbook. publish.options.db-username=Database username for all data sources publish.options.description=Description of the workbook or data source publish.options.encrypt_extracts=Encrypt extracts in the workbook or datasource being published to the server. [N/a on Tableau Cloud] diff --git a/tabcmd/locales/es/LC_MESSAGES/tabcmd.mo b/tabcmd/locales/es/LC_MESSAGES/tabcmd.mo index db1cd9b8..fdbbd2bf 100644 Binary files a/tabcmd/locales/es/LC_MESSAGES/tabcmd.mo and b/tabcmd/locales/es/LC_MESSAGES/tabcmd.mo differ diff --git a/tabcmd/locales/es/tabcmd_messages_es.properties b/tabcmd/locales/es/tabcmd_messages_es.properties index e85e4320..adeeb8ae 100644 --- a/tabcmd/locales/es/tabcmd_messages_es.properties +++ b/tabcmd/locales/es/tabcmd_messages_es.properties @@ -233,6 +233,7 @@ publish.errors.server_resource_not_found=El recurso que ha especificado no exist publish.options.append=Adjuntar archivo de extracción a fuente de datos existente publish.options.async=Publicar de forma asíncrona publish.options.db-password=Contraseña de base de datos para todas las fuentes de datos +publish.options.db-server=Dirección del servidor de la base de datos que se asociará con las credenciales de conexión incrustadas. Obligatorio cuando se usa --db-username o --oauth-username para publicar un libro de trabajo. publish.options.db-username=Nombre de usuario de base de datos para todas las fuentes de datos publish.options.description=Descripción del libro de trabajo o la fuente de datos publish.options.encrypt_extracts=Cifrar extracciones en el servidor diff --git a/tabcmd/locales/fr/LC_MESSAGES/tabcmd.mo b/tabcmd/locales/fr/LC_MESSAGES/tabcmd.mo index 70813c35..7a160340 100644 Binary files a/tabcmd/locales/fr/LC_MESSAGES/tabcmd.mo and b/tabcmd/locales/fr/LC_MESSAGES/tabcmd.mo differ diff --git a/tabcmd/locales/fr/tabcmd_messages_fr.properties b/tabcmd/locales/fr/tabcmd_messages_fr.properties index 1f1d772d..fbfe9a31 100644 --- a/tabcmd/locales/fr/tabcmd_messages_fr.properties +++ b/tabcmd/locales/fr/tabcmd_messages_fr.properties @@ -233,6 +233,7 @@ publish.errors.server_resource_not_found=La ressource spécifiée n’existe pas publish.options.append=Ajout d’un fichier d’extrait à une source de données existante publish.options.async=Publier de manière asynchrone publish.options.db-password=Mot de passe de base de données pour toutes les sources de données. +publish.options.db-server=Adresse du serveur de la base de données à associer aux informations d’identification de connexion intégrées. Obligatoire lors de l’utilisation de --db-username ou --oauth-username pour publier un classeur. publish.options.db-username=Nom d’utilisateur de base de données pour toutes les sources de données. publish.options.description=Description du classeur ou de la source de données publish.options.encrypt_extracts=Crypter les extraits sur le serveur diff --git a/tabcmd/locales/ga/LC_MESSAGES/tabcmd.mo b/tabcmd/locales/ga/LC_MESSAGES/tabcmd.mo index ecc45de2..27474b6b 100644 Binary files a/tabcmd/locales/ga/LC_MESSAGES/tabcmd.mo and b/tabcmd/locales/ga/LC_MESSAGES/tabcmd.mo differ diff --git a/tabcmd/locales/ga/tabcmd_messages_ga.properties b/tabcmd/locales/ga/tabcmd_messages_ga.properties index 9c63a6e7..8ace3bcb 100644 --- a/tabcmd/locales/ga/tabcmd_messages_ga.properties +++ b/tabcmd/locales/ga/tabcmd_messages_ga.properties @@ -233,6 +233,7 @@ publish.errors.server_resource_not_found=b7e8-表:The resource you specified doe publish.options.append=6393-表:Append extract file to existing data source|桜 publish.options.async=7c1c-表:Publish asynchronously|桜 publish.options.db-password=ab47-表:Database password for all data sources|桜 +publish.options.db-server=3166-表:Server address of the database to associate with the embedded connection credentials. Required when using --db-username or --oauth-username to publish a workbook.|桜 publish.options.db-username=139f-表:Database username for all data sources|桜 publish.options.description=3bff-表:Description of the workbook or data source|桜 publish.options.encrypt_extracts=cfbc-表:Encrypt extracts on the server|桜 diff --git a/tabcmd/locales/it/LC_MESSAGES/tabcmd.mo b/tabcmd/locales/it/LC_MESSAGES/tabcmd.mo index 50a2e9f7..3535bc68 100644 Binary files a/tabcmd/locales/it/LC_MESSAGES/tabcmd.mo and b/tabcmd/locales/it/LC_MESSAGES/tabcmd.mo differ diff --git a/tabcmd/locales/it/tabcmd_messages_it.properties b/tabcmd/locales/it/tabcmd_messages_it.properties index ce944c81..7fa49826 100644 --- a/tabcmd/locales/it/tabcmd_messages_it.properties +++ b/tabcmd/locales/it/tabcmd_messages_it.properties @@ -233,6 +233,7 @@ publish.errors.server_resource_not_found=La risorsa specificata non esiste o non publish.options.append=Aggiungi un file di estrazione all’origine dati esistente publish.options.async=Pubblica in modo asincrono publish.options.db-password=Password del database per tutte le origini dati +publish.options.db-server=Indirizzo del server del database da associare alle credenziali di connessione incorporate. Obbligatorio quando si usa --db-username o --oauth-username per pubblicare una cartella di lavoro. publish.options.db-username=Nome utente del database per tutte le origini dati publish.options.description=Descrizione della cartella di lavoro o dell’origine dati publish.options.encrypt_extracts=Crittografare le estrazioni su un server diff --git a/tabcmd/locales/ja/LC_MESSAGES/tabcmd.mo b/tabcmd/locales/ja/LC_MESSAGES/tabcmd.mo index ce6b79fa..7d06038c 100644 Binary files a/tabcmd/locales/ja/LC_MESSAGES/tabcmd.mo and b/tabcmd/locales/ja/LC_MESSAGES/tabcmd.mo differ diff --git a/tabcmd/locales/ja/tabcmd_messages_ja.properties b/tabcmd/locales/ja/tabcmd_messages_ja.properties index 275a7215..ca366ffb 100644 --- a/tabcmd/locales/ja/tabcmd_messages_ja.properties +++ b/tabcmd/locales/ja/tabcmd_messages_ja.properties @@ -233,6 +233,7 @@ publish.errors.server_resource_not_found=指定されたリソースは存在し publish.options.append=抽出ファイルを既存のデータ ソースに追加 publish.options.async=非同期でパブリッシュ publish.options.db-password=すべてのデータ ソースのデータベース パスワード +publish.options.db-server=埋め込まれた接続資格情報に関連付けるデータベースのサーバー アドレス。ワークブックの発行時に --db-username または --oauth-username を使用する場合は必須です。 publish.options.db-username=すべてのデータ ソースのデータベース ユーザー名 publish.options.description=ワークブックまたはデータ ソースの説明 publish.options.encrypt_extracts=サーバーで抽出を暗号化する diff --git a/tabcmd/locales/ko/LC_MESSAGES/tabcmd.mo b/tabcmd/locales/ko/LC_MESSAGES/tabcmd.mo index 0b1ea7d1..54c8d41c 100644 Binary files a/tabcmd/locales/ko/LC_MESSAGES/tabcmd.mo and b/tabcmd/locales/ko/LC_MESSAGES/tabcmd.mo differ diff --git a/tabcmd/locales/ko/tabcmd_messages_ko.properties b/tabcmd/locales/ko/tabcmd_messages_ko.properties index 175ab513..623c2caf 100644 --- a/tabcmd/locales/ko/tabcmd_messages_ko.properties +++ b/tabcmd/locales/ko/tabcmd_messages_ko.properties @@ -233,6 +233,7 @@ publish.errors.server_resource_not_found=지정한 리소스가 존재하지 않 publish.options.append=기존 데이터 원본에 추출 파일 추가 publish.options.async=비동기식으로 게시 publish.options.db-password=모든 데이터 원본에 대한 데이터베이스 비밀번호 +publish.options.db-server=포함된 연결 자격 증명과 연결할 데이터베이스의 서버 주소입니다. 워크북을 게시할 때 --db-username 또는 --oauth-username을 사용하는 경우 필수입니다. publish.options.db-username=모든 데이터 원본에 대한 데이터베이스 사용자 이름 publish.options.description=통합 문서 또는 데이터 원본의 설명 publish.options.encrypt_extracts=서버에서 추출 암호화 diff --git a/tabcmd/locales/pt/LC_MESSAGES/tabcmd.mo b/tabcmd/locales/pt/LC_MESSAGES/tabcmd.mo index fa709d8a..2b6036af 100644 Binary files a/tabcmd/locales/pt/LC_MESSAGES/tabcmd.mo and b/tabcmd/locales/pt/LC_MESSAGES/tabcmd.mo differ diff --git a/tabcmd/locales/pt/tabcmd_messages_pt.properties b/tabcmd/locales/pt/tabcmd_messages_pt.properties index f1ecb23b..7c63823b 100644 --- a/tabcmd/locales/pt/tabcmd_messages_pt.properties +++ b/tabcmd/locales/pt/tabcmd_messages_pt.properties @@ -233,6 +233,7 @@ publish.errors.server_resource_not_found=O recurso especificado não existe ou v publish.options.append=Anexe o arquivo de extração à fonte de dados existente publish.options.async=Publicar de forma assíncrona publish.options.db-password=Senha do banco de dados para todas as fontes de dados +publish.options.db-server=Endereço do servidor do banco de dado associado as credenciais. Obrigatório ao usar --db-username ou --oauth-username. publish.options.db-username=Nome de usuário do banco de dados para todas as fontes de dados publish.options.description=Descrição da pasta de trabalho ou fonte de dados publish.options.encrypt_extracts=Criptografar extrações no servidor diff --git a/tabcmd/locales/sv/LC_MESSAGES/tabcmd.mo b/tabcmd/locales/sv/LC_MESSAGES/tabcmd.mo index e329a6a8..d854d2f1 100644 Binary files a/tabcmd/locales/sv/LC_MESSAGES/tabcmd.mo and b/tabcmd/locales/sv/LC_MESSAGES/tabcmd.mo differ diff --git a/tabcmd/locales/sv/tabcmd_messages_sv.properties b/tabcmd/locales/sv/tabcmd_messages_sv.properties index 080a19c1..d02dfded 100644 --- a/tabcmd/locales/sv/tabcmd_messages_sv.properties +++ b/tabcmd/locales/sv/tabcmd_messages_sv.properties @@ -233,6 +233,7 @@ publish.errors.server_resource_not_found=Den resurs du angav finns inte, eller s publish.options.append=Lägg till extraktfil till befintlig datakälla publish.options.async=Publicera asynkront publish.options.db-password=Databaslösenord för alla datakällor +publish.options.db-server=Serveradress för databasen som ska associeras med de inbäddade anslutningsuppgifterna. Krävs när --db-username eller --oauth-username används för att publicera en arbetsbok. publish.options.db-username=Databasanvändarnamn för alla datakällor publish.options.description=Beskrivning av arbetsboken eller datakällan publish.options.encrypt_extracts=Kryptera extrakt på servern diff --git a/tabcmd/locales/zh/LC_MESSAGES/tabcmd.mo b/tabcmd/locales/zh/LC_MESSAGES/tabcmd.mo index 3c252067..c9d0e60f 100644 Binary files a/tabcmd/locales/zh/LC_MESSAGES/tabcmd.mo and b/tabcmd/locales/zh/LC_MESSAGES/tabcmd.mo differ diff --git a/tabcmd/locales/zh/tabcmd_messages_zh.properties b/tabcmd/locales/zh/tabcmd_messages_zh.properties index 5a7a19ac..4f6f8d81 100644 --- a/tabcmd/locales/zh/tabcmd_messages_zh.properties +++ b/tabcmd/locales/zh/tabcmd_messages_zh.properties @@ -233,6 +233,7 @@ publish.errors.server_resource_not_found=指定的资源不存在,或者您没 publish.options.append=将数据提取文件追加到现有数据源 publish.options.async=异步发布 publish.options.db-password=用于所有数据源的数据库密码 +publish.options.db-server=要与嵌入式连接凭据关联的数据库的服务器地址。使用 --db-username 或 --oauth-username 发布工作簿时必需。 publish.options.db-username=用于所有数据源的数据库用户名 publish.options.description=工作簿或数据源的描述 publish.options.encrypt_extracts=在服务器上对数据提取进行加密 diff --git a/tests/commands/test_publish_command.py b/tests/commands/test_publish_command.py index 368fd997..df4b7115 100644 --- a/tests/commands/test_publish_command.py +++ b/tests/commands/test_publish_command.py @@ -55,6 +55,7 @@ def test_publish_with_creds(self, mock_path, mock_glob, mock_session): mock_args.db_username = "username" mock_args.db_password = "oauth_u" + mock_args.db_server = "db.example.com" mock_args.save_db_password = True mock_args.oauth_username = None mock_args.embed = False @@ -66,6 +67,44 @@ def test_publish_with_creds(self, mock_path, mock_glob, mock_session): PublishCommand.run_command(mock_args) mock_session.internal_server.workbooks.publish.assert_called() + call_kwargs = mock_session.internal_server.workbooks.publish.call_args.kwargs + connections = call_kwargs["connections"] + self.assertEqual(len(connections), 1) + self.assertEqual(connections[0].server_address, "db.example.com") + + def test_publish_with_creds_no_db_server(self, mock_path, mock_glob, mock_session): + set_up_mock_server(mock_session) + mock_path = set_up_mock_path(mock_path) + + mock_args.overwrite = False + mock_args.append = True + mock_args.replace = False + + mock_args.filename = "existing_file.twbx" + mock_args.project_name = "project-name" + mock_args.parent_project_path = "projects" + mock_args.name = "" + mock_args.tabbed = True + + mock_args.db_username = "username" + mock_args.db_password = "oauth_u" + mock_args.db_server = None + mock_args.save_db_password = True + mock_args.oauth_username = None + mock_args.embed = False + + mock_args.thumbnail_username = None + mock_args.thumbnail_group = None + mock_args.skip_connection_check = False + + PublishCommand.run_command(mock_args) + mock_session.internal_server.workbooks.publish.assert_called() + + call_kwargs = mock_session.internal_server.workbooks.publish.call_args.kwargs + connections = call_kwargs["connections"] + self.assertEqual(len(connections), 1) + self.assertIsNone(connections[0].server_address) + def test_get_files_to_publish_twbx(self, mock_path, mock_glob, mock_session): set_up_mock_server(mock_session) mock_path = set_up_mock_path(mock_path)