You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by hu...@apache.org on 2023/04/05 02:07:38 UTC

[superset] 01/01: Merge branch 'master' of https://github.com/apache/superset into jack/migrate-copy-dash-to-api-v1

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

hugh pushed a commit to branch jack/migrate-copy-dash-to-api-v1
in repository https://gitbox.apache.org/repos/asf/superset.git

commit 6e988e9781a02ba789baa78e5effab489f2bc05e
Merge: 5ae2a525db 9d2f43d312
Author: hughhhh <hu...@gmail.com>
AuthorDate: Tue Apr 4 22:06:43 2023 -0400

    Merge branch 'master' of https://github.com/apache/superset into jack/migrate-copy-dash-to-api-v1

 .github/CODEOWNERS                                 |   10 +-
 .github/workflows/superset-python-unittest.yml     |    2 +
 .github/workflows/welcome-new-users.yml            |    3 +-
 .pre-commit-config.yaml                            |    9 +-
 Dockerfile                                         |   16 +-
 RELEASING/Dockerfile.from_local_tarball            |    3 +-
 RELEASING/changelog.py                             |    2 +-
 RELEASING/from_tarball_entrypoint.sh               |    1 +
 RESOURCES/FEATURE_FLAGS.md                         |    2 +-
 RESOURCES/INTHEWILD.md                             |    2 +
 UPDATING.md                                        |   16 +
 docker/.env-non-dev                                |    1 +
 docs/docs/contributing/local-backend.mdx           |    2 +
 .../creating-your-first-dashboard.mdx              |    2 +-
 .../docs/databases/installing-database-drivers.mdx |    4 +-
 docs/docs/databases/teradata.mdx                   |    2 +-
 docs/docs/installation/alerts-reports.mdx          |   20 +-
 docs/docs/installation/cache.mdx                   |    3 +
 docs/docs/installation/configuring-superset.mdx    |   12 +-
 .../installing-superset-from-scratch.mdx           |   10 +-
 docs/docs/installation/setup-ssh-tunneling.mdx     |   21 +
 docs/docs/installation/sql-templating.mdx          |   47 +-
 docs/docs/miscellaneous/chart-params.mdx           |    2 +-
 docs/docs/security.mdx                             |   18 +-
 docs/docusaurus.config.js                          |   13 +-
 docs/package.json                                  |   16 +-
 docs/static/resources/openapi.json                 |  352 +-
 docs/yarn.lock                                     | 4429 ++++-----
 helm/superset/Chart.yaml                           |    2 +-
 helm/superset/README.md                            |   11 +-
 helm/superset/templates/deployment-worker.yaml     |    3 +
 helm/superset/templates/deployment.yaml            |    3 +
 helm/superset/templates/ingress.yaml               |    3 +
 helm/superset/templates/init-job.yaml              |   26 +
 helm/superset/templates/service.yaml               |    9 +
 helm/superset/values.yaml                          |   24 +-
 pyproject.toml                                     |   19 -
 requirements/base.txt                              |    4 +-
 requirements/integration.txt                       |   22 +-
 scripts/generate_frontend_ts_tasklist.js           |    4 +-
 setup.py                                           |    9 +-
 superset-embedded-sdk/package-lock.json            |  100 +-
 superset-embedded-sdk/package.json                 |    2 +-
 superset-embedded-sdk/src/index.ts                 |    2 +
 superset-frontend/.storybook/main.js               |    5 +-
 .../cypress/integration/chart_list/list.test.ts    |    8 +-
 .../cypress/integration/dashboard/load.test.ts     |    5 +-
 .../integration/dashboard/nativeFilters.test.ts    |   27 +-
 .../cypress/integration/dashboard/utils.ts         |   11 +-
 .../cypress-base/cypress/support/directories.ts    |   12 +-
 superset-frontend/cypress-base/package-lock.json   | 6610 +++++++++----
 superset-frontend/cypress-base/package.json        |    2 +-
 superset-frontend/jest.config.js                   |    5 +-
 superset-frontend/package-lock.json                | 2137 ++++-
 superset-frontend/package.json                     |   14 +-
 .../generators/plugin-chart/templates/README.erb   |   25 +
 .../generators/plugin-chart/templates/package.erb  |    2 +-
 .../plugin-chart/templates/src/MyChart.erb         |   11 +-
 .../templates/src/plugin/controlPanel.erb          |   10 +-
 .../plugin-chart/templates/src/types.erb           |    6 +-
 .../templates/test/plugin/transformProps.test.erb  |    3 +-
 .../superset-ui-chart-controls/package.json        |    2 +-
 .../src/components/ColumnOption.tsx                |    8 +-
 .../src/components/MetricOption.tsx                |    8 +-
 .../src/operators/pivotOperator.ts                 |    9 +-
 .../src/operators/renameOperator.ts                |   20 +-
 .../src/operators/sortOperator.ts                  |    4 +-
 .../src/operators/timeCompareOperator.ts           |    4 +-
 .../src/operators/timeComparePivotOperator.ts      |    3 +-
 .../{isDerivedSeries.ts => extractExtraMetrics.ts} |   34 +-
 .../src/operators/utils/index.ts                   |    1 +
 .../src/operators/utils/isDerivedSeries.ts         |    4 +-
 .../src/operators/utils/isTimeComparison.ts        |    4 +-
 .../src/sections/advancedAnalytics.tsx             |   10 +-
 .../components/ColumnConfigControl/constants.tsx   |    2 +-
 .../src/shared-controls/customControls.tsx         |   81 +-
 .../src/shared-controls/mixins.tsx                 |    4 +-
 .../src/shared-controls/sharedControls.tsx         |    4 +-
 .../superset-ui-chart-controls/src/types.ts        |    4 +-
 .../src/utils/D3Formatting.ts                      |    7 +
 .../src/utils/expandControlConfig.tsx              |    2 +-
 .../test/operators/pivotOperator.test.ts           |   61 +-
 .../test/operators/renameOperator.test.ts          |   33 +-
 .../test/operators/rollingWindowOperator.test.ts   |    4 +-
 .../test/operators/sortOperator.test.ts            |   25 +
 .../test/operators/timeCompareOperator.test.ts     |    4 +-
 .../operators/timeComparePivotOperator.test.ts     |   39 +
 .../operators/utils/extractExtraMetrics.test.ts    |  136 +
 .../test/operators/utils/isDerivedSeries.test.ts   |   18 +-
 .../packages/superset-ui-core/package.json         |    2 +
 .../src/chart/components/SuperChart.tsx            |    2 +-
 .../superset-ui-core/src/chart/types/Base.ts       |   16 +-
 .../src/components/SafeMarkdown.tsx                |   23 +-
 .../superset-ui-core/src/hooks}/index.ts           |    5 +
 .../src/hooks/useChangeEffect/index.ts             |    0
 .../hooks/useChangeEffect/useChangeEffect.test.ts  |    0
 .../src/hooks/useChangeEffect/useChangeEffect.ts   |    0
 .../src/hooks/useComponentDidMount/index.ts        |    0
 .../useComponentDidMount.test.ts                   |    0
 .../useComponentDidMount/useComponentDidMount.ts   |    0
 .../src/hooks/useComponentDidUpdate/index.ts       |    0
 .../useComponentDidUpdate.test.ts                  |    0
 .../useComponentDidUpdate/useComponentDidUpdate.ts |    0
 .../src/hooks/useElementOnScreen}/index.ts         |    2 +-
 .../useElementOnScreen/useElementOnScreen.test.ts  |  111 +
 .../useElementOnScreen/useElementOnScreen.ts}      |    0
 .../src/hooks/usePrevious/index.ts                 |    0
 .../src/hooks/usePrevious/usePrevious.test.ts      |    0
 .../src/hooks/usePrevious/usePrevious.ts           |    0
 .../src/hooks/useTruncation/index.ts               |    0
 .../useTruncation/useCSSTextTruncation.test.tsx    |   62 +
 .../hooks/useTruncation/useCSSTextTruncation.ts    |    0
 .../useChildElementTruncation.test.ts              |  102 +
 .../useTruncation/useChildElementTruncation.ts     |    0
 .../packages/superset-ui-core/src/index.ts         |    1 +
 .../superset-ui-core/src/math-expression/index.ts  |    2 +-
 .../src/query/buildQueryContext.ts                 |   17 +-
 .../superset-ui-core/src/query/buildQueryObject.ts |    2 +-
 .../src/query/extractQueryFields.ts                |    3 +-
 .../superset-ui-core/src/query/normalizeOrderBy.ts |    2 +-
 .../src/query/types/AdvancedAnalytics.ts           |    4 +-
 .../src/query/types/PostProcessing.ts              |    6 +-
 .../packages/superset-ui-core/src/style/index.tsx  |    1 +
 .../superset-ui-core/src/time-format/index.ts      |    2 +
 .../src/time-format/utils/normalizeTimestamp.ts}   |   21 +-
 .../superset-ui-core/src/translation/index.ts      |    2 +-
 .../src/ui-overrides/ExtensionsRegistry.ts         |   11 +
 .../superset-ui-core/src/utils/featureFlags.ts     |    3 +-
 .../superset-ui-core/src/utils/getSelectedText.ts} |    3 +-
 .../packages/superset-ui-core/src/utils/index.ts   |    1 +
 .../test/components/SafeMarkdown.test.ts}          |   35 +-
 .../superset-ui-core/test/models/Registry.test.ts  |    2 +-
 .../factories/createD3NumberFormatter.test.ts      |    2 +-
 .../test/query/buildQueryContext.test.ts           |   37 -
 .../test/query/types/PostProcessing.test.ts        |    4 +-
 .../time-format/utils/normalizeTimestamp.test.ts   |   43 +
 .../test/utils/getSelectedText.test.ts}            |   22 +-
 .../packages/superset-ui-core/types/external.d.ts  |    2 +-
 .../Area/stories/controlsShown.tsx                 |    2 +-
 .../Area/stories/expanded.tsx                      |    2 +-
 .../Area/stories/stackedWithBounds.tsx             |    4 +-
 .../superset-ui-chart/SuperChartStories.tsx        |    2 +-
 .../superset-ui-switchboard/src/switchboard.ts     |    2 +-
 .../src/countries.ts                               |    2 +
 .../src/countries/srilanka.geojson                 | 9838 ++++++++++++++++++++
 .../legacy-plugin-chart-country-map/src/index.js   |    2 +-
 .../legacy-plugin-chart-heatmap/src/Heatmap.js     |   17 +-
 .../src/ReactParallelCoordinates.jsx               |    6 +-
 .../src/SankeyLoop.js                              |    4 +-
 .../legacy-plugin-chart-world-map/src/WorldMap.js  |  112 +-
 .../legacy-plugin-chart-world-map/src/index.js     |    6 +-
 .../src/transformProps.js                          |   17 +-
 .../src/components/PlaySlider.jsx                  |    4 +-
 .../src/layers/Polygon/Polygon.jsx                 |    4 +-
 .../src/layers/Scatter/controlPanel.ts             |    2 +-
 .../src/utilities/Shared_DeckGL.jsx                |   12 +-
 .../src/utils/fitViewport.ts                       |    2 +-
 .../legacy-preset-chart-deckgl/src/utils/time.js   |    8 +-
 .../src/Pie/controlPanel.ts                        |   10 +-
 .../plugins/legacy-preset-chart-nvd3/src/utils.js  |    2 +-
 .../src/BigNumber/BigNumberViz.tsx                 |    6 +-
 .../plugin-chart-echarts/src/BigNumber/types.ts    |    4 +-
 .../src/BoxPlot/EchartsBoxPlot.tsx                 |   51 +-
 .../src/BoxPlot/controlPanel.ts                    |    5 +-
 .../plugin-chart-echarts/src/BoxPlot/index.ts      |    8 +-
 .../src/Funnel/EchartsFunnel.tsx                   |   51 +-
 .../src/Funnel/controlPanel.tsx                    |    6 +-
 .../plugin-chart-echarts/src/Funnel/index.ts       |    6 +-
 .../src/Gauge/EchartsGauge.tsx                     |   51 +-
 .../plugin-chart-echarts/src/Gauge/index.ts        |    6 +-
 .../src/Graph/EchartsGraph.tsx                     |  110 +-
 .../plugin-chart-echarts/src/Graph/index.ts        |    8 +-
 .../src/Graph/transformProps.ts                    |   24 +-
 .../plugin-chart-echarts/src/Graph/types.ts        |    1 +
 .../src/MixedTimeseries/EchartsMixedTimeseries.tsx |  167 +-
 .../src/MixedTimeseries/buildQuery.ts              |   10 +-
 .../src/MixedTimeseries/index.ts                   |    6 +-
 .../plugin-chart-echarts/src/Pie/EchartsPie.tsx    |   51 +-
 .../plugin-chart-echarts/src/Pie/controlPanel.tsx  |    5 +-
 .../plugins/plugin-chart-echarts/src/Pie/index.ts  |    6 +-
 .../src/Radar/EchartsRadar.tsx                     |   52 +-
 .../plugin-chart-echarts/src/Radar/buildQuery.ts   |    4 +-
 .../src/Radar/controlPanel.tsx                     |    5 +-
 .../plugin-chart-echarts/src/Radar/index.ts        |    8 +-
 .../src/Sunburst/EchartsSunburst.tsx               |   99 +-
 .../src/Sunburst/controlPanel.tsx                  |    5 +-
 .../plugin-chart-echarts/src/Sunburst/index.ts     |    8 +-
 .../src/Timeseries/Area/controlPanel.tsx           |   16 +-
 .../src/Timeseries/Area/index.ts                   |    6 +-
 .../src/Timeseries/EchartsTimeseries.tsx           |  154 +-
 .../src/Timeseries/Regular/Bar/controlPanel.tsx    |   15 +-
 .../src/Timeseries/Regular/Bar/index.ts            |    6 +-
 .../src/Timeseries/Regular/Line/controlPanel.tsx   |   13 +-
 .../src/Timeseries/Regular/Line/index.ts           |    6 +-
 .../Timeseries/Regular/Scatter/controlPanel.tsx    |   13 +-
 .../src/Timeseries/Regular/Scatter/index.ts        |    6 +-
 .../Timeseries/Regular/SmoothLine/controlPanel.tsx |   13 +-
 .../src/Timeseries/Regular/SmoothLine/index.ts     |    6 +-
 .../src/Timeseries/Step/controlPanel.tsx           |   10 +-
 .../src/Timeseries/Step/index.ts                   |    6 +-
 .../src/Timeseries/buildQuery.ts                   |   35 +-
 .../src/Timeseries/constants.ts                    |    9 +
 .../plugin-chart-echarts/src/Timeseries/index.ts   |    6 +-
 .../src/Timeseries/transformProps.ts               |  109 +-
 .../src/Timeseries/transformers.ts                 |   94 +-
 .../plugin-chart-echarts/src/Timeseries/types.ts   |    1 +
 .../plugin-chart-echarts/src/Tree/controlPanel.tsx |    2 +-
 .../src/Treemap/EchartsTreemap.tsx                 |  119 +-
 .../src/Treemap/controlPanel.tsx                   |    5 +-
 .../plugin-chart-echarts/src/Treemap/index.ts      |   10 +-
 .../src/components/ExtraControls.tsx               |    4 +-
 .../plugins/plugin-chart-echarts/src/constants.ts  |   25 +-
 .../plugins/plugin-chart-echarts/src/controls.tsx  |   54 +-
 .../plugins/plugin-chart-echarts/src/types.ts      |   28 +-
 .../src/utils/eventHandlers.ts                     |  107 +-
 .../plugin-chart-echarts/src/utils/series.ts       |  115 +-
 .../test/Graph/transformProps.test.ts              |    6 +
 .../test/MixedTimeseries/buildQuery.test.ts        |   69 +-
 .../test/Timeseries/transformProps.test.ts         |  175 +
 .../plugin-chart-echarts/test/utils/series.test.ts |   52 +-
 .../test/plugin/transformProps.test.ts             |    4 +-
 .../plugins/plugin-chart-pivot-table/package.json  |    2 +-
 .../src/PivotTableChart.tsx                        |  103 +-
 .../src/plugin/controlPanel.tsx                    |    4 +-
 .../plugin-chart-pivot-table/src/plugin/index.ts   |   10 +-
 .../src/react-pivottable/Styles.js                 |    1 +
 .../src/react-pivottable/TableRenderers.jsx        |   12 +
 .../plugins/plugin-chart-pivot-table/src/types.ts  |    4 +-
 .../plugins/plugin-chart-table/package.json        |    1 +
 .../plugin-chart-table/src/DataTable/DataTable.tsx |   25 +-
 .../plugins/plugin-chart-table/src/TableChart.tsx  |  231 +-
 .../plugins/plugin-chart-table/src/buildQuery.ts   |    4 +-
 .../plugin-chart-table/src/controlPanel.tsx        |   32 +-
 .../plugins/plugin-chart-table/src/index.ts        |    8 +-
 .../plugin-chart-table/src/transformProps.ts       |    3 +-
 .../plugins/plugin-chart-table/src/types.ts        |    4 +-
 .../src/utils/DateWithFormatter.ts                 |   21 +-
 .../plugin-chart-table/test/TableChart.test.tsx    |    1 +
 .../plugins/plugin-chart-table/test/testData.ts    |   14 +
 .../src/legacyPlugin/transformProps.ts             |    7 +-
 .../src/legacyPlugin/types.ts                      |    4 +-
 .../plugins/plugin-chart-word-cloud/src/types.ts   |    4 +-
 .../src/utils/convertScaleToDataUIScaleShape.ts    |    2 +-
 .../spec/fixtures/mockChartQueries.js              |    1 +
 .../types.ts => spec/fixtures/mockCharts.ts}       |   52 +-
 .../spec/fixtures/mockDashboardState.js            |    2 +-
 superset-frontend/spec/helpers/shim.tsx            |   30 +
 superset-frontend/src/SqlLab/App.jsx               |   11 +-
 superset-frontend/src/SqlLab/actions/sqlLab.js     |   70 +-
 .../src/SqlLab/actions/sqlLab.test.js              |   53 +-
 .../SqlLab/components/AceEditorWrapper/index.tsx   |   35 +-
 .../src/SqlLab/components/App/App.test.jsx         |   49 +-
 .../src/SqlLab/components/App/index.jsx            |   17 +-
 .../components/ExploreCtasResultsButton/index.tsx  |    6 +-
 .../QueryLimitSelect/QueryLimitSelect.test.tsx     |    3 -
 .../src/SqlLab/components/QueryTable/index.tsx     |   15 +-
 .../src/SqlLab/components/ResultSet/index.tsx      |    7 +-
 .../components/RunQueryActionButton/index.tsx      |    5 +-
 .../src/SqlLab/components/SaveQuery/index.tsx      |    1 -
 .../SqlLab/components/ShareSqlLabQuery/index.tsx   |    4 +-
 .../src/SqlLab/components/SouthPane/index.tsx      |    4 +-
 .../src/SqlLab/components/SqlEditor/index.jsx      |  122 +-
 .../SqlEditorLeftBar/SqlEditorLeftBar.test.jsx     |   82 +-
 .../SqlLab/components/SqlEditorLeftBar/index.tsx   |   54 +-
 .../SqlLab/components/TabbedSqlEditors/index.jsx   |    4 +-
 .../src/SqlLab/components/TableElement/index.tsx   |    3 +-
 superset-frontend/src/SqlLab/constants.ts          |    1 +
 superset-frontend/src/SqlLab/fixtures.ts           |    7 -
 .../hooks/useQueryEditor/useQueryEditor.test.ts    |    9 +-
 .../src/SqlLab/reducers/getInitialState.js         |   30 +-
 .../src/SqlLab/reducers/getInitialState.test.ts    |   73 +-
 superset-frontend/src/SqlLab/reducers/sqlLab.js    |   14 +-
 superset-frontend/src/SqlLab/types.ts              |    1 -
 .../src/SqlLab/utils/emptyQueryResults.test.js     |   43 +-
 .../SqlLab/utils/reduxStateToLocalStorageHelper.js |   21 +-
 .../src/assets/images/icons/filter.svg             |    5 +-
 .../AlteredSliceTag/AlteredSliceTag.test.jsx       |    2 -
 superset-frontend/src/components/Chart/Chart.jsx   |   36 +-
 .../src/components/Chart/ChartContextMenu.tsx      |  151 +-
 .../src/components/Chart/ChartRenderer.jsx         |    3 +-
 .../DisabledMenuItemTooltip.tsx}                   |   45 +-
 .../components/Chart/DrillBy/DrillByChart.test.tsx |   90 +
 .../src/components/Chart/DrillBy/DrillByChart.tsx  |   94 +
 .../Chart/DrillBy/DrillByMenuItems.test.tsx        |  186 +
 .../components/Chart/DrillBy/DrillByMenuItems.tsx  |  258 +
 .../components/Chart/DrillBy/DrillByModal.test.tsx |  107 +
 .../src/components/Chart/DrillBy/DrillByModal.tsx  |  130 +
 .../Chart/DrillDetail/DrillDetailMenuItems.tsx     |   76 +-
 .../Chart/DrillDetail/DrillDetailPane.test.tsx     |   16 +-
 .../Chart/DrillDetail/DrillDetailPane.tsx          |  108 +-
 .../src/components/Chart/DrillDetail/types.ts      |   19 -
 .../components/Chart/MenuItemWithTruncation.tsx    |   59 +
 .../src/components/Chart/chartAction.js            |    4 +-
 .../src/components/Chart/chartReducer.ts           |    4 +-
 .../components/Chart/{DrillDetail => }/types.ts    |    8 -
 .../src/components/Chart/utils.test.ts             |    3 +
 superset-frontend/src/components/Chart/utils.ts    |   38 +-
 .../DatabaseSelector/DatabaseSelector.test.tsx     |  283 +-
 .../src/components/DatabaseSelector/index.tsx      |   89 +-
 .../src/components/Datasource/DatasourceEditor.jsx |   12 +-
 .../Datasource/DatasourceEditor.test.jsx           |   13 -
 .../src/components/Datasource/DatasourceModal.tsx  |    8 +-
 .../DeprecatedSelect/DeprecatedSelect.tsx          |    4 +-
 .../src/components/DropdownContainer/index.tsx     |    3 +-
 .../src/components/DynamicPlugins/index.tsx        |    3 +-
 .../src/components/EmptyState/index.tsx            |   24 +-
 .../ErrorBoundary/ErrorBoundary.test.tsx           |    2 -
 .../src/components/FaveStar/FaveStar.test.tsx      |    4 +-
 .../src/components/FaveStar/index.tsx              |   11 +-
 .../src/components/FlashProvider/index.tsx         |    2 +-
 .../Form/LabeledErrorBoundInput.test.jsx           |    1 -
 .../components/ImportModal/ImportModal.test.tsx    |   47 +
 .../src/components/ImportModal/index.tsx           |  188 +-
 .../src/components/ListView/CrossLinks.tsx         |    3 +-
 .../src/components/ListView/ListView.test.jsx      |    6 -
 superset-frontend/src/components/ListView/types.ts |    3 +
 superset-frontend/src/components/ListView/utils.ts |    2 +-
 .../src/components/MessageToasts/Toast.test.jsx    |    2 -
 .../PageHeaderWithActions.test.tsx                 |    2 -
 .../HeaderReportDropdown/index.test.tsx            |    6 -
 .../ReportModal/HeaderReportDropdown/index.tsx     |    2 +-
 .../components/ReportModal/ReportModal.test.tsx    |    6 -
 .../src/components/Select/AsyncSelect.tsx          |    4 +-
 .../src/components/Select/CustomTag.tsx            |    3 +-
 .../src/components/Select/Select.stories.tsx       |    2 +-
 .../src/components/Select/Select.test.tsx          |   59 +-
 superset-frontend/src/components/Select/Select.tsx |  100 +-
 superset-frontend/src/components/Select/types.ts   |    5 +
 superset-frontend/src/components/Select/utils.tsx  |   18 +
 .../src/components/Table/Table.stories.tsx         |    6 +-
 .../src/components/Table/VirtualTable.tsx          |   25 +-
 .../Table/cell-renderers/NullCell/index.tsx        |    8 +-
 superset-frontend/src/components/Table/index.tsx   |  126 +-
 .../TableSelector/TableSelector.test.tsx           |  103 +-
 .../src/components/TableSelector/index.tsx         |   42 +-
 .../src/components/TableView/TableView.test.tsx    |    2 -
 .../utils.test.ts => components/Tags/Tag.test.tsx} |   27 +-
 superset-frontend/src/components/Tags/Tag.tsx      |   86 +
 .../Tags/TagsList.stories.tsx}                     |   54 +-
 .../src/components/Tags/TagsList.test.tsx          |   78 +
 superset-frontend/src/components/Tags/TagsList.tsx |  112 +
 .../index.ts => components/Tags/index.tsx}         |    3 +-
 superset-frontend/src/components/Tags/utils.tsx    |   93 +
 .../src/components/TruncatedList/index.tsx         |  159 +
 superset-frontend/src/constants.ts                 |    8 -
 .../src/dashboard/actions/dashboardState.js        |   50 +-
 superset-frontend/src/dashboard/actions/hydrate.js |  132 +-
 .../src/dashboard/actions/sliceEntities.js         |   43 +-
 .../src/dashboard/actions/sliceEntities.test.js    |    4 +-
 .../CrossFilterScopingForm.test.tsx                |   60 -
 .../CrossFilterScopingForm/index.tsx               |   57 -
 .../CrossFilterScopingModal.tsx                    |  112 -
 .../DashboardBuilder/DashboardBuilder.test.tsx     |    7 +-
 .../DashboardBuilder/DashboardBuilder.tsx          |   40 +-
 .../DashboardBuilder/DashboardContainer.tsx        |    2 +-
 .../dashboard/components/DashboardBuilder/state.ts |   19 +-
 .../DetailsPanel/DetailsPanel.test.tsx             |   82 +-
 .../components/FiltersBadge/DetailsPanel/index.tsx |  213 +-
 .../FilterIndicator/FilterIndicator.test.tsx       |    2 +-
 .../FiltersBadge/FilterIndicator/index.tsx         |   51 +-
 .../components/FiltersBadge/FiltersBadge.test.tsx  |   79 +-
 .../dashboard/components/FiltersBadge/Styles.tsx   |  147 +-
 .../dashboard/components/FiltersBadge/index.tsx    |  137 +-
 .../HeaderActionsDropdown.test.tsx                 |   70 +-
 .../Header/HeaderActionsDropdown/index.jsx         |   17 +-
 .../src/dashboard/components/Header/index.jsx      |   37 +-
 .../PropertiesModal/PropertiesModal.test.tsx       |   16 +-
 .../dashboard/components/PropertiesModal/index.tsx |  127 +-
 .../components/RefreshIntervalModal.test.tsx       |    1 -
 .../src/dashboard/components/SliceAdder.jsx        |   48 +-
 .../src/dashboard/components/SliceHeader/index.tsx |   42 +-
 .../SliceHeaderControls.test.tsx                   |    2 +-
 .../components/SliceHeaderControls/index.tsx       |   41 +-
 .../components/dnd/dragDroppableConfig.js          |    2 +-
 .../dashboard/components/gridComponents/Chart.jsx  |   26 +-
 .../components/gridComponents/Markdown.jsx         |    1 +
 .../dashboard/components/gridComponents/Tabs.jsx   |   13 +-
 .../components/gridComponents/Tabs.test.jsx        |    2 +-
 .../FilterBar/CrossFilters/CrossFilter.test.tsx    |   82 +
 .../FilterBar/CrossFilters/CrossFilter.tsx         |  114 +
 .../FilterBar/CrossFilters/CrossFilterTag.test.tsx |   84 +
 .../FilterBar/CrossFilters/CrossFilterTag.tsx      |   99 +
 .../CrossFilters/CrossFilterTitle.test.tsx}        |   54 +-
 .../FilterBar/CrossFilters/CrossFilterTitle.tsx    |   95 +
 .../FilterBar/CrossFilters/Vertical.tsx            |   49 +
 .../CrossFilters/VerticalCollapse.test.tsx         |  107 +
 .../FilterBar/CrossFilters/VerticalCollapse.tsx    |  102 +
 .../FilterBar/CrossFilters/selectors.ts            |   60 +
 .../FilterBar/CrossFilters/styles.ts}              |   12 +-
 .../nativeFilters/FilterBar/FilterBar.test.tsx     |    3 +-
 .../FilterBarSettings/FilterBarSettings.test.tsx   |    1 -
 .../FilterBar/FilterBarSettings/index.tsx          |    2 +-
 .../FilterBar/FilterControls/FilterControl.tsx     |    9 +-
 .../FilterBar/FilterControls/FilterControls.tsx    |  143 +-
 .../FilterBar/FilterControls/FilterDivider.tsx     |    8 +-
 .../FilterBar/FilterControls/FilterValue.tsx       |   58 +-
 .../FilterBar/FiltersDropdownContent/index.tsx     |   30 +-
 .../FiltersOutOfScopeCollapsible/index.tsx         |   13 +-
 .../nativeFilters/FilterBar/Horizontal.tsx         |   40 +-
 .../nativeFilters/FilterBar/Vertical.tsx           |  193 +-
 .../components/nativeFilters/FilterBar/index.tsx   |   70 +-
 .../components/nativeFilters/FilterBar/state.ts    |   29 +-
 .../components/nativeFilters/FilterBar/types.ts    |    9 +-
 .../FilterBar/useFilterControlFactory.tsx          |    9 +-
 .../nativeFilters/FilterBar/useFilterOutlined.ts}  |   31 +-
 .../components/nativeFilters/FilterBar/utils.ts    |   18 +
 .../nativeFilters/FilterCard/DependenciesRow.tsx   |    7 +-
 .../nativeFilters/FilterCard/FilterCard.test.tsx   |    6 +-
 .../nativeFilters/FilterCard/NameRow.tsx           |   21 +-
 .../nativeFilters/FilterCard/ScopeRow.tsx          |    3 +-
 .../FiltersConfigModal/FilterConfigurePane.tsx     |    3 +-
 .../FiltersConfigForm/ColumnSelect.test.tsx        |    6 +-
 .../FiltersConfigForm/ColumnSelect.tsx             |   28 +-
 .../FiltersConfigForm/DatasetSelect.tsx            |   12 +-
 .../FiltersConfigForm/DefaultValue.tsx             |   13 +-
 .../FiltersConfigForm/DependencyList.tsx           |   15 +-
 .../FilterScope/FilterScope.test.tsx               |    2 +-
 .../FiltersConfigForm/FilterScope/FilterScope.tsx  |   27 +-
 .../FiltersConfigForm/FiltersConfigForm.tsx        |  197 +-
 .../FiltersConfigForm/constants.ts}                |   39 +-
 .../FiltersConfigForm/getControlItemsMap.tsx       |    2 +-
 .../FiltersConfigModal/FiltersConfigForm/utils.ts  |   14 +-
 .../FiltersConfigModal/FiltersConfigModal.tsx      |   17 +-
 .../nativeFilters/FiltersConfigModal/state.ts      |    3 +-
 .../{FiltersBadge => nativeFilters}/selectors.ts   |  197 +-
 .../src/dashboard/containers/Chart.jsx             |    1 -
 .../src/dashboard/containers/DashboardHeader.jsx   |    1 -
 .../src/dashboard/containers/DashboardPage.tsx     |  139 +-
 .../src/dashboard/containers/SliceAdder.jsx        |    1 -
 superset-frontend/src/dashboard/styles.ts          |    7 +
 superset-frontend/src/dashboard/types.ts           |    1 -
 .../src/dashboard/util/crossFilters.test.ts        |  207 +
 .../src/dashboard/util/crossFilters.ts             |   64 +-
 .../util/filterboxMigrationHelper.test.ts          |  142 -
 .../src/dashboard/util/filterboxMigrationHelper.ts |  423 -
 .../src/dashboard/util/getSliceHeaderTooltip.tsx   |    2 +-
 .../dashboard/util/updateComponentParentsList.js   |   15 +-
 superset-frontend/src/dataMask/actions.ts          |    9 +-
 .../src/explore/actions/exploreActions.ts          |   21 +-
 .../src/explore/actions/hydrateExplore.ts          |   20 +
 .../src/explore/components/Control.test.tsx        |    2 +-
 .../src/explore/components/Control.tsx             |    8 +-
 .../src/explore/components/ControlHeader.tsx       |   12 +-
 .../components/ControlPanelsContainer.test.tsx     |   39 +
 .../explore/components/ControlPanelsContainer.tsx  |   54 +-
 .../components/DataTablesPane/DataTablesPane.tsx   |    4 +-
 .../DataTablesPane/test/DataTablesPane.test.tsx    |    2 +-
 .../explore/components/DatasourcePanel/index.tsx   |    7 +-
 .../src/explore/components/ExploreChartPanel.jsx   |    9 +-
 .../ExploreViewContainer.test.tsx                  |    4 +-
 .../components/ExploreViewContainer/index.jsx      |   14 +-
 .../explore/components/PropertiesModal/index.tsx   |  130 +-
 .../src/explore/components/SaveModal.tsx           |   73 +-
 .../AnnotationLayerControl/AnnotationLayer.jsx     |   66 +-
 .../AnnotationLayer.test.tsx                       |    8 +-
 .../components/controls/ColorPickerControl.jsx     |    4 +-
 .../controls/ColorSchemeControl/index.tsx          |    2 +-
 .../ConditionalFormattingControl.tsx               |   30 +-
 .../controls/ConditionalFormattingControl/types.ts |    1 +
 .../DatasourceControl/DatasourceControl.test.tsx   |   19 -
 .../controls/DateFilterControl/DateFilterLabel.tsx |    2 +-
 .../components/controls/DateFilterControl/types.ts |    2 +-
 .../DndFilterSelect.test.tsx                       |    5 +-
 .../DndColumnSelectControl/DndFilterSelect.tsx     |   41 +-
 .../DndMetricSelect.test.tsx                       |    8 -
 .../DndColumnSelectControl/DndMetricSelect.tsx     |    3 +-
 .../FilterControl/AdhocFilter/AdhocFilter.test.js  |    6 +-
 .../controls/FilterControl/AdhocFilter/index.js    |   51 +-
 .../AdhocFilterControl/AdhocFilterControl.test.jsx |    6 +-
 .../FilterControl/AdhocFilterControl/index.jsx     |   34 +-
 .../AdhocFilterEditPopover.test.jsx                |    6 +-
 .../FilterControl/AdhocFilterEditPopover/index.jsx |    5 +-
 ...AdhocFilterEditPopoverSimpleTabContent.test.tsx |    6 +-
 .../index.tsx                                      |   17 +-
 .../AdhocFilterEditPopoverSqlTabContent.test.jsx   |    6 +-
 .../AdhocFilterEditPopoverSqlTabContent/index.jsx  |    6 +-
 .../AdhocFilterOption/AdhocFilterOption.test.tsx   |   14 +-
 .../AdhocFilterPopoverTrigger.test.tsx             |    6 +-
 .../controls/FilterControl/adhocFilterType.js      |    2 +-
 .../components/controls/FilterControl}/types.ts    |   12 +-
 .../controls/FilterControl/utils/translateToSQL.ts |   76 +
 .../utils/useGetTimeRangeLabel.test.ts             |    3 +-
 .../FilterControl/utils/useGetTimeRangeLabel.tsx   |    3 +-
 .../controls/MetricControl/AdhocMetric.js          |    4 -
 .../controls/MetricControl/AdhocMetric.test.js     |    6 -
 .../AdhocMetricEditPopover.test.tsx                |   22 +-
 .../MetricControl/AdhocMetricEditPopover/index.jsx |   40 +-
 .../MetricControl/AdhocMetricPopoverTrigger.tsx    |    6 +
 .../MetricControl/MetricDefinitionValue.jsx        |    2 +-
 .../controls/MetricControl/MetricsControl.jsx      |    9 +-
 .../controls/MetricControl/MetricsControl.test.jsx |    1 -
 .../SelectAsyncControl/SelectAsyncControl.test.tsx |   16 +-
 .../controls/VizTypeControl/FastVizSwitcher.tsx    |   11 +-
 .../components/controls/VizTypeControl/index.tsx   |   24 +-
 .../useExploreAdditionalActionsMenu/index.jsx      |    4 +-
 superset-frontend/src/explore/constants.ts         |   10 -
 .../getFormDataFromDashboardContext.test.ts        |   37 +
 .../getFormDataWithDashboardContext.ts             |   38 +-
 .../src/explore/exploreUtils/getHostName.test.ts   |    2 +-
 superset-frontend/src/explore/store.js             |    2 +-
 superset-frontend/src/featureFlags.ts              |    5 +-
 .../metadataBar/DatasetMetadataBar.stories.tsx     |   89 +
 .../metadataBar/useDatasetMetadataBar.test.tsx     |  123 +
 .../datasets/metadataBar/useDatasetMetadataBar.tsx |  130 +
 .../components/Select/SelectFilterPlugin.tsx       |   85 +-
 superset-frontend/src/filters/utils.ts             |    8 +-
 superset-frontend/src/hooks/apiResources/index.ts  |    1 +
 .../src/hooks/apiResources/schemas.test.ts         |  138 +
 .../hooks/apiResources/{tables.ts => schemas.ts}   |   72 +-
 .../src/hooks/apiResources/tables.test.ts          |  186 +-
 superset-frontend/src/hooks/apiResources/tables.ts |   17 +-
 superset-frontend/src/logger/LogUtils.ts           |    5 +
 superset-frontend/src/middleware/asyncEvent.ts     |    3 +-
 .../src/middleware/loggerMiddleware.js             |   12 +-
 .../AlertReportList/AlertReportList.test.jsx}      |    2 +-
 .../AlertReportList/index.tsx}                     |    4 +-
 superset-frontend/src/pages/AllEntities/index.tsx  |   94 +
 .../AnnotationLayerList.test.jsx}                  |    2 +-
 .../AnnotationLayerList/index.tsx}                 |    4 +-
 .../AnnotationList}/AnnotationList.test.jsx        |    2 +-
 .../AnnotationList/index.tsx}                      |    6 +-
 .../ExplorePage.tsx => pages/Chart/index.tsx}      |   14 +-
 .../src/pages/ChartCreation/index.tsx              |   24 +-
 superset-frontend/src/pages/ChartList/index.tsx    |   95 +-
 .../CssTemplateList/CssTemplateList.test.jsx}      |    2 +-
 .../CssTemplateList/index.tsx}                     |    4 +-
 .../Dashboard/index.tsx}                           |    2 +-
 .../DashboardList}/DashboardList.test.jsx          |    2 +-
 .../DashboardList/index.tsx}                       |  113 +-
 .../DatabaseList}/DatabaseList.test.jsx            |   22 +-
 .../DatabaseList/index.tsx}                        |   13 +-
 .../DatasetCreation/DatasetCreation.test.tsx}      |    3 +-
 .../AddDataset => pages/DatasetCreation}/index.tsx |   72 +-
 .../DatasetList/DatasetList.test.tsx}              |    9 +-
 .../DatasetList/index.tsx}                         |   32 +-
 .../ExecutionLogList/ExecutionLogList.test.jsx}    |    2 +-
 .../ExecutionLogList/index.tsx}                    |    2 +-
 .../Welcome.test.tsx => pages/Home/Home.test.tsx}  |    4 +-
 .../welcome/Welcome.tsx => pages/Home/index.tsx}   |  210 +-
 .../QueryHistoryList/QueryHistoryList.test.tsx}    |    2 +-
 .../QueryHistoryList/index.tsx}                    |    2 +-
 .../SavedQueryList}/SavedQueryList.test.jsx        |    2 +-
 .../SavedQueryList/index.tsx}                      |   47 +-
 superset-frontend/src/pages/Tags/index.tsx         |  331 +
 superset-frontend/src/preamble.ts                  |    2 +-
 .../src/profile/components/Favorites.tsx           |   31 +-
 superset-frontend/src/profile/types.ts             |    9 +
 ...rdComponents.ts => setupDashboardComponents.ts} |    0
 superset-frontend/src/tags.ts                      |  186 +
 superset-frontend/src/types/Chart.ts               |   16 +
 .../types.ts => types/TagType.ts}                  |   16 +-
 .../types.ts => types/TaggedObject.ts}             |   11 +-
 .../types.ts => utils/cachedSupersetGet.ts}        |   13 +-
 .../src/utils/getClientErrorObject.ts              |    2 +-
 superset-frontend/src/utils/hostNamesConfig.js     |    7 +-
 superset-frontend/src/utils/simpleFilterToAdhoc.ts |   69 +
 .../src/views/CRUD/alert/AlertReportModal.tsx      |   79 +-
 superset-frontend/src/views/CRUD/alert/types.ts    |    5 +
 .../views/CRUD/allentities/AllEntitiesTable.tsx    |  125 +
 .../views/CRUD/annotation/AnnotationModal.test.jsx |    4 +-
 .../src/views/CRUD/annotation/AnnotationModal.tsx  |    8 +-
 .../ChartList => views/CRUD/chart}/ChartCard.tsx   |    4 +-
 .../src/views/CRUD/dashboard/DashboardCard.tsx     |   55 +-
 .../DatabaseConnectionForm/EncryptedField.tsx      |    4 +-
 .../data/database/DatabaseModal/ExtraOptions.tsx   |    4 +-
 .../data/database/DatabaseModal/SSHTunnelForm.tsx  |  317 +-
 .../database/DatabaseModal/SSHTunnelSwitch.tsx     |   58 +
 .../data/database/DatabaseModal/index.test.tsx     |   72 +-
 .../CRUD/data/database/DatabaseModal/index.tsx     |  447 +-
 .../CRUD/data/database/DatabaseModal/styles.ts     |    2 +-
 .../src/views/CRUD/data/database/types.ts          |    1 +
 .../EditDataset.test.tsx}                          |   37 +-
 .../EditDataset/UsageTab/UsageTab.test.tsx         |  405 +
 .../AddDataset/EditDataset/UsageTab/index.tsx      |  263 +
 .../data/dataset/AddDataset/EditDataset/index.tsx  |   78 +
 .../AddDataset/LeftPanel/LeftPanel.test.tsx        |   18 +-
 .../CRUD/data/dataset/DatasetLayout/index.tsx      |    9 +-
 superset-frontend/src/views/CRUD/data/hooks.ts     |  127 +-
 superset-frontend/src/views/CRUD/hooks.ts          |   70 +-
 superset-frontend/src/views/CRUD/tags/TagCard.tsx  |  123 +
 superset-frontend/src/views/CRUD/types.ts          |    9 +-
 superset-frontend/src/views/CRUD/utils.test.tsx    |  163 +
 superset-frontend/src/views/CRUD/utils.tsx         |   72 +-
 .../src/views/CRUD/welcome/ActivityTable.tsx       |    4 +-
 .../src/views/CRUD/welcome/ChartTable.tsx          |    4 +-
 .../src/views/CRUD/welcome/DashboardTable.tsx      |   36 +-
 .../src/views/CRUD/welcome/EmptyState.tsx          |   18 +-
 .../src/views/CRUD/welcome/SavedQueries.tsx        |    2 +-
 superset-frontend/src/views/components/Menu.tsx    |    9 +-
 .../src/views/components/RightMenu.tsx             |    4 +-
 superset-frontend/src/views/components/types.ts    |    2 +-
 superset-frontend/src/views/menu.tsx               |   14 +-
 superset-frontend/src/views/routes.test.tsx        |    4 +-
 superset-frontend/src/views/routes.tsx             |  117 +-
 .../src/visualizations/TimeTable/SparklineCell.tsx |  298 +-
 .../src/visualizations/TimeTable/TimeTable.jsx     |   20 +-
 .../src/visualizations/TimeTable/transformProps.ts |    2 +
 superset-frontend/webpack.config.js                |    4 +-
 superset-websocket/package-lock.json               |  873 +-
 superset-websocket/package.json                    |   20 +-
 superset/charts/api.py                             |  163 +-
 superset/charts/commands/delete.py                 |    7 +-
 superset/charts/commands/export.py                 |    3 +-
 superset/charts/commands/importers/v1/utils.py     |    9 +-
 superset/charts/commands/update.py                 |    5 +-
 superset/charts/dao.py                             |   30 +
 superset/charts/filters.py                         |   77 +-
 superset/charts/schemas.py                         |   22 +-
 superset/cli/importexport.py                       |   10 +-
 superset/cli/test.py                               |    1 -
 superset/cli/thumbnails.py                         |    9 +-
 superset/cli/update.py                             |    2 +-
 superset/commands/export/assets.py                 |    1 -
 superset/commands/export/models.py                 |    1 -
 superset/commands/importers/v1/__init__.py         |   20 +-
 superset/commands/importers/v1/assets.py           |   17 +-
 superset/commands/importers/v1/examples.py         |   21 +-
 superset/commands/importers/v1/utils.py            |   60 +
 ...uthrized_object.py => not_authorized_object.py} |    0
 superset/common/query_actions.py                   |   26 +-
 superset/common/query_context.py                   |    5 +-
 superset/common/query_context_factory.py           |   96 +-
 superset/common/query_context_processor.py         |   14 +-
 superset/common/query_object.py                    |   34 +-
 superset/common/utils/query_cache_manager.py       |   19 +-
 superset/config.py                                 |   48 +-
 superset/connectors/sqla/models.py                 |  100 +-
 superset/connectors/sqla/utils.py                  |    7 +-
 superset/connectors/sqla/views.py                  |    2 -
 superset/constants.py                              |   10 +
 superset/dao/base.py                               |   20 +-
 superset/dashboards/api.py                         |  173 +-
 superset/dashboards/commands/export.py             |    1 -
 superset/dashboards/commands/importers/v1/utils.py |   17 +-
 superset/dashboards/commands/update.py             |    2 +-
 superset/dashboards/dao.py                         |   69 +-
 superset/dashboards/filter_sets/commands/base.py   |    2 +-
 superset/dashboards/filters.py                     |   35 +-
 superset/dashboards/permalink/commands/create.py   |    4 +-
 superset/dashboards/schemas.py                     |   27 +-
 superset/databases/api.py                          |  105 +-
 superset/databases/commands/create.py              |   11 +-
 superset/databases/commands/export.py              |   11 +-
 superset/databases/commands/importers/v1/utils.py  |   21 +-
 superset/databases/commands/test_connection.py     |    1 -
 superset/databases/schemas.py                      |   85 +-
 .../databases/ssh_tunnel/commands/exceptions.py    |    8 +
 superset/databases/ssh_tunnel/models.py            |   13 +
 superset/datasets/api.py                           |  112 +
 superset/datasets/commands/delete.py               |    7 +-
 superset/datasets/commands/duplicate.py            |    2 +
 superset/datasets/commands/exceptions.py           |    4 +
 superset/datasets/commands/export.py               |   12 +-
 superset/datasets/commands/importers/v0.py         |    2 +-
 superset/datasets/commands/importers/v1/utils.py   |   41 +-
 superset/datasets/dao.py                           |  123 +-
 superset/datasets/schemas.py                       |   11 +
 superset/datasource/dao.py                         |    1 -
 superset/db_engine_specs/aurora.py                 |    2 -
 superset/db_engine_specs/base.py                   |  156 +-
 superset/db_engine_specs/clickhouse.py             |  315 +-
 superset/db_engine_specs/crate.py                  |    1 -
 superset/db_engine_specs/databricks.py             |    1 -
 superset/db_engine_specs/dremio.py                 |    1 -
 superset/db_engine_specs/drill.py                  |   29 +-
 superset/db_engine_specs/elasticsearch.py          |    2 -
 superset/db_engine_specs/gsheets.py                |    1 -
 superset/db_engine_specs/hive.py                   |   90 +-
 superset/db_engine_specs/impala.py                 |    2 +-
 superset/db_engine_specs/kylin.py                  |    4 +-
 superset/db_engine_specs/mysql.py                  |   32 +-
 superset/db_engine_specs/netezza.py                |    1 -
 superset/db_engine_specs/postgres.py               |   92 +
 superset/db_engine_specs/presto.py                 |   49 +-
 superset/db_engine_specs/rockset.py                |    1 -
 superset/db_engine_specs/snowflake.py              |   41 +-
 superset/db_engine_specs/trino.py                  |    1 +
 superset/db_engines/hive.py                        |   67 -
 .../configs/charts/Video_Game_Sales_Filter.yaml    |    2 +-
 .../dashboards/COVID_Vaccine_Dashboard.yaml        |    8 +-
 .../dashboards/FCC_New_Coder_Survey_2018.yaml      |    8 +-
 .../configs/dashboards/Sales_Dashboard.yaml        |    6 +-
 .../configs/dashboards/Video_Game_Sales.yaml       |   10 +-
 .../configs/datasets/examples/FCC_2018_Survey.yaml |    6 +-
 superset/examples/multiformat_time_series.py       |    2 +-
 superset/examples/utils.py                         |    6 +-
 superset/examples/world_bank.py                    |    1 -
 superset/exceptions.py                             |    6 +-
 superset/explore/permalink/api.py                  |    2 +-
 superset/extensions/ssh.py                         |   12 +-
 superset/importexport/api.py                       |   47 +-
 superset/initialization/__init__.py                |   43 +-
 superset/jinja_context.py                          |   12 +-
 superset/migrations/alembic.ini                    |    7 +-
 ...7c195a_rewriting_url_from_shortner_with_new_.py |    2 +-
 .../versions/2017-10-03_14-37_4736ec66ce19_.py     |    9 +-
 ...8c4473c581_allow_multi_schema_metadata_fetch.py |    1 -
 .../versions/2018-03-20_19-47_f231d82b9b26_.py     |    2 -
 ...-07-20_16-08_937d04c16b64_update_datasources.py |    2 -
 .../2019-10-10_13-52_1495eb914ad3_time_range.py    |    1 -
 ...10-42_f9a30386bd74_cleanup_time_grainularity.py |   12 +-
 ...29_09-24_620241d1153f_update_time_grain_sqla.py |    2 -
 ...b56500de1855_add_uuid_column_to_import_mixin.py |    2 +-
 ...27_08-25_31b2a1039d4a_drop_tables_constraint.py |    1 -
 ...3605f370a_fix_schemas_allowed_for_csv_upload.py |    1 -
 ...4fbb_add_type_to_native_filter_configuration.py |    2 +-
 ...cbaac5_change_datatype_of_type_in_basecolumn.py |    1 -
 ...e5f1dacd_rename_to_schemas_allowed_for_file_.py |    1 -
 ...03_5afbb1a5849b_add_embedded_dahshoard_table.py |    2 +-
 ...14-38_a9422eeaae74_new_dataset_models_take_2.py |   10 +-
 ...-46_c0a3ea245b61_remove_show_native_filters.py} |   52 +-
 ...ac08bb5b83_invert_horizontal_bar_chart_order.py |  126 +
 ...7_13-24_b5ea9d343307_bar_chart_stack_options.py |   95 +
 ...af1b_drop_postgres_enum_constrains_for_tags.py} |   35 +-
 superset/models/core.py                            |   76 +-
 superset/models/dashboard.py                       |   34 +-
 superset/models/datasource_access_request.py       |    2 -
 superset/models/helpers.py                         |   23 +-
 superset/models/slice.py                           |   27 +-
 superset/models/sql_lab.py                         |    9 +-
 superset/queries/api.py                            |    2 +-
 superset/queries/saved_queries/api.py              |   61 +-
 superset/queries/saved_queries/commands/export.py  |    1 -
 superset/queries/saved_queries/filters.py          |   12 +-
 superset/reports/commands/base.py                  |    1 -
 superset/reports/commands/exceptions.py            |    7 +-
 superset/reports/commands/execute.py               |   11 +-
 superset/reports/notifications/email.py            |    8 +-
 superset/reports/notifications/slack.py            |    8 +-
 superset/security/manager.py                       |   80 +-
 superset/sql_parse.py                              |    4 +-
 superset/sqllab/api.py                             |  125 +-
 .../{db_engines => sqllab/commands}/__init__.py    |    0
 superset/sqllab/commands/estimate.py               |  106 +
 superset/sqllab/commands/execute.py                |    6 +-
 superset/sqllab/commands/export.py                 |  134 +
 superset/sqllab/commands/results.py                |    3 +-
 superset/sqllab/exceptions.py                      |   12 +-
 superset/sqllab/query_render.py                    |    3 +-
 superset/sqllab/schemas.py                         |    9 +
 superset/sqllab/sql_json_executer.py               |    3 +-
 superset/tags/api.py                               |  386 +
 superset/{db_engines => tags/commands}/__init__.py |    0
 superset/tags/commands/create.py                   |   65 +
 superset/tags/commands/delete.py                   |  115 +
 superset/tags/commands/exceptions.py               |   65 +
 .../__init__.py => tags/commands/utils.py}         |   13 +
 superset/tags/dao.py                               |  260 +
 .../{db_engines/__init__.py => tags/exceptions.py} |   13 +
 superset/tags/models.py                            |   19 +-
 superset/tags/schemas.py                           |   59 +
 superset/tasks/async_queries.py                    |   12 +-
 superset/tasks/thumbnails.py                       |    5 +-
 .../form_view/database_schemas_selector.html       |    5 +-
 superset/templates/tail_js_custom_extra.html       |    2 +-
 superset/translations/en/LC_MESSAGES/messages.json |    4 +-
 superset/translations/en/LC_MESSAGES/messages.po   |   16 +-
 superset/translations/messages.pot                 |   14 +-
 superset/translations/ru/LC_MESSAGES/messages.json |  212 +-
 superset/translations/ru/LC_MESSAGES/messages.po   | 3204 ++++---
 superset/translations/utils.py                     |    2 +-
 superset/utils/celery.py                           |    1 +
 superset/utils/core.py                             |   17 +-
 .../utils/dashboard_filter_scopes_converter.py     |    2 +-
 superset/utils/date_parser.py                      |    8 +-
 superset/utils/decorators.py                       |   12 +-
 superset/{views/chart => utils}/filters.py         |   33 +-
 superset/utils/machine_auth.py                     |    2 +-
 superset/utils/memoized.py                         |   81 -
 .../utils/pandas_postprocessing/contribution.py    |    2 +-
 superset/utils/pandas_postprocessing/pivot.py      |    9 +-
 superset/utils/pandas_postprocessing/prophet.py    |    2 +-
 superset/utils/screenshots.py                      |   20 +-
 superset/utils/urls.py                             |    4 +-
 superset/utils/webdriver.py                        |   78 +-
 superset/views/all_entities.py                     |   71 +
 superset/views/base.py                             |   47 +-
 superset/views/base_api.py                         |   32 +-
 superset/views/base_schemas.py                     |    2 +-
 superset/views/chart/filters.py                    |    9 +-
 superset/views/chart/mixin.py                      |    1 -
 superset/views/core.py                             |  108 +-
 superset/views/dashboard/mixin.py                  |    1 -
 superset/views/dashboard/views.py                  |    8 -
 superset/views/database/views.py                   |   24 +-
 superset/views/tags.py                             |  248 +-
 superset/viz.py                                    |   60 +-
 tests/common/logger_utils.py                       |    1 -
 .../annotation_layers/fixtures.py                  |    2 +-
 tests/integration_tests/base_tests.py              |    8 +
 tests/integration_tests/charts/api_tests.py        |  171 +-
 tests/integration_tests/charts/commands_tests.py   |   64 +-
 tests/integration_tests/charts/data/api_tests.py   |   45 +-
 tests/integration_tests/cli_tests.py               |   23 +-
 tests/integration_tests/conftest.py                |    2 +-
 tests/integration_tests/core_tests.py              |    2 +-
 tests/integration_tests/csv_upload_tests.py        |    7 +-
 tests/integration_tests/dashboards/api_tests.py    |  166 +
 .../integration_tests/dashboards/commands_tests.py |   12 +-
 .../dashboards/permalink/api_tests.py              |    3 +-
 tests/integration_tests/databases/api_tests.py     |  495 +-
 .../integration_tests/databases/commands_tests.py  |  309 +-
 tests/integration_tests/datasets/api_tests.py      |  127 +-
 tests/integration_tests/datasets/commands_tests.py |   68 +-
 .../db_engine_specs/base_engine_spec_tests.py      |    5 +-
 .../db_engine_specs/bigquery_tests.py              |    1 +
 .../db_engine_specs/postgres_tests.py              |   18 +
 tests/integration_tests/event_logger_tests.py      |    6 +-
 .../integration_tests/fixtures/energy_dashboard.py |    1 -
 tests/integration_tests/fixtures/importexport.py   |  107 +
 tests/integration_tests/fixtures/users.py          |   48 +
 tests/integration_tests/queries/api_tests.py       |    6 +-
 .../queries/saved_queries/api_tests.py             |    2 +-
 .../queries/saved_queries/commands_tests.py        |   10 +-
 tests/integration_tests/reports/alert_tests.py     |    2 -
 tests/integration_tests/reports/api_tests.py       |    4 -
 tests/integration_tests/reports/commands_tests.py  |   49 +-
 tests/integration_tests/reports/scheduler_tests.py |    2 -
 .../security/migrate_roles_tests.py                |    8 +-
 .../security/row_level_security_tests.py           |    1 -
 tests/integration_tests/security_tests.py          |   24 +-
 tests/integration_tests/sql_lab/api_tests.py       |  106 +-
 tests/integration_tests/sql_lab/commands_tests.py  |  315 +-
 tests/integration_tests/sqllab_tests.py            |   38 +
 tests/integration_tests/tagging_tests.py           |   12 -
 .../integration_tests/tags}/__init__.py            |    0
 tests/integration_tests/tags/api_tests.py          |  377 +
 tests/integration_tests/tags/commands_tests.py     |  175 +
 tests/integration_tests/tags/dao_tests.py          |  300 +
 .../integration_tests/tasks/async_queries_tests.py |    1 +
 tests/integration_tests/thumbnails_tests.py        |    1 -
 tests/integration_tests/utils/decorators_tests.py  |   61 -
 tests/integration_tests/utils_tests.py             |    1 +
 .../charts/commands/importers/v1/import_test.py    |   45 +-
 tests/unit_tests/charts/dao/dao_tests.py           |   35 +-
 .../commands/importers/v1/assets_test.py           |   16 +-
 .../commands/importers/v1/import_test.py           |   46 +-
 tests/unit_tests/dashboards/dao_tests.py           |   79 +
 tests/unit_tests/databases/api_test.py             |    4 +
 .../databases/commands/importers/v1/import_test.py |   44 +-
 .../datasets/commands/importers/v1/import_test.py  |  162 +-
 tests/unit_tests/datasets/dao/dao_tests.py         |   30 +
 .../unit_tests/db_engine_specs/test_clickhouse.py  |  162 +-
 tests/unit_tests/db_engine_specs/test_drill.py     |   16 +
 tests/unit_tests/db_engine_specs/test_hive.py      |   15 +
 tests/unit_tests/db_engine_specs/test_mssql.py     |    4 +-
 tests/unit_tests/db_engine_specs/test_mysql.py     |   34 +
 tests/unit_tests/db_engine_specs/test_postgres.py  |   66 +
 tests/unit_tests/db_engine_specs/test_presto.py    |   24 +
 tests/unit_tests/db_engine_specs/test_snowflake.py |   32 +
 tests/unit_tests/explore/utils_test.py             |   19 +-
 tests/unit_tests/fixtures/assets_configs.py        |    2 -
 tests/unit_tests/importexport/api_test.py          |    8 +-
 tests/unit_tests/jinja_context_test.py             |   41 +-
 tests/unit_tests/memoized_tests.py                 |   96 -
 tests/unit_tests/models/core_test.py               |    4 +-
 .../pandas_postprocessing/test_flatten.py          |    8 +-
 .../unit_tests/queries}/__init__.py                |    0
 tests/unit_tests/queries/query_object_test.py      |  345 +
 .../unit_tests/security}/__init__.py               |    0
 tests/unit_tests/security/manager_test.py          |   90 +
 tests/unit_tests/utils/test_decorators.py          |   87 +
 tests/unit_tests/utils/urls_tests.py               |    5 +
 yarn.lock                                          |    2 -
 864 files changed, 43707 insertions(+), 14529 deletions(-)

