This is an automated email from the ASF dual-hosted git repository. enzomartellucci pushed a change to branch enxdev/feat/fab-list-users-migration in repository https://gitbox.apache.org/repos/asf/superset.git
from 72460f6121 refactor(modal) add icons for edit and add modal add 103fedaf92 fix: use role_model from security manager (#32873) add e0ed652ed8 fix(backend/async_events): allow user to configure username for Redis authentication in GLOBAL_ASYNC_QUERIES_CACHE_BACKEND (#32372) add ab22bb1878 fix(Jinja): Emit time grain to table charts even if they don't have a temporal column (#32871) add 6e1d1ad18b refactor(Icons): Add typing support and improve structure (#32880) add c2afae51cb chore(🦾): bump python grpcio 1.68.0 -> 1.71.0 (#32901) add f2c0686346 feat: Add Aggregation Method for Big Number with Trendline (#32767) add 174750c9dd refactor(jinja macro): Update current_user_roles() macro to fetch roles from existing get_user_roles() method (#32888) add a4a092794a feat(chart controls): Add "%d.%m.%Y" time format option (#32814) add 8f35a3ec8c feat(plugins): Make comparison values on BigNumberPeriodOverPeriod toggleable (#28605) add b92909d621 feat: Enable passing a permalink to cache_dashboard_screenshot endpoint (#32900) add 56bf17f879 fix(sqllab): Invalid display of table column keys (#32763) add 662f0fa8f4 chore(reports): add task for slack channels warm-up (#32585) add 6e02d19b0d fix: make packages PEP 625 compliant (#32866) add be4bc3dec5 chore(deps-dev): bump ts-jest from 29.2.5 to 29.3.1 in /superset-websocket (#32924) add a8a6254ea2 chore(deps-dev): bump @typescript-eslint/parser from 8.19.0 to 8.29.0 in /superset-websocket (#32925) add 8b0bda3bad chore(deps): update @types/react-redux requirement from ^7.1.10 to ^7.1.34 in /superset-frontend/plugins/plugin-chart-echarts (#32927) add 26743dfcee fix: Clicking in the body of a Markdown component does not put it into edit mode (#32384) add e1c1de1b94 chore(deps-dev): bump css-minimizer-webpack-plugin from 7.0.0 to 7.0.2 in /superset-frontend (#32937) add 2bc33beec4 chore(deps-dev): bump @babel/compat-data from 7.26.5 to 7.26.8 in /superset-frontend (#32939) add 00933a27af chore(deps): bump swagger-ui-react from 5.20.0 to 5.20.2 in /docs (#32950) add 8eeed49547 chore(deps): bump antd from 5.24.2 to 5.24.5 in /docs (#32951) add f5d3627468 chore(deps-dev): bump eslint-config-prettier from 10.0.2 to 10.1.1 in /docs (#32952) add a36e636a58 fix(pivot-table): Revert "fix(Pivot Table): Fix column width to respect currency config (#31414)" (#32968) add c83eda9551 feat: add latest partition support for BigQuery (#30760) add 4f0020d0df feat(List Roles): Migrate FAB view to React (#32432) add f5d64176f6 fix: fixed Add Metrics to Tree Chart (#29158) (#30679) add bc0bf94680 chore: bump marshmallow-sqlalchemy to 1.4.0 (#32922) add 86b795cd36 feat(embedding-sdk): emit data-mask events through embedded sdk to iframe parent (#31331) add 24b1666273 fix: Bar Chart (legacy) migration to keep labels layout (#32965) add 63c8bbf3eb fix(frontend): add missing antd-5 icon to import (#32990) add bcb43327b1 fix: `show_filters` URL parameter is not working (#29422) add 4041150660 feat: Add getDataMask function to embedded SDK (#32997) add db959a6463 chore(Databricks): Display older Databricks driver as legacy (#33001) add 629b137bb0 fix(dashboard): chart fullscreen issue when filter pane is collapsed (#28428) add b6df88a134 fix: fix bug where dashboard did not enter fullscreen mode. (#32839) add c131205ff1 docs: Update documentation about publishing a dashboard (#32999) add e1383d3821 refactor(IconButton): Refactor IconButton to use Ant Design 5 Card (#32890) add fd947a097d feat(tags): Export and Import Functionality for Superset Dashboards and Charts (#30833) add 9b15e04bc4 fix(log): Missing failed query log on async queries (#33024) add 15969fdf94 docs: add WinWin Network(马上赢) to users list (#33018) add 5a8eab3b25 chore(deps): bump estree-util-value-to-estree from 3.1.1 to 3.3.3 in /docs (#33028) add 6b7394e789 fix(export): charts csv export in dashboards (#31720) add 3a57857707 chore(helm): bump appVersion to 4.1.2 (#33061) add 9280b4d2a9 docs: clarify docker-compose-image-tag instructions (#33045) add ed0cd5e7b0 fix: improve error type on parse error (#33048) add deb6aedddb feat: add a title prop to the dashboard link in CRUD LIST view (#33046) add c1159c53e3 fix: Adds missing __init__ file to commands/logs (#33059) add 31ac3898ad fix(list roles): dont send invalid querystrings (#33060) add 09b92e7d08 feat: Allow superset to be deployed under a prefixed URL (#30134) add 8242692541 chore(deps-dev): bump lerna from 8.1.9 to 8.2.1 in /superset-frontend (#32941) add 44bd200885 fix(docs): Update quickstart.mdx to reflect latest version tag (#33063) add 164a07e2be fix(docker): fallback to pip if uv is not available (#33087) add d75ff9e784 feat(charts): add subtitle option and metric customization controls (#32975) add 37194a41ec chore: Added Formbricks to INTHEWILD.md (#33074) add 5304bed4ed chore: Update INTHEWILD.md (#33079) add d88cba92c0 feat: optimize catalog permission sync (#33000) add 4f97b739b1 fix: Broken Python tests on master after merging prefix branch (#33095) add 014b39290b feat(Native Filters): Configure creatable filter behavior (#33096) add 7ab8534ef6 feat: dataset folders (backend) (#32520) add bcd136cee1 feat: catalogs for DuckDB (#28751) add ac4df8d06b fix: CI file change detector to handle large PRs (#33092) add 5656d69c04 fix(dashboard): Generate screenshot via celery (#32193) add 347c174099 fix(thumbnails): ensure consistent cache_key (#33109) add 05faf2f352 fix: resolve recent merge collisio (#33110) add 3c1fc0b722 fix: Broken menu links to datasets and sql lab (#33114) add 05a35cbd8e Merge branch master into enxdev/feat/fab-list-users-migration add 62967f8e94 chore: implement new filter, enhance errors, fix proxy, and clean up UI - feat(NumericalRangeFilter): add NumericalRangeFilter component - feat(ErrorMessage): improve error message handling - fix(proxy): fix minor proxy issue - refactor(Users): remove FAB view No new revisions were added by this update. Summary of changes: .github/workflows/bashlib.sh | 8 +- .github/workflows/superset-e2e.yml | 3 +- .github/workflows/superset-python-unittest.yml | 2 +- .gitignore | 1 + Dockerfile | 2 +- README.md | 14 +- RELEASING/Dockerfile.from_local_tarball | 26 +- RELEASING/Dockerfile.from_svn_tarball | 24 +- RELEASING/README.md | 12 +- RELEASING/email_templates/announce.j2 | 2 +- RELEASING/make_tarball.sh | 2 +- RELEASING/make_tarball_entrypoint.sh | 2 +- RELEASING/set_release_env.sh | 4 +- RELEASING/test_run_tarball.sh | 2 +- RELEASING/validate_this_release.sh | 2 +- RESOURCES/INTHEWILD.md | 3 + UPDATING.md | 1 + docker-compose.yml | 8 +- docker/.env | 2 +- docker/docker-bootstrap.sh | 6 +- .flaskenv => docker/docker-healthcheck.sh | 5 +- docker/nginx/nginx.conf | 41 +- docker/nginx/templates/superset.conf.template | 57 ++ docker/pythonpath_dev/superset_config.py | 7 +- docs/docs/configuration/configuring-superset.mdx | 39 ++ docs/docs/configuration/databases.mdx | 2 +- docs/docs/configuration/networking-settings.mdx | 4 +- docs/docs/contributing/contributing.mdx | 4 +- docs/docs/installation/docker-compose.mdx | 8 + docs/docs/installation/pypi.mdx | 6 +- docs/docs/installation/upgrading-superset.mdx | 2 +- docs/docs/quickstart.mdx | 2 +- .../creating-your-first-dashboard.mdx | 33 +- docs/package.json | 6 +- .../img/tutorial/publish_button_dashboard.png | Bin 0 -> 85940 bytes docs/yarn.lock | 457 +++++++++++----- helm/superset/Chart.yaml | 4 +- helm/superset/README.md | 2 +- pyproject.toml | 5 +- requirements/base.in | 7 +- requirements/base.txt | 3 +- requirements/development.txt | 5 +- scripts/change_detector.py | 14 +- setup.py | 1 + superset-embedded-sdk/src/index.ts | 158 ++++-- .../cypress/applitools/explore.test.ts | 2 +- .../cypress/e2e/chart_list/list.test.ts | 9 +- .../cypress/e2e/dashboard/_skip.url_params.test.ts | 4 +- .../cypress/e2e/dashboard/drilltodetail.test.ts | 4 +- .../e2e/dashboard/horizontalFilterBar.test.ts | 2 +- .../dashboard/nativeFilters.noInitState.test.ts | 2 +- .../e2e/dashboard/shared_dashboard_functions.ts | 1 + .../cypress/e2e/dashboard/tabs.test.ts | 4 +- .../cypress-base/cypress/e2e/dashboard/utils.ts | 28 +- .../cypress/e2e/explore/_skip.AdhocFilters.test.ts | 6 +- .../cypress/e2e/explore/advanced_analytics.test.ts | 4 +- .../cypress/e2e/explore/control.test.ts | 2 +- .../cypress-base/cypress/e2e/explore/utils.ts | 20 +- .../e2e/explore/visualizations/box_plot.test.js | 2 +- .../e2e/explore/visualizations/bubble.test.js | 2 +- .../e2e/explore/visualizations/compare.test.js | 2 +- .../explore/visualizations/download_chart.test.js | 2 +- .../e2e/explore/visualizations/gauge.test.js | 2 +- .../e2e/explore/visualizations/graph.test.ts | 2 +- .../cypress/e2e/explore/visualizations/pie.test.js | 2 +- .../e2e/explore/visualizations/pivot_table.test.js | 2 +- .../e2e/explore/visualizations/sunburst.test.js | 2 +- .../e2e/explore/visualizations/time_table.js | 2 +- .../e2e/explore/visualizations/world_map.test.js | 2 +- .../e2e/sqllab/_skip.sourcePanel.index.test.js | 2 +- .../cypress-base/cypress/e2e/sqllab/query.test.ts | 6 +- .../cypress-base/cypress/utils/vizPlugins.ts | 4 +- superset-frontend/package-lock.json | 366 +++++++++---- superset-frontend/package.json | 6 +- .../{histogramOperator.ts => aggregateOperator.ts} | 48 +- .../src/operators/index.ts | 1 + .../src/shared-controls/customControls.tsx | 26 + .../src/shared-controls/index.ts | 1 + .../src/utils/D3Formatting.ts | 1 + .../test/operators/aggregateOperator.test.ts | 121 +++++ .../test/operators/timeCompareOperator.test.ts | 2 +- .../src/connection/SupersetClientClass.ts | 34 +- .../superset-ui-core/src/connection/constants.ts | 2 +- .../superset-ui-core/src/connection/types.ts | 2 +- .../src/query/types/PostProcessing.ts | 4 +- .../test/connection/SupersetClientClass.test.ts | 12 +- .../test/query/api/v1/makeApi.test.ts | 4 +- .../test/query/types/PostProcessing.test.ts | 2 +- .../test/time-comparison/getComparisonInfo.test.ts | 24 +- .../plugins/plugin-chart-echarts/package.json | 2 +- .../BigNumber/BigNumberPeriodOverPeriod/PopKPI.tsx | 163 ++++-- .../BigNumberPeriodOverPeriod/controlPanel.ts | 51 +- .../BigNumberPeriodOverPeriod/transformProps.ts | 6 + .../BigNumber/BigNumberPeriodOverPeriod/types.ts | 9 + .../src/BigNumber/BigNumberTotal/controlPanel.ts | 29 +- .../src/BigNumber/BigNumberTotal/transformProps.ts | 12 +- .../src/BigNumber/BigNumberViz.tsx | 46 +- .../BigNumber/BigNumberWithTrendline/buildQuery.ts | 15 + .../BigNumberWithTrendline/controlPanel.tsx | 11 +- .../BigNumberWithTrendline/transformProps.ts | 86 ++- .../src/BigNumber/sharedControls.ts | 43 ++ .../plugin-chart-echarts/src/BigNumber/types.ts | 2 + .../plugin-chart-echarts/src/Tree/controlPanel.tsx | 6 +- .../test/BigNumber/transformProps.test.ts | 185 +++++++ .../src/PivotTableChart.tsx | 1 - .../plugins/plugin-chart-table/src/TableChart.tsx | 37 +- .../plugins/plugin-chart-table/src/buildQuery.ts | 5 - .../plugin-chart-table/src/controlPanel.tsx | 23 +- .../plugins/plugin-chart-table/src/types.ts | 4 + .../plugin-chart-table/test/TableChart.test.tsx | 603 +++++++++++---------- .../plugin-chart-table/test/buildQuery.test.ts | 9 - .../fixtures/mockDatabases.ts} | 49 +- .../spec/fixtures/mockNativeFilters.ts | 3 + .../spec/helpers/setupSupersetClient.js | 2 +- superset-frontend/spec/helpers/shim.tsx | 2 +- superset-frontend/src/SqlLab/actions/sqlLab.js | 30 +- .../src/SqlLab/actions/sqlLab.test.js | 10 +- .../QueryAutoRefresh/QueryAutoRefresh.test.tsx | 69 ++- .../SqlLab/components/QueryAutoRefresh/index.tsx | 30 +- .../SqlLab/components/QueryLimitSelect/index.tsx | 2 +- .../src/SqlLab/components/QueryTable/index.tsx | 2 +- .../src/SqlLab/components/ResultSet/index.tsx | 2 +- .../components/RunQueryActionButton/index.tsx | 2 +- .../components/SaveDatasetActionButton/index.tsx | 2 +- .../SqlLab/components/ShareSqlLabQuery/index.tsx | 2 +- .../src/SqlLab/components/ShowSQL/index.tsx | 2 +- .../src/SqlLab/components/SouthPane/index.tsx | 2 +- .../src/SqlLab/components/SqlEditor/index.tsx | 2 +- .../SqlLab/components/SqlEditorLeftBar/index.tsx | 2 +- .../SqlLab/components/SqlEditorTabHeader/index.tsx | 6 +- .../SqlLab/components/TabbedSqlEditors/index.tsx | 7 +- .../src/SqlLab/components/TableElement/index.tsx | 7 +- .../src/SqlLab/components/TablePreview/index.tsx | 2 +- ...er-chart-tile.svg => big_number_chart_tile.svg} | Bin .../icons/{checkbox-half.svg => checkbox_half.svg} | Bin .../icons/{checkbox-off.svg => checkbox_off.svg} | Bin .../icons/{checkbox-on.svg => checkbox_on.svg} | Bin .../src/components/AlteredSliceTag/index.tsx | 2 +- .../src/components/CertifiedBadge/index.tsx | 2 +- .../components/Chart/DisabledMenuItemTooltip.tsx | 2 +- .../components/Chart/DrillBy/DrillByMenuItems.tsx | 2 +- .../Chart/DrillDetail/DrillDetailTableControls.tsx | 2 +- .../src/components/Chart/chartAction.js | 3 +- .../CopyToClipboard/CopyToClipboard.stories.tsx | 2 +- .../src/components/Datasource/CollectionTable.tsx | 2 +- .../src/components/Datasource/DatasourceEditor.jsx | 2 +- .../src/components/Datasource/DatasourceModal.tsx | 2 +- .../src/components/Dropdown/index.tsx | 2 +- .../DropdownContainer/DropdownContainer.test.tsx | 2 +- .../src/components/DropdownContainer/index.tsx | 2 +- .../ErrorMessage/BasicErrorAlert.test.tsx | 2 +- .../components/ErrorMessage/BasicErrorAlert.tsx | 2 +- .../ErrorMessage/DatabaseErrorMessage.test.tsx | 2 +- .../DatasetNotFoundErrorMessage.test.tsx | 2 +- .../src/components/ErrorMessage/ErrorAlert.tsx | 2 +- .../ErrorMessageWithStackTrace.test.tsx | 2 +- .../FrontendNetworkErrorMessage.test.tsx | 2 +- .../src/components/ErrorMessage/IssueCode.tsx | 2 +- .../ErrorMessage/ParameterErrorMessage.test.tsx | 2 +- .../ErrorMessage/TimeoutErrorMessage.test.tsx | 2 +- .../src/components/FacePile/index.tsx | 3 +- .../src/components/FaveStar/index.tsx | 2 +- .../src/components/Form/LabeledErrorBoundInput.tsx | 2 +- .../src/components/GridTable/Header.test.tsx | 8 +- .../src/components/GridTable/Header.tsx | 2 +- .../src/components/GridTable/HeaderMenu.test.tsx | 11 - .../src/components/GridTable/HeaderMenu.tsx | 2 +- .../components/IconButton/IconButton.stories.tsx | 55 +- .../src/components/IconButton/IconButton.test.jsx | 37 -- .../src/components/IconButton/IconButton.test.tsx | 90 +++ .../src/components/IconButton/index.tsx | 191 +++---- .../components/IconTooltip/IconTooltip.stories.tsx | 2 +- .../src/components/Icons/AntdEnhanced.tsx | 40 +- .../components/Icons/{Icon.tsx => AsyncIcon.tsx} | 4 +- .../src/components/Icons/Icons.stories.tsx | 8 +- superset-frontend/src/components/Icons/index.tsx | 89 +-- .../src/components/IndeterminateCheckbox/index.tsx | 2 +- .../src/components/InfoTooltip/index.tsx | 2 +- .../src/components/JsonModal/JsonModal.test.tsx | 15 + .../src/components/JsonModal/index.tsx | 17 +- .../components/Label/reusable/DatasetTypeLabel.tsx | 2 +- .../components/Label/reusable/PublishedLabel.tsx | 2 +- .../src/components/LastUpdated/index.tsx | 2 +- .../src/components/ListView/ActionsBar.tsx | 4 +- .../components/ListView/Filters/NumericalRange.tsx | 116 ++++ .../src/components/ListView/Filters/Search.tsx | 2 +- .../src/components/ListView/Filters/Select.tsx | 3 + .../src/components/ListView/Filters/index.tsx | 19 + .../src/components/ListView/ListView.tsx | 2 +- superset-frontend/src/components/ListView/types.ts | 9 +- .../ListViewCard/ListViewCard.stories.tsx | 2 +- .../src/components/MessageToasts/Toast.tsx | 2 +- .../src/components/MetadataBar/ContentConfig.tsx | 2 +- .../src/components/PageHeaderWithActions/index.tsx | 2 +- .../src/components/Popover/Popover.test.tsx | 2 +- .../src/components/PopoverDropdown/index.tsx | 2 +- .../src/components/PopoverSection/index.tsx | 2 +- .../src/components/Radio/Radio.stories.tsx | 15 +- .../src/components/RefreshLabel/index.tsx | 2 +- .../src/components/Select/AsyncSelect.tsx | 2 +- superset-frontend/src/components/Select/styles.tsx | 2 +- superset-frontend/src/components/Select/utils.tsx | 2 +- .../header-renderers/HeaderWithRadioGroup.tsx | 2 +- .../src/components/TableCollection/index.tsx | 2 +- .../src/components/TableSelector/index.tsx | 2 +- superset-frontend/src/components/Tabs/Tabs.tsx | 2 +- superset-frontend/src/components/Tags/Tag.test.tsx | 9 +- superset-frontend/src/components/Tags/Tag.tsx | 9 +- .../src/components/Tags/TagsList.test.tsx | 9 +- superset-frontend/src/components/Timer/index.tsx | 2 +- .../src/components/Tooltip/Tooltip.test.tsx | 2 +- .../src/components/UiConfigContext/index.tsx | 4 + .../components/WarningIconWithTooltip/index.tsx | 2 +- superset-frontend/src/constants.ts | 2 + .../src/dashboard/actions/dashboardState.js | 9 +- .../components/AddSliceCard/AddSliceCard.tsx | 5 +- .../DashboardBuilder/DashboardBuilder.test.tsx | 42 ++ .../DashboardBuilder/DashboardBuilder.tsx | 4 +- .../dashboard/components/DashboardBuilder/state.ts | 5 +- .../src/dashboard/components/DashboardGrid.jsx | 19 +- .../dashboard/components/DeleteComponentButton.tsx | 2 +- .../FiltersBadge/FilterIndicator/index.tsx | 2 +- .../dashboard/components/FiltersBadge/index.tsx | 2 +- .../dashboard/components/Header/Header.test.tsx | 34 ++ .../src/dashboard/components/Header/index.jsx | 2 +- .../Header/useHeaderActionsDropdownMenu.tsx | 4 +- .../src/dashboard/components/SaveModal.tsx | 3 +- .../src/dashboard/components/SliceAdder.tsx | 11 +- .../src/dashboard/components/SliceHeader/index.tsx | 2 +- .../components/SliceHeaderControls/index.tsx | 2 +- .../components/URLShortLinkButton/index.tsx | 2 +- .../src/dashboard/components/dnd/DragHandle.tsx | 2 +- .../filterscope/renderFilterScopeTreeNodes.jsx | 2 +- .../dashboard/components/gridComponents/Chart.jsx | 13 +- .../components/gridComponents/ChartHolder.tsx | 2 +- .../dashboard/components/gridComponents/Column.jsx | 2 +- .../dashboard/components/gridComponents/Row.jsx | 2 +- .../dashboard/components/gridComponents/Tabs.jsx | 2 +- .../components/menu/BackgroundStyleDropdown.tsx | 4 - .../dashboard/components/menu/WithPopoverMenu.tsx | 13 +- .../FilterBar/CrossFilters/CrossFilterTitle.tsx | 2 +- .../ScopingModal/ChartsScopingListPanel.tsx | 2 +- .../CrossFilters/ScopingModal/ScopingTreePanel.tsx | 2 +- .../FilterBar/FilterBarSettings/index.tsx | 2 +- .../FilterBar/FilterControls/FilterControls.tsx | 2 +- .../FilterBar/FilterControls/FilterDivider.tsx | 2 +- .../nativeFilters/FilterBar/Header/index.tsx | 2 +- .../nativeFilters/FilterBar/Vertical.tsx | 2 +- .../components/nativeFilters/FilterBar/index.tsx | 12 +- .../nativeFilters/FilterBar/keyValue.tsx | 2 +- .../nativeFilters/FilterCard/DependenciesRow.tsx | 2 +- .../nativeFilters/FilterCard/NameRow.tsx | 2 +- .../FiltersConfigModal/DraggableFilter.tsx | 2 +- .../FiltersConfigModal/FilterTitleContainer.tsx | 2 +- .../FiltersConfigModal/FilterTitlePane.tsx | 2 +- .../FiltersConfigForm/DependencyList.tsx | 2 +- .../FiltersConfigForm/FilterScope/ScopingTree.tsx | 2 +- .../FiltersConfigForm/FiltersConfigForm.tsx | 3 +- .../FiltersConfigModal/FiltersConfigModal.tsx | 2 +- superset-frontend/src/embedded/api.tsx | 5 + superset-frontend/src/embedded/index.tsx | 34 +- superset-frontend/src/embedded/utils.test.ts | 76 +++ .../utils.ts} | 35 +- .../src/explore/components/ControlHeader.tsx | 2 +- .../explore/components/ControlPanelsContainer.tsx | 2 +- .../explore/components/DataTableControl/index.tsx | 2 +- .../components/DataTablesPane/DataTablesPane.tsx | 2 +- .../DatasourcePanelDragOption/index.tsx | 2 +- .../DatasourcePanel/DatasourcePanelItem.tsx | 2 +- .../components/ExploreChartHeader/index.jsx | 2 +- .../components/ExploreViewContainer/index.jsx | 5 +- .../components/ExportToCSVDropdown/index.tsx | 2 +- .../explore/components/PropertiesModal/index.tsx | 2 +- .../explore/components/RunQueryButton/index.tsx | 2 +- .../controls/AnnotationLayerControl/index.tsx | 2 +- .../controls/CollectionControl/index.jsx | 2 +- .../controls/ColorSchemeControl/index.tsx | 2 +- .../ColumnConfigControl/ColumnConfigControl.tsx | 40 +- .../ColumnConfigControl/ColumnConfigItem.tsx | 106 ++-- .../controls/ColumnConfigControl/constants.tsx | 33 +- .../controls/ColumnConfigControl/types.ts | 1 + .../ConditionalFormattingControl.tsx | 2 +- .../controls/DatasourceControl/index.jsx | 2 +- .../controls/DateFilterControl/DateFilterLabel.tsx | 2 +- .../DateFilterControl/components/DateLabel.tsx | 2 +- .../DndColumnSelectPopoverTitle.jsx | 2 +- .../DndColumnSelectControl/DndSelectLabel.tsx | 2 +- .../controls/DndColumnSelectControl/Option.tsx | 2 +- .../FilterControl/AdhocFilterControl/index.jsx | 2 +- .../FixedOrMetricControl.test.tsx | 2 +- .../controls/LayerConfigsControl/FlatLayerTree.tsx | 2 +- .../controls/LayerConfigsControl/LayerTreeItem.tsx | 2 +- .../MetricControl/AdhocMetricEditPopoverTitle.tsx | 2 +- .../controls/MetricControl/MetricsControl.jsx | 2 +- .../components/controls/OptionControls/index.tsx | 2 +- .../controls/VizTypeControl/FastVizSwitcher.tsx | 2 +- .../VizTypeControl/VizTypeControl.test.tsx | 2 +- .../controls/VizTypeControl/VizTypeGallery.tsx | 2 +- .../controls/VizTypeControl/constants.tsx | 2 +- .../DashboardsSubMenu.tsx | 2 +- .../useExploreAdditionalActionsMenu/index.jsx | 2 +- .../explore/exploreUtils/getChartDataUri.test.ts | 107 ++-- .../src/explore/exploreUtils/index.js | 16 +- .../src/features/alerts/AlertReportModal.tsx | 2 +- .../features/alerts/components/AlertStatusIcon.tsx | 2 +- .../alerts/components/NotificationMethod.tsx | 2 +- .../features/alerts/components/RecipientIcon.tsx | 2 +- .../alerts/components/ValidatedPanelHeader.tsx | 2 +- .../features/allEntities/AllEntitiesTable.test.tsx | 2 + .../annotationLayers/AnnotationLayerModal.tsx | 2 +- .../src/features/annotations/AnnotationModal.tsx | 2 +- .../src/features/charts/ChartCard.tsx | 7 +- .../src/features/cssTemplates/CssTemplateModal.tsx | 2 +- .../src/features/dashboards/DashboardCard.tsx | 7 +- .../DatabaseConnectionForm/EncryptedField.tsx | 2 +- .../DatabaseConnectionForm/TableCatalog.tsx | 2 +- .../databases/DatabaseModal/SSHTunnelForm.tsx | 2 +- .../src/features/databases/DatabaseModal/index.tsx | 4 +- .../features/databases/UploadDataModel/index.tsx | 2 +- .../AddDataset/DatasetPanel/DatasetPanel.test.tsx | 2 +- .../AddDataset/DatasetPanel/DatasetPanel.tsx | 2 +- .../AddDataset/EditDataset/UsageTab/index.tsx | 2 +- .../features/datasets/AddDataset/Header/index.tsx | 2 +- .../src/features/home/ActivityTable.tsx | 2 +- superset-frontend/src/features/home/ChartTable.tsx | 5 +- .../src/features/home/DashboardTable.tsx | 5 +- superset-frontend/src/features/home/EmptyState.tsx | 3 +- .../src/features/home/LanguagePicker.tsx | 2 +- superset-frontend/src/features/home/Menu.tsx | 7 +- superset-frontend/src/features/home/RightMenu.tsx | 13 +- .../src/features/home/SavedQueries.tsx | 13 +- superset-frontend/src/features/home/SubMenu.tsx | 4 +- .../src/features/queries/SyntaxHighlighterCopy.tsx | 2 +- .../ReportModal/HeaderReportDropdown/index.tsx | 2 +- .../src/features/reports/ReportModal/index.tsx | 2 +- .../src/features/rls/RowLevelSecurityModal.tsx | 2 +- .../src/features/roles/RoleFormItems.tsx | 70 +++ .../src/features/roles/RoleListAddModal.test.tsx | 92 ++++ .../src/features/roles/RoleListAddModal.tsx | 71 +++ .../features/roles/RoleListDuplicateModal.test.tsx | 100 ++++ .../src/features/roles/RoleListDuplicateModal.tsx | 69 +++ .../src/features/roles/RoleListEditModal.test.tsx | 153 ++++++ .../src/features/roles/RoleListEditModal.tsx | 153 ++++++ .../src/features/{users => roles}/types.ts | 49 +- .../src/features/{users => roles}/utils.ts | 40 +- superset-frontend/src/features/tags/TagCard.tsx | 7 +- .../src/features/users/UserListModal.tsx | 46 +- .../Select/SelectFilterPlugin.stories.tsx | 4 + .../components/Select/SelectFilterPlugin.test.tsx | 13 + .../components/Select/SelectFilterPlugin.tsx | 3 +- .../filters/components/Select/buildQuery.test.ts | 1 + .../src/filters/components/Select/controlPanel.ts | 14 + .../src/filters/components/Select/types.ts | 2 + .../dynamic-plugins/index.ts => src/globals.d.ts} | 3 +- .../src/middleware/loggerMiddleware.js | 3 +- .../src/pages/AlertReportList/index.tsx | 2 +- .../src/pages/AnnotationLayerList/index.tsx | 5 +- .../src/pages/AnnotationList/index.tsx | 2 +- .../src/pages/ChartCreation/index.tsx | 2 +- superset-frontend/src/pages/ChartList/index.tsx | 2 +- .../src/pages/CssTemplateList/index.tsx | 2 +- .../src/pages/DashboardList/index.tsx | 7 +- superset-frontend/src/pages/DatabaseList/index.tsx | 2 +- superset-frontend/src/pages/DatasetList/index.tsx | 2 +- .../src/pages/QueryHistoryList/index.tsx | 2 +- .../RolesList.test.tsx} | 145 ++--- superset-frontend/src/pages/RolesList/index.tsx | 507 +++++++++++++++++ .../src/pages/RowLevelSecurityList/index.tsx | 2 +- .../src/pages/SavedQueryList/index.tsx | 2 +- superset-frontend/src/pages/Tags/index.tsx | 2 +- .../src/pages/UsersList/UsersList.test.tsx | 9 +- superset-frontend/src/pages/UsersList/index.tsx | 34 +- superset-frontend/src/preamble.ts | 4 +- .../jest.config.js => src/public-path.ts} | 9 +- superset-frontend/src/theme.ts | 2 + superset-frontend/src/types/bootstrapTypes.ts | 2 + .../src/{types/Owner.ts => utils/assetUrl.ts} | 13 +- superset-frontend/src/utils/export.ts | 7 +- superset-frontend/src/utils/getBootstrapData.ts | 20 + .../navigationUtils.ts} | 41 +- .../removeDuplicates.ts => src/utils/pathUtils.ts} | 24 +- superset-frontend/src/views/App.tsx | 4 +- superset-frontend/src/views/CRUD/hooks.ts | 10 +- superset-frontend/src/views/index.tsx | 2 + superset-frontend/src/views/menu.tsx | 1 + superset-frontend/src/views/routes.tsx | 31 +- superset-frontend/webpack.config.js | 29 +- superset-websocket/package-lock.json | 328 +++++++++-- superset-websocket/package.json | 4 +- superset/app.py | 60 +- superset/async_events/cache_backend.py | 5 + superset/charts/schemas.py | 1 + superset/commands/chart/export.py | 26 + superset/commands/chart/importers/v1/__init__.py | 22 +- superset/commands/dashboard/export.py | 20 +- .../commands/dashboard/importers/v1/__init__.py | 34 +- .../commands/database/importers/v1/__init__.py | 8 +- superset/commands/database/sync_permissions.py | 32 +- superset/commands/dataset/importers/v1/__init__.py | 10 +- superset/commands/dataset/update.py | 83 ++- superset/commands/export/assets.py | 1 + superset/commands/importers/v1/__init__.py | 16 +- superset/commands/importers/v1/examples.py | 3 +- superset/commands/importers/v1/utils.py | 93 +++- .../logs}/__init__.py | 0 superset/commands/query/importers/v1/__init__.py | 8 +- superset/commands/tag/export.py | 131 +++++ superset/config.py | 13 +- superset/connectors/sqla/models.py | 8 +- superset/dashboards/api.py | 18 +- superset/dashboards/schemas.py | 2 + superset/datasets/api.py | 38 +- superset/datasets/schemas.py | 35 +- superset/db_engine_specs/base.py | 4 + superset/db_engine_specs/bigquery.py | 158 ++++-- superset/db_engine_specs/databricks.py | 14 +- superset/db_engine_specs/doris.py | 2 +- superset/db_engine_specs/duckdb.py | 34 ++ superset/db_engine_specs/postgres.py | 2 +- superset/db_engine_specs/presto.py | 2 +- superset/db_engine_specs/snowflake.py | 4 +- superset/initialization/__init__.py | 49 +- superset/jinja_context.py | 15 +- .../migrations/shared/migrate_viz/processors.py | 1 + superset/security/api.py | 165 +++++- superset/security/manager.py | 56 +- superset/sql_parse.py | 2 +- .../dashboard_import_export.py => tasks/slack.py} | 24 +- superset/tasks/thumbnails.py | 2 + superset/templates/appbuilder/navbar.html | 2 +- superset/templates/superset/base.html | 8 +- superset/templates/superset/basic.html | 8 +- .../templates/superset/partials/asset_bundle.html | 57 +- superset/templates/superset/spa.html | 2 +- superset/utils/core.py | 13 - superset/utils/screenshots.py | 5 +- superset/utils/slack.py | 25 +- superset/utils/urls.py | 10 +- superset/views/base.py | 6 +- superset/views/core.py | 22 +- superset/views/dashboard/views.py | 11 +- superset/views/{users_list.py => roles.py} | 4 +- tests/integration_tests/charts/api_tests.py | 74 +-- tests/integration_tests/charts/data/api_tests.py | 112 ++-- tests/integration_tests/core_tests.py | 4 +- tests/integration_tests/dashboards/api_tests.py | 12 + tests/integration_tests/datasets/api_tests.py | 93 +++- tests/integration_tests/datasets/commands_tests.py | 2 + .../db_engine_specs/bigquery_tests.py | 133 ++--- tests/integration_tests/security/api_tests.py | 17 + tests/integration_tests/sqla_models_tests.py | 11 +- .../charts/commands/importers/v1/import_test.py | 45 ++ .../unit_tests/commands/dashboard}/__init__.py | 0 tests/unit_tests/commands/dashboard/create_test.py | 98 ++++ .../commands/databases/sync_permissions_test.py | 29 +- tests/unit_tests/commands/dataset/test_update.py | 379 ++++++++++++- tests/unit_tests/commands/export_test.py | 65 ++- .../commands/importers/v1/import_test.py | 45 ++ tests/unit_tests/datasets/commands/export_test.py | 67 +++ .../datasets/commands/importers/v1/import_test.py | 166 ++++++ .../unit_tests/db_engine_specs/test_databricks.py | 4 +- tests/unit_tests/jinja_context_test.py | 9 +- tests/unit_tests/security/api_test.py | 5 + tests/unit_tests/utils/slack_test.py | 39 +- 464 files changed, 7647 insertions(+), 2403 deletions(-) copy .flaskenv => docker/docker-healthcheck.sh (87%) mode change 100644 => 100755 create mode 100644 docker/nginx/templates/superset.conf.template create mode 100644 docs/static/img/tutorial/publish_button_dashboard.png copy superset-frontend/packages/superset-ui-chart-controls/src/operators/{histogramOperator.ts => aggregateOperator.ts} (53%) create mode 100644 superset-frontend/packages/superset-ui-chart-controls/test/operators/aggregateOperator.test.ts copy superset-frontend/{src/components/Card/Card.stories.tsx => spec/fixtures/mockDatabases.ts} (60%) rename superset-frontend/src/assets/images/icons/{big-number-chart-tile.svg => big_number_chart_tile.svg} (100%) rename superset-frontend/src/assets/images/icons/{checkbox-half.svg => checkbox_half.svg} (100%) rename superset-frontend/src/assets/images/icons/{checkbox-off.svg => checkbox_off.svg} (100%) rename superset-frontend/src/assets/images/icons/{checkbox-on.svg => checkbox_on.svg} (100%) delete mode 100644 superset-frontend/src/components/IconButton/IconButton.test.jsx create mode 100644 superset-frontend/src/components/IconButton/IconButton.test.tsx rename superset-frontend/src/components/Icons/{Icon.tsx => AsyncIcon.tsx} (96%) create mode 100644 superset-frontend/src/components/ListView/Filters/NumericalRange.tsx create mode 100644 superset-frontend/src/embedded/utils.test.ts copy superset-frontend/src/{dashboard/util/getChartAndLabelComponentIdFromPath.js => embedded/utils.ts} (50%) create mode 100644 superset-frontend/src/features/roles/RoleFormItems.tsx create mode 100644 superset-frontend/src/features/roles/RoleListAddModal.test.tsx create mode 100644 superset-frontend/src/features/roles/RoleListAddModal.tsx create mode 100644 superset-frontend/src/features/roles/RoleListDuplicateModal.test.tsx create mode 100644 superset-frontend/src/features/roles/RoleListDuplicateModal.tsx create mode 100644 superset-frontend/src/features/roles/RoleListEditModal.test.tsx create mode 100644 superset-frontend/src/features/roles/RoleListEditModal.tsx copy superset-frontend/src/features/{users => roles}/types.ts (55%) copy superset-frontend/src/features/{users => roles}/utils.ts (53%) copy superset-frontend/{packages/superset-ui-core/src/dynamic-plugins/index.ts => src/globals.d.ts} (94%) copy superset-frontend/src/pages/{UsersList/UsersList.test.tsx => RolesList/RolesList.test.tsx} (58%) create mode 100644 superset-frontend/src/pages/RolesList/index.tsx copy superset-frontend/{packages/generator-superset/jest.config.js => src/public-path.ts} (79%) copy superset-frontend/src/{types/Owner.ts => utils/assetUrl.ts} (69%) copy superset-frontend/src/{dashboard/util/getFilterScopeParentNodes.js => utils/navigationUtils.ts} (55%) copy superset-frontend/{packages/superset-ui-core/src/utils/removeDuplicates.ts => src/utils/pathUtils.ts} (67%) copy superset/{advanced_data_type => commands/logs}/__init__.py (100%) create mode 100644 superset/commands/tag/export.py copy superset/{utils/dashboard_import_export.py => tasks/slack.py} (65%) copy superset/views/{users_list.py => roles.py} (95%) copy {superset/advanced_data_type => tests/unit_tests/commands/dashboard}/__init__.py (100%) create mode 100644 tests/unit_tests/commands/dashboard/create_test.py