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()