You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by be...@apache.org on 2023/04/20 00:17:36 UTC

[superset] 01/01: chore(slack): use recommended method for file upload

This is an automated email from the ASF dual-hosted git repository.

beto pushed a commit to branch slack_files_upload_v2
in repository https://gitbox.apache.org/repos/asf/superset.git

commit a4b106ee87d926ca3c16ecaf5cc37050966a7848
Author: Beto Dealmeida <ro...@dealmeida.net>
AuthorDate: Wed Apr 19 17:17:19 2023 -0700

    chore(slack): use recommended method for file upload
---
 superset/reports/notifications/slack.py           | 14 +++++---------
 superset/tasks/slack_util.py                      |  7 +++++--
 tests/integration_tests/reports/commands_tests.py |  7 +++++--
 3 files changed, 15 insertions(+), 13 deletions(-)

diff --git a/superset/reports/notifications/slack.py b/superset/reports/notifications/slack.py
index b89a700ef9..b74d63eecc 100644
--- a/superset/reports/notifications/slack.py
+++ b/superset/reports/notifications/slack.py
@@ -162,7 +162,6 @@ Error: %(text)s
         title = self._content.name
         channel = self._get_channel()
         body = self._get_body()
-        file_type = "csv" if self._content.csv else "png"
         try:
             token = app.config["SLACK_API_TOKEN"]
             if callable(token):
@@ -170,14 +169,11 @@ Error: %(text)s
             client = WebClient(token=token, proxy=app.config["SLACK_PROXY"])
             # files_upload returns SlackResponse as we run it in sync mode.
             if files:
-                for file in files:
-                    client.files_upload(
-                        channels=channel,
-                        file=file,
-                        initial_comment=body,
-                        title=title,
-                        filetype=file_type,
-                    )
+                client.files_upload_v2(
+                    file_uploads=[{"file": file, "title": title} for file in files],
+                    channels=channel,
+                    initial_comment=body,
+                )
             else:
                 client.chat_postMessage(channel=channel, text=body)
             logger.info("Report sent to slack")
diff --git a/superset/tasks/slack_util.py b/superset/tasks/slack_util.py
index 652fd89b6f..16035e3ac7 100644
--- a/superset/tasks/slack_util.py
+++ b/superset/tasks/slack_util.py
@@ -47,8 +47,11 @@ def deliver_slack_msg(
     if file:
         response = cast(
             SlackResponse,
-            client.files_upload(
-                channels=slack_channel, file=file, initial_comment=body, title=subject
+            client.files_upload_v2(
+                channels=slack_channel,
+                file=file,
+                initial_comment=body,
+                title=subject,
             ),
         )
         assert response["file"], str(response)  # the uploaded file
diff --git a/tests/integration_tests/reports/commands_tests.py b/tests/integration_tests/reports/commands_tests.py
index cad6a75a5d..9feb2169a5 100644
--- a/tests/integration_tests/reports/commands_tests.py
+++ b/tests/integration_tests/reports/commands_tests.py
@@ -1123,7 +1123,7 @@ def test_email_dashboard_report_schedule_force_screenshot(
 @pytest.mark.usefixtures(
     "load_birth_names_dashboard_with_slices", "create_report_slack_chart"
 )
-@patch("superset.reports.notifications.slack.WebClient.files_upload")
+@patch("superset.reports.notifications.slack.WebClient.files_upload_v2")
 @patch("superset.utils.screenshots.ChartScreenshot.get_screenshot")
 def test_slack_chart_report_schedule(
     screenshot_mock,
@@ -1147,7 +1147,10 @@ def test_slack_chart_report_schedule(
             )
 
             assert file_upload_mock.call_args[1]["channels"] == notification_targets[0]
-            assert file_upload_mock.call_args[1]["file"] == SCREENSHOT_FILE
+            assert (
+                file_upload_mock.call_args[1]["file_uploads"][0]["file"]
+                == SCREENSHOT_FILE
+            )
 
             # Assert logs are correct
             assert_log(ReportState.SUCCESS)