diff --git a/superset/reports/notifications/slack.py b/superset/reports/notifications/slack.py index 8fb0158176..b833cbd53d 100644 --- a/superset/reports/notifications/slack.py +++ b/superset/reports/notifications/slack.py @@ -29,6 +29,7 @@ from superset import app from superset.models.reports import ReportRecipientType from superset.reports.notifications.base import BaseNotification from superset.reports.notifications.exceptions import NotificationError +from superset.utils.urls import modify_url_query logger = logging.getLogger(__name__) @@ -47,6 +48,11 @@ class SlackNotification(BaseNotification): # pylint: disable=too-few-public-met return json.loads(self._recipient.recipient_config_json)["target"] def _message_template(self, table: str = "") -> str: + url = ( + modify_url_query(self._content.url, standalone="0") + if self._content.url is not None + else "" + ) return __( """*%(name)s* @@ -58,7 +64,7 @@ class SlackNotification(BaseNotification): # pylint: disable=too-few-public-met """, name=self._content.name, description=self._content.description or "", - url=self._content.url, + url=url, table=table, ) diff --git a/tests/integration_tests/reports/commands_tests.py b/tests/integration_tests/reports/commands_tests.py index f03666ec9a..68effd2c7f 100644 --- a/tests/integration_tests/reports/commands_tests.py +++ b/tests/integration_tests/reports/commands_tests.py @@ -1024,6 +1024,7 @@ def test_slack_chart_report_schedule( notification_targets = get_target_from_report_schedule( create_report_slack_chart ) + assert file_upload_mock.call_args[1]["channels"] == notification_targets[0] assert file_upload_mock.call_args[1]["file"] == SCREENSHOT_FILE @@ -1118,6 +1119,10 @@ def test_slack_chart_report_schedule_with_text( | 0 | c11 | c12 | c13 | | 1 | c21 | c22 | c23 |""" assert table_markdown in post_message_mock.call_args[1]["text"] + assert ( + f"" + in post_message_mock.call_args[1]["text"] + ) # Assert logs are correct assert_log(ReportState.SUCCESS)