diff --cc superset/dashboards/dao.py
index 2f217adf88,a51ddbb92c..89fca4619a
--- a/superset/dashboards/dao.py
+++ b/superset/dashboards/dao.py
@@@ -294,37 -308,31 +302,66 @@@ class DashboardDAO(BaseDAO)
              .all()
          ]
  
 +    @classmethod
 +    def copy_dashboard(
 +        cls, original_dash: Dashboard, data: Dict[str, Any]
 +    ) -> Dashboard:
 +        dash = Dashboard()
 +        dash.owners = [g.user] if g.user else []
 +        dash.dashboard_title = data["dashboard_title"]
 +        dash.css = data.get("css")
 +
 +        metadata = json.loads(data["json_metadata"])
 +        old_to_new_slice_ids: Dict[int, int] = {}
 +        if data.get("duplicate_slices"):
 +            # Duplicating slices as well, mapping old ids to new ones
 +            for slc in original_dash.slices:
 +                new_slice = slc.clone()
 +                new_slice.owners = [g.user] if g.user else []
 +                db.session.add(new_slice)
 +                db.session.flush()
 +                new_slice.dashboards.append(dash)
 +                old_to_new_slice_ids[slc.id] = new_slice.id
 +
 +            # update chartId of layout entities
 +            for value in metadata["positions"].values():
 +                if isinstance(value, dict) and value.get("meta", {}).get("chartId"):
 +                    old_id = value["meta"]["chartId"]
 +                    new_id = old_to_new_slice_ids.get(old_id)
 +                    value["meta"]["chartId"] = new_id
 +        else:
 +            dash.slices = original_dash.slices
 +
 +        cls.set_dash_metadata(dash, metadata, old_to_new_slice_ids)
 +        db.session.add(dash)
 +        db.session.commit()
 +        return dash
++
+     @staticmethod
+     def add_favorite(dashboard: Dashboard) -> None:
+         ids = DashboardDAO.favorited_ids([dashboard])
+         if dashboard.id not in ids:
+             db.session.add(
+                 FavStar(
+                     class_name=FavStarClassName.DASHBOARD,
+                     obj_id=dashboard.id,
+                     user_id=get_user_id(),
+                     dttm=datetime.now(),
+                 )
+             )
+             db.session.commit()
+ 
+     @staticmethod
+     def remove_favorite(dashboard: Dashboard) -> None:
+         fav = (
+             db.session.query(FavStar)
+             .filter(
+                 FavStar.class_name == FavStarClassName.DASHBOARD,
+                 FavStar.obj_id == dashboard.id,
+                 FavStar.user_id == get_user_id(),
+             )
+             .one_or_none()
+         )
+         if fav:
+             db.session.delete(fav)
+             db.session.commit()