Compare commits

...
639 Commits
Author SHA1 Message Date
amitmiran137 387d93302f chore: update CHANGELOG.md 2021-05-25 12:45:59 +03:00
Beto Dealmeida 47c27ce880 fix: select country in examples chart (#14561)
(cherry picked from commit 09050aee62)
2021-05-24 17:19:05 +03:00
Ville Brofeldt bc1e208c1d update changelog, updating and version number 2021-05-14 14:22:31 +03:00
Ville Brofeldt 09e871eb63 feat(native-filters): add sort metric to select (#14590)
(cherry picked from commit f1c32b9576)
2021-05-13 09:48:43 +03:00
Phillip Kelley-Dotson 69e24bb029 fix: dashboard side actions (#14587)
* fix dashboard side actions

* lint being lint

(cherry picked from commit bfbf767663)
2021-05-13 09:48:43 +03:00
Ville Brofeldt f2236fcb8f fix(chart-data): handle url_params in csv export and native filters (#14526)
(cherry picked from commit 66a4c94a1e)
2021-05-07 21:36:59 +03:00
Ville Brofeldt d0a6706527 feat(dremio): implement convert_dttm method (#14519)
(cherry picked from commit d1d98d81b0)
2021-05-07 21:36:59 +03:00
simcha90 d0b683cb63 feat(native-filters): Auto apply changes in FiltersConfigModal (#14461)
* fix:fix get permission function

* feat: auto apply changes after save filters config modal

* fix: repopulate default values

* test: fix tests

* test: fix tests

* fix: fix CR notes

* fix: fix CR notes

(cherry picked from commit e8e838e279)
2021-05-07 21:36:59 +03:00
David Aaron Suddjian c2d24782d9 fix: parameterize titles correctly (#14509)
(cherry picked from commit 52dbe311c7)
2021-05-07 21:36:58 +03:00
cccs-rc 099514d3c0 fix: SQL Statement on QUERY_LOGGER prints none to log (#14358)
(cherry picked from commit f55882e756)
2021-05-07 21:36:58 +03:00
Ville Brofeldt f8491dfc0a fix(annotations): pass force param to annotation request (#14483)
* fix(annotations): pass force param to annotation request

* use strtobool

* add util for parsing bools

(cherry picked from commit 93c7f5bb44)
2021-05-07 21:36:58 +03:00
Amit Miran 963e79f423 chore: bump table plugin to 0.17.42 (#14460)
(cherry picked from commit 158ac302d8)
2021-05-04 22:55:30 +03:00
simcha90 93322aa424 perf(native-filters): Load native filters after charts (#14443)
* fix:fix get permission function

* refactor: filter default value

* refactor: update default value loading

* refactor: apply defaultValues

* lint: fix lint

* lint: fix lint

* test: fix test

* refactor: use extraFormData for reload charts

* feat: load native filters after after charts

* feat: load filters after charts

* fix: revert changes

* test: fix timers

* test: fix tests

(cherry picked from commit 582900c170)
2021-05-04 22:55:30 +03:00
Jesse Yang 19ca78fd94 fix(viz): bump superset-ui to fix bugs in table and graph chart (#14438)
(cherry picked from commit a75e4af99b)
2021-05-04 14:37:42 +03:00
Ville Brofeldt 6316a35fed add migration (#14446)
(cherry picked from commit 2f9efb2e23)
2021-05-04 14:37:42 +03:00
simcha90 c0cb5a8c26 perf(native-filters): avoid unnecessary reloading of charts (#14408)
* fix:fix get permission function

* refactor: filter default value

* refactor: update default value loading

* refactor: apply defaultValues

* lint: fix lint

* lint: fix lint

* test: fix test

* refactor: use extraFormData for reload charts

* test: fix tests

* test: fix tests

* test: fix tests

(cherry picked from commit bbb1f2d757)
2021-05-04 14:37:41 +03:00
simcha90 eb8b863a86 refactor(native-filters): allow cascading only for filter_select (#14441)
* fix:fix get permission function

* refactor: allow cascading only for filter_select

(cherry picked from commit abbf4bf05a)
2021-05-04 14:37:41 +03:00
simcha90 a9b83d3871 test(maximize-chart): Add tests to maximize chart action (#14371)
* fixed FullSize charts broken #13600

* Update ChartHolder.jsx

* fix:fix get permission function

* test: adding tests to full screen

* lint: fix lint

* fix: fix CR notes

* fix: fix CR notes

* fix: fix CR notes

Co-authored-by: toop <mytoop@163.com>
(cherry picked from commit 1f8de1d06c)
2021-05-04 14:37:41 +03:00
AAfghahi b5f988f5e9 feat: Logic added to limiting factor column in Query model (#13521)
* Sqllab limit

* Add migration script

* Set default values

* initial push

* revisions

* Update superset/views/core.py

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>

* moving migration to separate PR

* with migration

* revisions

* Fix apply_limit_to_sql

* all but tests

* added unit tests

* revisions

* Update superset/sql_lab.py

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>

* Update superset/sql_parse.py

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>

* fixed black issue

* Update superset/views/core.py

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>

* updated logic

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
(cherry picked from commit e507508b48)
2021-05-04 14:37:40 +03:00
Ville Brofeldt 319125ec3b fix(native-filters): fix filter scope error (#14426) 2021-04-30 12:20:02 +03:00
AAfghahi 982a91ee62 feat: Adding limiting_factor column to Query model (#14234)
* add limiting factor to query model

* varchar instead of enum
2021-04-29 14:37:22 -07:00
Erik Ritter bc47bc8f66 feat: Add etag caching to dashboard APIs (#14357) 2021-04-29 14:14:26 -07:00
Michael S. Molina a52ff13b5d chore: Moves Card to the components folder (#14139) 2021-04-29 11:51:41 -07:00
Geido 545e257537 feat: Dynamic imports for the Icons component (#14318)
* Add aria-label and twotone

* Enhance LazyIcon

* Fix tests and solve ject warnings

* Add new line

* Revert package-lock to master

* Fix failing test

* Implement icon overrides

* Fix failing storybook

* Clean up

* Improve var name
2021-04-29 11:49:39 -07:00
Ben Reinhart a2831382a9 feat: Support env vars configuration for WebSocket server (#14398) 2021-04-29 09:37:57 -07:00
Daniel Vaz Gaspar 6541a03d0b fix: SQLLab role permissions (#14372)
* fix: SQLLab role permissions

* add missing perm

* fix tests

* fix security test

* fix security test

* fix tests
2021-04-29 15:58:08 +01:00
Ville Brofeldt 1c16261651 fix(native-filters): always show filters without dataset (#14409) 2021-04-29 14:25:39 +03:00
eriendenganderiendeng 2dc3fa3f21 fix error getting partitionQuery from table.partition (#14369)
Co-authored-by: eriendeng <eriendeng@tencent.com>
2021-04-29 10:42:11 +03:00
Michael S. Molina 1d6a746a09 refactor: Boostrap to AntD - Tabs (#14048) 2021-04-28 23:49:50 -07:00
Ville Brofeldt 4410fd047e fix(native-filters): default value not populated on second opening (#14401) 2021-04-29 09:09:47 +03:00
Michael S. Molina b38aadf9e4 chore: Moves the branding folder to the assets folder (#14166) 2021-04-28 22:17:21 -07:00
Ben Reinhart e7f5100833 fix: Fix unintended cache misses with async queries (#14291)
* bug: Fix unintended cache misses with async queries

* Ensure sort order

* Ensure columns are sorted

* Update failing tests
2021-04-28 12:14:55 -07:00
Srini Kadamati b78b7b3fad docs: improved clickhouse connection details (#14394)
* docs: multiple small fixes around databases

* add link to postgres SSL options

* docs: added more Clickhouse connection details

* minor tweak
2021-04-28 13:06:49 -04:00
Ville Brofeldt 183b5ae362 fix(sqllab): fix error due to anonymous user (#14390) 2021-04-28 19:57:45 +03:00
Srini Kadamati bbdb4ee24f docs: multiple small fixes around databases (#14321)
* docs: multiple small fixes around databases

* add link to postgres SSL options
2021-04-28 10:30:28 -04:00
Ville Brofeldt 43ee52be57 fix(native-filters): force update control value on change (#14385)
* fix(native-filters): force update control value on change

* fix test
2021-04-28 11:41:22 +03:00
simcha90 fc0c1155c2 fix(native-filters): fix lint (#14387)
* fix:fix get permission function

* lint: fix types
2021-04-28 10:16:21 +03:00
simcha90andamitmiran137 2486fd4f6d feat(native-filters): Show/Hide filter bar by metdata ff (#14261)
* fix:fix get permission function

* feat: hide native filters by metadata

* fix: fix show_native_filters name

* fix: metadata

* chore: add migration to hide native_filters in all existing dashboards

* chore: fix pre-commit

* fix: make migration migration dashboard with filter_box only

* fix: pre-commit

* feat: hide filter bar if no permission edit and no filters

* fix: remove migration

Co-authored-by: amitmiran137 <amit.miran@nielsen.com>
2021-04-28 07:49:03 +03:00
John BodleyandJohn Bodley d8bb2d3e62 refactor(db_engine_specs): Removing top-level import of app (#14366)
Co-authored-by: John Bodley <john.bodley@airbnb.com>
2021-04-28 15:47:32 +12:00
Aakash Nand 77d17152bc Update trino connection docs (#14219) 2021-04-27 19:51:00 -04:00
ʈᵃᵢ 86d2a616c1 fix(emotion): add separate namespace for menu app (#14362) 2021-04-27 15:53:55 -06:00
Evan Rusackas 8e6803f65f chore: Bumping lodash version in Superset (#14203)
* Bumping lodash in main package

* new package lock with updated lodash
2021-04-27 14:54:56 -06:00
Hugh A. Miles IIandElizabeth Thompson 44c09b5383 feat: Setup supersetText configuration to overwrite errors (#14256)
* Setup error message overwrite config`

* fix

* bad reabse

* bad rebase 2

* remove unneeded comment

* working dynamic importing

* saveeee

* working textUtil file

* add ignore tslint

* fix linting

* fix linting

* import order

* setup guard statements

* linting again

* linting again

Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
2021-04-27 15:03:35 -04:00
Ville Brofeldt 40fb94dcca feat(native-filters): add optional sort metric to select filter (#14346)
* feat(native-filters): add optional sort metric to select filter

* use verbose name when defined

* fixes

* lint

* disable flaky test

* disable flaky test

* disable flaky test
2021-04-27 20:28:38 +03:00
Ville Brofeldt 87a895cc4a feat(native-filters): add refresh button to default value picker (#14375)
* feat(native-filters): add refresh button to default value picker

* skip flaky test
2021-04-27 19:18:34 +03:00
ume d645312c7f chore: Improve Japanese translation (#14339) 2021-04-27 09:00:25 -07:00
Kamil Gabryjelski 41ccebce91 feat(native-filters): Use datasets in dashboard as default options for native filters (#14374)
* Use defaultOptions in dataset picker

* Remove console log

* Temporarily skip failing test
2021-04-27 18:04:57 +03:00
ʈᵃᵢ 1ec743f29e chore(docker-compose): use dev image for docker-compose-non-dev.yml (#14342) 2021-04-27 08:32:53 -04:00
Kamil Gabryjelski 20ab0869fa feat(native-filters): Implement adhoc filters and time picker in Range and Select native filters (#14313)
* Implement adhoc filters in Range and Select native filters

* Add time picker

* Remove additional filters from datamask

* Create separate stylesheet for AdhocFilterControl in native filters

* Rename Time picker to Time range

* Fix columns in AdhocFilter empty when creating a new filter

* Skip flaky test
2021-04-27 11:08:05 +02:00
simcha90 03e4a5b6b7 fix(native-filters): Update filter saving (#14370)
* fix:fix get permission function

* fix: not reload charts after save filters

* fix: not reload charts after save filters

* fix: temp commit type

* lint: add typing
2021-04-27 11:20:04 +03:00
Michael S. Molina d0be1ff79e chore: Moves Tabs to the components folder (#14136) 2021-04-27 00:15:21 -07:00
Amit MiranandVille Brofeldt 22f9e12a3b chore: bump 0.17.38 (#14355)
* chore: bump 0.17.37

* chore: update package-lock

* chore: revert echarts upgrade

* bump echarts package to 0.17.38

Co-authored-by: Ville Brofeldt <ville.v.brofeldt@gmail.com>
2021-04-27 09:30:39 +03:00
Phillip Kelley-Dotson 69f2af9fb6 refactor(addslicecontainer): move slice container panel from bootstrap panel to ant-d (#14035)
* slice boostrap panel to ant-d

* remove panel

* remove space

* fix lint

* fix addslicecontainer

* Update AddSliceContainer.tsx
2021-04-26 22:13:49 -07:00
Sam Faber-Manning 6898dd916f update default cron settings for new alerts and reports (#14363) 2021-04-26 18:11:15 -07:00
Michael S. Molina 4fbb572568 refactor: Bootstrap to AntD - Form - iteration 1 (#14106) 2021-04-26 15:03:53 -07:00
Ben Reinhart 8dd0620fd3 chore: add some basic instrumentation to Node WebSocket server (#14354)
* chore: add some basic instrumentation

* Switch to statsd using hot-shots

* Cleanup a few leftover bits
2021-04-26 14:05:10 -07:00
Ben Reinhart 2a1235c0c2 fix: Cleanup serialization and hashing code (#14317) 2021-04-26 14:04:40 -07:00
ume ebc938059b fix: pybabel extract fails (#14338) 2021-04-26 13:59:04 -07:00
Lily Kuang 876779865c feat(alert/report): update content format radio buttons (#14235)
* update content format selection ui

* translations

* update test
2021-04-26 11:33:55 -07:00
Ville Brofeldt d7fc2031b1 feat(filter-box): sort by metric on backend (#14340) 2021-04-26 21:06:19 +03:00
Daniel Vaz Gaspar 45e209d487 fix: flaky test for alerts and reports (#14347) 2021-04-26 18:56:48 +01:00
Ville BrofeldtandKamil Gabryjelski 8a0d321084 fix(native-filters): allowClear only when required not checked (#14353)
* fix(native-filters): allowClear only when required not checked

* Update superset-frontend/src/filters/components/Select/controlPanel.ts

Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com>

Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com>
2021-04-26 20:48:17 +03:00
Rob DiCiuccio d435163d13 chore: Add Redis password option to helm chart (#14274)
* Add redis password option to helm chart

* Bump chart version
2021-04-26 10:36:41 -07:00
Daniel Vaz Gaspar 437be4b689 ci: set remote URL to https and bump sha (#14350)
* ci: set remote URL to https and bump sha

* update gitmodules
2021-04-26 17:43:32 +01:00
Rob DiCiuccio 6875a1a9e2 Make g.user attribute access safe for public users (#14287) 2021-04-26 08:50:50 -07:00
simcha90 7ff35dfdfb fix(native-filters): Fix indicators (#14334)
* fix:fix get permission function

* fix: hide featured filters

* test: fix FF in tests

* test: fix FF in tests

* fix: fix unset cross filters
2021-04-26 13:22:11 +03:00
Eran Levy b8356a64ee chore(docker-compose): bump redis version 2021-04-25 22:06:51 -06:00
Amit Miran 1faaf199ad chore(docs): remove .py from db migrate -m (#14331)
no need to state the python extension 
before: add_metadata_column_to_annotation_model.py.py
after: add_metadata_column_to_annotation_model.py
2021-04-26 07:02:02 +03:00
Chris Carini 4d2c9324be Fixing spelling: clint -> client (#14323) 2021-04-25 22:39:28 +03:00
simcha90 3e8bf96642 fix(native-filters): Fix first loading of charts (#14332)
* fix:fix get permission function

* fix: fix unnecessary loading for native filters

* test: fix mocks
2021-04-25 13:58:53 +03:00
John BodleyandJohn Bodley b0f8f6b6ad fix(hive): Use parquet rather than textfile when uploading CSV files to Hive (#14240)
* fix(hive): Use parquet rather than textfile when uploading CSV files

* [csv/excel]: Use stream rather than temporary file

Co-authored-by: John Bodley <john.bodley@airbnb.com>
2021-04-24 18:17:30 +12:00
Ville Brofeldt e392e2ed39 feat(native-filters): add option to create value in select filter (#14314)
* feat(native-filters): add option to create value in select filter

* address comments
2021-04-24 08:26:24 +03:00
David Aaron Suddjian 91ba897f8e fix(dashboard): Add caching for dashboard datasets (#14306)
* fix(dashboard): [WIP] add caching back in to the dashboard dataset api

* caching works! remove log message

* remove unused full_data method

* add caching to the charts endpoint as well

* spread the cache love

* lint

* Revert "spread the cache love"

This reverts commit ef322a3b0df7d35446a60141ad98288102547a52.

* Revert "add caching to the charts endpoint as well"

This reverts commit d3d1584989324efe56d08c081570149454ddf212.

* it's a list
2021-04-23 21:04:45 -07:00
John BodleyandJohn Bodley a8781c5313 fix(hive): Update CSV to Hive upload prefix (#14255)
* fix(hive): Update CSV to Hive upload prefix

* Trigger notification

Co-authored-by: John Bodley <john.bodley@airbnb.com>
2021-04-24 13:20:31 +12:00
Beto Dealmeida 919fd496a9 WIP (#14252) 2021-04-23 16:59:44 -07:00
Michael S. Molina aada73302f chore: Moves spec files to the src folder - iteration 3 (#14202) 2021-04-23 16:19:12 -07:00
Michael S. Molina 1bc73f2cba chore: Moves spec files to the src folder - iteration 2 (#14201) 2021-04-23 16:18:46 -07:00
Michael S. Molina 98b450aa76 chore: Moves spec files to the src folder - iteration 1 (#14200) 2021-04-23 16:18:16 -07:00
Erik Ritter 76fdd072ba fix: unbreak CI (#14319) 2021-04-23 15:04:04 -07:00
Beto Dealmeida e7ad03d44f feat: add endpoint to fetch available DBs (#14208)
* feat: add endpoint to fetch available DBs

* Fix lint
2021-04-23 10:51:47 -07:00
Beto Dealmeida ffcacc3393 fix: new import/export CLI (#13921)
* fix: CLI for import/export

* Add tests

* Remove debug
2021-04-23 10:50:49 -07:00
Michael S. Molina 58534b36c5 chore: Improves Icons storybook (#14193) 2021-04-23 09:57:12 -07:00
ʈᵃᵢ e913ef3261 docs: add publish step (#14304) 2021-04-23 10:43:58 -06:00
Ville Brofeldt 2b57ebaffd feat(native-filters): add tooltip to control values (#14312) 2021-04-23 19:29:51 +03:00
Yongjie Zhao 67535bb320 refactor: reorganize dateFilterUtils.tx (#14309)
* refactor: reorganize dateFilterUtils.tx

* move spec to src dirctory
2021-04-23 16:05:50 +08:00
Yongjie Zhao d1afca4fa1 fix: custom TimeRange can not input value (#14084) 2021-04-23 15:20:37 +08:00
Michael S. Molina b963624e12 refactor: Boostrap to AntD - Row/Col (#14100) 2021-04-22 20:57:17 -07:00
Hugh A. Miles II 01de3096b3 chore: starter make file (#13970)
* starter make file

* yea

* update docs

* lit

* remove venv from comamnds

* venv
2021-04-22 17:54:12 -04:00
Michael S. Molina 3e23c103dc chore: Moves WarningIconWithTooltip to own folder (#14123) 2021-04-22 13:50:11 -07:00
zuzana-vej 86233d1676 chore: SQLLab row limit warning using Alert component (#14298) 2021-04-22 10:12:46 -07:00
Daniel Vaz Gaspar 38a7c537ff feat: add alerts & reports to docker compose (#14267)
* feat: add alerts & reports to docker compose

* change to firefox

* add missing package
2021-04-22 17:42:52 +01:00
Ville Brofeldt c760030b83 fix(sqla): timeseries limit not applied when using columns (#14297) 2021-04-22 10:38:28 +03:00
Ville Brofeldt fe1d32dc2a fix(db2): change name and add legacy alias (#14295) 2021-04-22 09:56:22 +03:00
Beto Dealmeida 5d3191bb61 feat: catch errors on do_ping (#14250) 2021-04-21 18:43:40 -04:00
Lyndsi Kay Williams 70cfb7752c chore: Code cleanup in DatabaseModal (#14196) 2021-04-21 13:41:50 -04:00
Jesse Yang 2dd20df03d fix(dashboard): draft dashboards should be viewable (#14207)
* fix(dashboard): draft dashboards should have open access

* Remove a duplicate test
2021-04-21 09:54:51 -07:00
852e840575 fix(explore): CUSTOM SQL tab should automatically update (#14194)
* fix(explore): CUSTOM SQL tab should automatically update

* fix(explore): CUSTOM SQL tab should automatically update

* fix: lint

* fix(explore): default value

Co-authored-by: Yongjie Zhao <yongjiezhao@apache.org>

Co-authored-by: liuyaozong <liuyaozong@baijiahulian.com>
Co-authored-by: stephenLYZ <vueact@gmail.com>
Co-authored-by: Yongjie Zhao <yongjiezhao@apache.org>
2021-04-21 14:30:18 +08:00
Yongjie Zhao 0dfb32cf08 fix: incorrect module reference (#14258) 2021-04-21 10:37:24 +08:00
Ben Reinhart 3ef63171a9 chore: WebSocket server improvements (#14257)
* Update some types and resolve conflicts

* Logger improvements

* Ensure logger can log exception objects
* Remove logging output in tests (for now)

* Add License
2021-04-20 17:28:08 -07:00
Lyndsi Kay Williams a846015f4d fix: Center each import icon and add a tooltip II (#14192) 2021-04-20 19:59:48 -04:00
392d8a8107 fix: Handle bad permission errors for bigquery test connections (#14147)
* starter make file

* yea

* move messaging to config

* Delete Makefile

* remove

* checkout

* check for db generic errors

* checkout bad files

* add proper message

* add docs for new permissions codes

* Update superset/errors.py

Co-authored-by: AAfghahi <48933336+AAfghahi@users.noreply.github.com>

* Update superset/errors.py

Co-authored-by: AAfghahi <48933336+AAfghahi@users.noreply.github.com>

* rename var

* starter regex

* fix

* fix

* fix linting

* update test

* yerp

* fixed test

* added regex

* Apply suggestions from code review

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>

* address comments

* update docs

* prettier

* fux

* add space

* Update errors.py

* Update types.ts

Co-authored-by: AAfghahi <48933336+AAfghahi@users.noreply.github.com>
Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
2021-04-20 19:19:36 -04:00
Elizabeth Thompson ff665fa5a7 feat: restyle database modal (#14092)
* restyle database modal

* change name of tab to Basic

* update test with RTL better RTL render statement

* change color and position of required asterisk

* refactor db logic
2021-04-20 18:21:07 -04:00
Erik Ritter 97e086051c chore: bump superset-ui (#14253) 2021-04-20 15:16:58 -07:00
Amit MiranandSimcha Shats 13d4902711 feat(native-filters): select group by support (#14217)
* chore: initial commit

* feat: groupby filter

Co-authored-by: Simcha Shats <simcha.shats@nielsen.com>
2021-04-20 18:52:33 +03:00
Michael S. Molina 42fb2286ad chore: Moves Dropdown to the components folder (#14126) 2021-04-20 08:48:28 -07:00
Michael S. Molina d1b458c4c5 chore: Moves Radio to the components folder (#14133) 2021-04-20 08:48:10 -07:00
Michael S. Molina 8441590812 chore: Moves Tooltip to the components folder (#14137) 2021-04-20 08:47:47 -07:00
Michael S. Molina ec79b7be1f chore: Moves the staticPages folder to the assets folder (#14167) 2021-04-20 08:47:24 -07:00
Ville Brofeldt 55bf72aead chore(prophet): bump prophet to 1.0.1 (#14228) 2021-04-20 15:55:55 +03:00
Ville Brofeldt 0807ab44a5 fix(native-filters): merge_extra_form_data extras processing (#14244)
* fix: merge_extra_form_data extras processing

* move props that are later moved back in viz.py
2021-04-20 14:24:33 +03:00
simcha90 7e5440a359 test(native-filters): Filter config modal test (#14245)
* test: add tests for filter bar

* test: merge filter bar tests with master

* test: add test for filter set

* test: filter set tests

* test: merge with master

* test: fix tests for filter bar

* test: filter config modal

* test: add select filter

* feat: filter config modal

* lint: fix lint

* lint: fix TS

* test: test testWithId
2021-04-20 14:07:08 +03:00
Kamil Gabryjelski 6119d8e998 Fix filter edit popover not opening in DnD mode (#14243) 2021-04-20 11:45:48 +02:00
simcha90 d386e66f59 test(native-filters): add integration tests for filter bar (#14098)
* test: add tests for filter bar

* test: merge filter bar tests with master

* test: add test for filter set

* test: filter set tests

* test: merge with master

* test: fix tests for filter bar

* fix: fix CR notes

* fix: fix CR notes
2021-04-20 12:24:12 +03:00
simcha90 9d67b46576 fix(native-filters): fix remove native filters (#14218)
* fix:fix get permission function

* fix: clean data mask on chart removing

* refactor: fix reducer
2021-04-20 09:48:23 +03:00
Rob DiCiuccio 25922e341f Add Preset code owners for ephemeral test env workflows (#14238) 2021-04-19 22:19:18 -07:00
Beto Dealmeida 13bf023100 feat: improve engine spec discoverability (#14204)
* feat: improve engine spec discoverability

* Address comments

* Fix tests
2021-04-19 17:24:22 -07:00
Michael S. Molina c2d11ac53e chore: Moves InfoTooltip to the components folder (#14128) 2021-04-19 16:25:29 -07:00
Carlos Fidel Selva Ochoa 1448f78406 fix: Use utils.json_iso_dttm_ser to dump jsons when async query execution (#13830)
* Use utils.json_iso_dttm_ser to dump jsons

If encoding is not `None`, the default encoder `utils.json_iso_dttm_ser` is not used for binary data and instead tries to encode to the default 'utf-8'. 
This fixes https://github.com/apache/superset/issues/13829

* Change to comply with tox -m pre-commit
2021-04-19 21:04:58 +08:00
Đặng Minh Dũng 11e0f4cb2d feat: TrinoEngineSpec.adjust_database_uri (#14122)
* feat: TrinoEngine implement adjust_database_uri

Signed-off-by: Đặng Minh Dũng <dungdm93@live.com>

* test: TrinoEngine implement adjust_database_uri

Signed-off-by: Đặng Minh Dũng <dungdm93@live.com>
2021-04-19 13:10:12 +03:00
Amit Miran ca359402bd chore: bump package.json (#14222)
* chore: bump package.json

* chore: bump package.json and lock
2021-04-19 06:52:24 +03:00
jawabuu 1cc3b9613e Add superset helm repository (#14223) 2021-04-18 19:59:38 -07:00
simcha90 c01f8101eb fix(cross-filters): Fix missed metadata (#14220)
* fix:fix get permission function

* fix: fix missed metadata case
2021-04-18 18:46:38 +03:00
jawabuu 61325635da ci: use git submodules for Chart Actions (#14211)
* Add chart-action submodules

* use local github actions for chart actions

* Run actions checkout for local checkout

* Run lint when PR is edited

* Remove path filter and dummy value

* Fix fetch-depth

* Test chart version bump

* Update maintainer to pass validation

* Update maintainer to pass validation
2021-04-17 19:13:36 +03:00
Michael S. Molina 77a9cc7088 chore: Moves Collapse to the components folder (#14124) 2021-04-16 15:55:04 -07:00
Michael S. Molina b83ee46d0f chore: Moves Modal to the components folder (#14130) 2021-04-16 15:49:53 -07:00
Beto DealmeidaandAAfghahi c7112d1c48 feat: error messages for Presto connections (#14172)
* chore: rename connection errors

* feat: error messages for Presto connections

* Add unit tests

* Update docs/src/pages/docs/Miscellaneous/issue_codes.mdx

Co-authored-by: AAfghahi <48933336+AAfghahi@users.noreply.github.com>

Co-authored-by: AAfghahi <48933336+AAfghahi@users.noreply.github.com>
2021-04-16 15:49:47 -04:00
AAfghahi df04c3af21 feat: error messages when connecting to mssql (#14171)
* database errors for mssql

* revisions
2021-04-16 09:43:42 -07:00
Craig Rueda 8db7be16da fix: Switching to local codecov script (#14170)
* Switching to local codecov script

* Adding license / update instructions

* Fixing FE build

* Fixing FE codecov test
2021-04-16 09:26:50 -07:00
Erik Ritter a3e302374b fix: Add extra requires for shillelagh (#14180)
* fix: Add extra requires for shillelagh

* Update google-sheets.mdx

* Update index.mdx
2021-04-16 09:16:35 -07:00
Erik RitterandMichael S. Molina 01f13c5678 chore: type some SQL Lab components (#14178)
* chore: type some SQL Lab components

* Update superset-frontend/src/SqlLab/components/QueryHistory.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2021-04-16 09:16:16 -07:00
jawabuu c3e89d53c2 feat: publish superset helm chart (#14163)
* Create initial helm-release action for superset

* Add lintconf to ensure chart passes validation

* Add lint-test job

* Add apache licence headers

* Run job for master only

* Move helm-lint to separate workflow

* Helm release for master & helm dir changes only

* Dummy change to test linter
2021-04-16 09:13:43 -07:00
Craig RuedaandJesse Yang a49e0b2037 feat: Adding encrypted field factory (#14109)
* First cut at adding enc type factory

* Finalized enc type factory

* Adding unit test

* PyLinting

* Adding license

* Apply suggestions from code review

Co-authored-by: Jesse Yang <jesse.yang@airbnb.com>

* Moving things from enc -> encrypt

* CI commit

* One more fix

* Tweaking config name

* Fixing broken test

* Fixing broken test again

Co-authored-by: Jesse Yang <jesse.yang@airbnb.com>
2021-04-16 09:01:18 -07:00
Ville Brofeldt 7e0e9ac3fc feat(viz): add mixed and radar chart (#14197) 2021-04-16 23:59:32 +08:00
Ville Brofeldt fe21de3fc4 fix(viz): time shift read-only error (#14191) 2021-04-16 16:48:06 +03:00
Kamil Gabryjelski cab110e354 Enable the new pivot table (#14187) 2021-04-16 10:46:50 +02:00
Michael S. Molina be78cd1a1f chore: Configures Jest to ignore storybook files when collecting coverage statistics (#14164) 2021-04-15 23:17:31 -07:00
Michael S. Molina 018caa528a chore: Moves Switch to the components folder (#14135) 2021-04-15 22:54:26 -07:00
Michael S. Molina e4c8084285 chore: Moves DropdownButton to the components folder (#14127) 2021-04-15 22:46:18 -07:00
Michael S. Molina ec75dc178b chore: Moves CronPicker to the components folder (#14125) 2021-04-15 22:44:12 -07:00
Phillip Kelley-Dotson 38a1f65646 chore(toggle thumbnails): use localstorage for toggle (#14013)
* use localstorage for toggle

* fix lint

* add check
2021-04-15 22:03:46 -07:00
Lily Kuangandsamtfm df7e2b6a8e feat(alert/report): chart as csv format attachment for email and slack (#13828)
* add ui for setting report format

* refactor default notification format

* init csv data alert report

* add report format to report_schedule model

* add ALERTS_ATTACH_REPORTS feature flag

* fix lint

* update check image tag

* fix migrations

Co-authored-by: samtfm <sam@preset.io>
2021-04-15 14:07:49 -07:00
Beto Dealmeida 21c6efea67 chore: rename connection errors (#14169) 2021-04-15 10:57:02 -07:00
Beto Dealmeida c1cb3619ab feat: script to benchmark DB migrations (#13561) 2021-04-15 10:55:35 -07:00
Ben Reinhart 3294f77ca5 feat: Add health endpoint to WebSocket server (#14110) 2021-04-15 09:42:01 -07:00
Phillip Kelley-Dotson fbf0149d8b refactor(userInfo): userinfo panel to styled component (#14090)
* migrate component

* fix lint

* remove collapse

* fix test
2021-04-15 09:24:34 -07:00
Lily KuangandErik Ritter 19d2e10aff chore: update RELEASING readme (#14152)
* update releasing readme

* Update RELEASING/README.md

Co-authored-by: Erik Ritter <erik.ritter@airbnb.com>

Co-authored-by: Erik Ritter <erik.ritter@airbnb.com>
2021-04-15 08:58:46 -07:00
AAfghahi eadff5f41e feat: invalid DB name error messages (MySQL/Postgres/Redshift) (#14146)
* initial DB custom errors for mysql

* added redshift and postgres
2021-04-15 08:02:47 -07:00
simcha90andVille Brofeldt 8ef572a412 refactor(native-filters): update dataMask and ExtraFormData schema (#13983)
* refactor: updates usage of `ownFilters` to `ownState`

* refactor: update dataMask (final)

* lint: fix lint

* refactor: revert feat

* fix: fix missed chart configuration

* add filter set migration

* apply new changes

* fix migration revision

* update migration

* fix jest mock

* js lint

* fix test types

* update tests and types

* remove append_form_data from tests

* fix findExistingFilterSet tests

* add migration test

Co-authored-by: Ville Brofeldt <ville.v.brofeldt@gmail.com>
2021-04-15 17:43:29 +03:00
Ville Brofeldt 68e11cd47f fix(dashboard): filter set hydration not working (#14129) 2021-04-15 06:09:12 +03:00
AAfghahi f1acb2f974 horizontal scroll (#14140) 2021-04-14 16:31:13 -07:00
Jesse Yang 6755083e3a fix(dashboard): incorrect perm for users with multiple roles (#14148) 2021-04-14 16:04:09 -07:00
Lyndsi Kay Williams 36bd6d8303 feat: FE: Import for Queries II (#14091)
* Copied changes over

* Tests passing

* Import testing complete
2021-04-14 16:02:35 -07:00
Beto Dealmeida 21f973f0bd feat: error messages when connecting to MSSQL (#14093)
* feat: error messages when connecting to MSSQL

* Address comments
2021-04-14 10:57:58 -07:00
krsnik93androot ef1f048d81 feat: add Echarts gauge chart (#14072)
* feat: echarts gauge chart

* fix

* change plugin order

Co-authored-by: root <root@superset.ikrsnik.devonly.net>
2021-04-14 09:25:26 -07:00
Geido 474f1e2044 test: Add tests for Dashboard Header and HeaderActionsDropdown components (#13973)
* Add tests for HeaderActionsDropdown - WIP

* Fix trigger node

* Add types

* Clean up

* Add tests for Header

* Delete obsolete tests

* Add factory and clean up

* Add opposite case

* Fix file name

* Include latest changes
2021-04-14 06:54:24 -07:00
dependabot[bot] a548b69201 build(deps): bump urijs from 1.19.4 to 1.19.6 in /superset-frontend (#13393)
Bumps [urijs](https://github.com/medialize/URI.js) from 1.19.4 to 1.19.6.
- [Release notes](https://github.com/medialize/URI.js/releases)
- [Changelog](https://github.com/medialize/URI.js/blob/gh-pages/CHANGELOG.md)
- [Commits](https://github.com/medialize/URI.js/compare/v1.19.4...v1.19.6)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-13 23:15:27 -07:00
AAfghahi 321db4674d feat: invalid hostname and password error messages (Redshift) (#14111)
* custom errors for redshift

* added unit tests and custom errors
2021-04-13 21:20:47 -07:00
Beto Dealmeida ff71f12fe2 Ad missing __init__.py (#14113) 2021-04-13 21:18:32 -07:00
Michael S. Molina cfe927bebb test: Adds tests for the FixedOrMetricControl component (#13705) 2021-04-13 15:26:31 -07:00
Michael S. Molina c8a794368d refactor: Bootstrap to AntD - ListGroup (#13996)
* refactor: Bootstrap to AntD - ListGroup

* Improves theme handling on touched files
2021-04-13 15:26:02 -07:00
AAfghahi b77477a9dd feat: invalid hostname and password error messages (MySQL) (#14089)
* custom errors for mySQL

* initial custom errors and tests for MySQL

* revisions
2021-04-13 14:42:31 -07:00
dependabot[bot] 353038e59e build(deps): bump socket.io from 2.3.0 to 2.4.1 in /docs (#12636)
Bumps [socket.io](https://github.com/socketio/socket.io) from 2.3.0 to 2.4.1.
- [Release notes](https://github.com/socketio/socket.io/releases)
- [Changelog](https://github.com/socketio/socket.io/blob/2.4.1/CHANGELOG.md)
- [Commits](https://github.com/socketio/socket.io/compare/2.3.0...2.4.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-13 14:01:16 -07:00
dependabot[bot] 596938628c build(deps): bump three from 0.68.87 to 0.125.0 in /docs (#13391)
Bumps [three](https://github.com/mrdoob/three.js) from 0.68.87 to 0.125.0.
- [Release notes](https://github.com/mrdoob/three.js/releases)
- [Commits](https://github.com/mrdoob/three.js/commits)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-13 13:10:00 -07:00
dependabot[bot] 4e15e00688 build(deps): bump y18n from 4.0.0 to 4.0.1 in /docs (#13874)
Bumps [y18n](https://github.com/yargs/y18n) from 4.0.0 to 4.0.1.
- [Release notes](https://github.com/yargs/y18n/releases)
- [Changelog](https://github.com/yargs/y18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yargs/y18n/commits)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-13 13:08:15 -07:00
dependabot[bot] 83b8d1bc1b build(deps): bump y18n from 4.0.0 to 4.0.1 in /superset-frontend (#13886)
Bumps [y18n](https://github.com/yargs/y18n) from 4.0.0 to 4.0.1.
- [Release notes](https://github.com/yargs/y18n/releases)
- [Changelog](https://github.com/yargs/y18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yargs/y18n/commits)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-13 13:07:45 -07:00
Jesse Yang 3c88d2542c fix(country-map): update geojson and control layout (#14063) 2021-04-13 10:14:27 -07:00
Hugh A. Miles II 3a011ecc06 chore: stop logging SupersetExceptions if status < 500 (#14088)
* setup exception

* figured out

* Update base.py
2021-04-13 12:52:14 -04:00
simcha90 f453287a07 fix:fix get permission function (#14099) 2021-04-13 09:36:13 -07:00
Lyndsi Kay Williams 6392d41ac9 fix: Fixed saved query export (#14086)
* Fixed saved query export

* Te
sting implemented
2021-04-13 08:09:08 -07:00
Hugh A. Miles II 4b23d0ecca fix: logs table - user_id is NULL (#14057)
* add user back to session

* add test for logging None on exceptions

* fix this updated test

* reformat

* reformat

* Update log.py
2021-04-13 10:08:34 -04:00
Amit MiranandVille Brofeldt 8c5b6b1263 feat(dashboard_rbac): provide data access based on dashboard access (#13992)
* feat: provide data access based onb dashboard access

* chore: adjust code after CR comments

* fix: add brackets

* fix: type

* chore: add tests

* fix: pre-commit

* fix: pre-commit and lint

* fix: fix test

* fix: pre-commit

* fix: fix local pylint warnings

* revert: birth_names pylint  change bc it  affects tests

* Update superset/security/manager.py

Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>

* Update superset/security/manager.py

* Update tests/utils_tests.py

* fix: after CR

* fix: after CR from ville

* chore: update roles description

Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>
2021-04-13 16:23:31 +03:00
Ville Brofeldt 15ac075b78 fix(sqla): labels_expected contains mutated label (#14095) 2021-04-13 16:19:52 +03:00
Amit Miran 9c5264af0d feat(can_share): can share chart and dashboard (#14076)
* feat: share chart  - can_share_chart
share dashboard can_share_dashboard

* fix: pre-commit

* fix: userCanShare tests

* fix: after hugh CR

* fix: adjust after spa refactor
2021-04-13 13:54:14 +03:00
Michael S. Molina b394733ff3 test: Adds tests to the UndoRedoKeyListeners component (#13919) 2021-04-12 23:51:57 -07:00
Michael S. Molina 55257ab48c chore: Adds dataMask reducer to reducerIndex (#13951) 2021-04-12 23:50:20 -07:00
Geido 11869dc076 test: Tests audit for the Dashboard FilterBar (#13916)
* Add FilterBar tests

* Finalize FilterBar tests

* Add tests for FilterBar Header

* Add tests for FilterBar FilterConfigurationLink

* Add tests for FilterBar FilterSets EditSection

* Add tests for FilterBar FilterSets

* Clean up

* Add tests for FilterBar FilterSetUnit

* Add tests for FilterBar FilterSets FiltersHeader

* Add tests for FilterBar FilterSets Footer

* Fix linting

* Fix import

* Fix minor changes

* Fix import

* Add factory and clean up
2021-04-12 23:28:19 -07:00
Yongjie ZhaoandErik Ritter 80da1ca995 fix: unable to apply logging format (#14074)
* fix: unable to apply logging format

* Update superset/app.py

Great!

Co-authored-by: Erik Ritter <erik.ritter@airbnb.com>

Co-authored-by: Erik Ritter <erik.ritter@airbnb.com>
2021-04-13 11:26:34 +08:00
Michael S. Molina 92a66921e0 refactor: Bootstrap to AntD - Slider (#13989) 2021-04-12 16:28:06 -07:00
4bb29b6f04 chore(spa refactor): refactoring dashboard to use api's instead of bootstrapdata (#13306)
* add hook for future async api calls

* test to see conflict

* add async middleware and update reducers

* working async dashboard load

* implement getcharts api

* add user permissions to explore and dashboard bootstrap data

* integrate api calls with getinitial state

* update namings

* accept an id or a slug in the dashboard charts api

* add permissions function

* fix merge

* update state

* get dashboard charts by id or slug

* fix undefined states

* variable names

* stop using some more bootstrap data

* fix metadata reference

* remove unused bootstrap from the template

* add errorboundry to dashboard

* refactoring, fixing

* update permissions

* add just roles

* id is supposed to be a string

* unused vars

* get datasources from api

* make onError optional

* use resource hooks, better error boundary

* add loading state for dashboardroute

* remove console

* add conditional

* more conditionals

* testing out a possible fix for cypress

* convert edit/standalone test to cypress

* remove bootstrappy assertions

* lint

* fix dashboard edit history issue

* rename stuff

* address recent native filters schema change

* remove unused getInitialState

* remove .only from test

* hooksy redux usage

* Revert "more conditionals"

This reverts commit 25c8ed61b4.

* cleanup

* undo unnecessary change

* actually need conditions here

* certainty

* Revert "certainty"

This reverts commit 77dea1915b.

* more permutations (untested yolo)

* Update superset-frontend/src/chart/chartReducer.ts

Co-authored-by: Evan Rusackas <evan@preset.io>

* import style

* comment

* cleaner dashboardInfo

* remove debug code

* use memo for getPermissions

* fix lint

* adjust name/location of DashboardPage

* move logic for REMOVE_SLICE_LEVEL_LABEL_COLORS to DAO

* stop using full_data()

* remove unused (and now useless) json=true query param

Co-authored-by: David Aaron Suddjian <aasuddjian@gmail.com>
Co-authored-by: David Aaron Suddjian <1858430+suddjian@users.noreply.github.com>
Co-authored-by: Evan Rusackas <evan@preset.io>
2021-04-12 16:10:29 -07:00
Phillip Kelley-Dotson 89f5785666 fix(listview): update listview feature flag (#13906)
* update listview feature flag

* remove check
2021-04-12 15:13:16 -07:00
Alex Kreidler 5952d78121 Add docs for configuring Docker Compose setup (#13961) 2021-04-13 01:04:14 +03:00
Beto Dealmeida 786dadc836 feat: invalid password error message (Postgres) (#14038) 2021-04-12 14:03:21 -07:00
Hugh A. Miles II c563ea091e fix: flacky test in test_update_dataset_item_w_override_columns (#14082)
* fix flack test

* fix flack test
2021-04-12 16:45:50 -04:00
Lily Kuang 7980b767c0 feat: Implement Celery SoftTimeLimit handling (#13740)
* log soft time limit error

* lint

* update test
2021-04-12 13:18:17 -07:00
Sam Faber-Manning 911462a148 feat: only send alert error emails to owners of the alert (#13862)
* only send alert error emails to owners of the alert

* reformat long lines

* fix send to owners and add tests

* fix pylint errors

* fix formatting
2021-04-12 08:51:32 -07:00
Sam Faber-Manning 778bb8e540 feat: add descriptions to report emails (#13827)
* add description to report email

* add report description to slack notification

* fix issues caught by linter

* fix long line

* remove extra line

* handle missing descriptions

* run python black

* properly run python black
2021-04-12 08:50:44 -07:00
Kamil Gabryjelski bf22487e23 Make chart exclude itself from cross filtering (#14046) 2021-04-12 14:08:07 +03:00
simcha90 d6bd160250 fix: fix bug when remove chart not removing it's related cross filter data (#14081) 2021-04-12 10:54:31 +03:00
simcha90 468638c5b8 feat(native-filters): Add default first value to select filter (#13726)
* feat: native filters first default value

* fix: fix CR notes

* feat: add support for `Place` type

* refactor: sync with master

* feat: add first value to Select filters

* refactor: fix CR notes

* refactor: updates usage of `ownFilters` to `ownState`

* Revert "refactor: updates usage of `ownFilters` to `ownState`"

This reverts commit 58b91998

* fix: revert mocks

* fix: fix CR notes

* chore: update package json

* chore: update package json

* chore: update package json

* test: fix tests

* fix: fix BE empty metrics

* lint: fix lint

* fix: fix BE empty metrics

* refactor: fix Cr notes
2021-04-12 09:22:33 +03:00
Ben Reinhart 1c6173c7ee feat: Make async query JWT cookie domain configurable (#14007) 2021-04-11 20:33:33 -07:00
Hugh A. Miles II de49f0d2de fix: add exception to catch session not having JWT (#14036) 2021-04-11 16:47:06 -04:00
Tom Vendetta 287bc12e45 Use consistent chart value (#14031) 2021-04-11 09:30:26 +03:00
Hugh A. Miles II a4fd6b8f33 fix: Use superset generic db to catch external_metadata queries (#13974) 2021-04-10 10:15:03 -04:00
Jesse Yang fe08b698f5 docs: update outdated country map tools instructions (#14027)
also add actionable error for country map vis
2021-04-09 15:15:17 -07:00
Bruno MottaandMichael S. Molina 66201e7c55 test: FilterSets-utils (#14028)
* Tests for "nativeFilters/FilterBar/FilterSets/utils"

* Update superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterSets/utils/findExistingFilterSet.test.ts

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterSets/utils/findExistingFilterSet.test.ts

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterSets/utils/generateFiltersSetId.test.ts

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Fix: Lint error

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2021-04-09 15:07:37 -07:00
95ed8735f1 chore: well component to card component(Updating PR #12200) (#14033)
* replace Well componenet with Card component

* Fix lint errors

* Fix lint

* Addressing comments

* Addressing comments

* Fix lint errors

* Exporting Card from index.tsx and adding storybook variants

* Fix some refactoring

* Fix errors

* solving conflicts and lint errors

* Update superset-frontend/src/common/components/Card.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/common/components/Card.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/common/components/common.stories.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/common/components/common.stories.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/common/components/common.stories.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/common/components/common.stories.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/common/components/common.stories.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

Co-authored-by: Nikola Gigic <nik.gigic@gmail.com>
Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2021-04-09 15:06:44 -07:00
Ville Brofeldt bfa6140b15 fix(viz): bump superset-ui 0.17.30 (#14045)
* fix(viz): bump superset-ui 0.17.30

* fix test

* bump react-table to match the version in superset-ui
2021-04-09 20:49:38 +03:00
Bruno Motta ff08d423a9 Tests for ControlItems (#13975) 2021-04-09 09:54:35 -07:00
Bruno MottaandMichael S. Molina 1920811cf2 test: Tabs (#13941)
* Test for Tabs component

* Fix: "creteProps" to "createProps"

* Update superset-frontend/src/dashboard/components/gridComponents/Tabs.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2021-04-09 09:54:16 -07:00
Bruno MottaandMichael S. Molina 011af825a9 test: Tab (#13937)
* Tests for Tab component

* Update superset-frontend/src/dashboard/components/gridComponents/Tab.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/dashboard/components/gridComponents/Tab.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/dashboard/components/gridComponents/Tab.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/dashboard/components/gridComponents/Tab.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/dashboard/components/gridComponents/Tab.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/dashboard/components/gridComponents/Tab.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2021-04-09 09:53:54 -07:00
Erik Ritter 3d357c661c feat: handle chart/data API errors (#14040) 2021-04-09 09:39:02 -07:00
Bruno MottaandMichael S. Molina ec3f8d07f4 test: SliceHeader (#13888)
* tests for SliceHeader

* Update superset-frontend/src/dashboard/components/SliceHeader/SliceHeader.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/dashboard/components/SliceHeader/SliceHeader.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/dashboard/components/SliceHeader/SliceHeader.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2021-04-09 09:14:16 -07:00
Bruno MottaandMichael S. Molina 36f101e500 test: ShareMenuItems (#13860)
* Tests for ShareMenuItems

* Update superset-frontend/src/dashboard/components/menu/ShareMenuItems/ShareMenuItems.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/dashboard/components/menu/ShareMenuItems/ShareMenuItems.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/dashboard/components/menu/ShareMenuItems/ShareMenuItems.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/dashboard/components/menu/ShareMenuItems/ShareMenuItems.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/dashboard/components/menu/ShareMenuItems/ShareMenuItems.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/dashboard/components/menu/ShareMenuItems/ShareMenuItems.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/dashboard/components/menu/ShareMenuItems/ShareMenuItems.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/dashboard/components/menu/ShareMenuItems/ShareMenuItems.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/dashboard/components/menu/ShareMenuItems/ShareMenuItems.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2021-04-09 09:13:05 -07:00
Bruno Motta c0017b3262 Tests for ColumnSelect (#13991) 2021-04-09 09:02:39 -07:00
Hugh A. Miles II fd201fe834 Update CONTRIBUTING.md (#14025) 2021-04-09 11:57:53 -04:00
Bruno FERNANDO 9e03b6d122 feat(helm): add pod and deployment annotations to template (#14030) 2021-04-09 08:09:59 -07:00
Caleb Collins-Parks 2c96c5b341 Fix broken port-forward instructions (#14039)
The pod listens on port 8088, not port 80. Also if you port-forward from the service then you don't have to bother getting the pod name.
2021-04-09 13:17:22 +03:00
John BodleyandJohn Bodley a3b41e2bac fix: Issue 13956 (#13980)
Co-authored-by: John Bodley <john.bodley@airbnb.com>
2021-04-09 15:21:58 +12:00
Elizabeth Thompson 667eb83e33 use dynamic time_grains for schema (#14009) 2021-04-08 13:53:38 -07:00
Beto Dealmeida c60a93db9c feat: add extract_errors to Postgres (#13997)
* feat: add extract_errors to Postgres

* Add unit tests

* Fix lint

* Fix unit tests
2021-04-08 13:24:54 -07:00
Michael S. Molina 784d29b57c chore: Moves Fade component into TableElement (#13458) 2021-04-08 12:56:21 -07:00
AAfghahiandHugh A. Miles II b5e5b3aa62 feat: create backend routes and API for importing saved queries (#13893)
* initial commit

* revisions

* started tests

* added unit tests

* revisions

* tests passing

* fixed api test

* Update superset/queries/saved_queries/commands/importers/v1/utils.py

Co-authored-by: Hugh A. Miles II <hughmil3s@gmail.com>

* Revert "Update superset/queries/saved_queries/commands/importers/v1/utils.py"

This reverts commit 18580aad1e.

Co-authored-by: Hugh A. Miles II <hughmil3s@gmail.com>
2021-04-08 14:20:11 -04:00
Rob DiCiuccioandDavid Aaron Suddjian 806fb73d25 feat(SIP-39): Websocket sidecar app (#11498)
* WIP node.js websocket app

* Load testing

* Multi-stream publish with blocking reads

* Use JWT for auth and channel ID

* Update ws jwt cookie name

* Typescript

* Frontend WebSocket transport support

* ws server ping/pong and GC logic

* ws server unit tests

* GC interval config, debug logging

* Cleanup JWT cookie logic

* Refactor asyncEvents.ts to support non-Redux use cases

* Update tests for refactored asyncEvents

* Add eslint, write READMEs, reorg files

* CI workflow

* Moar Apache license headers

* pylint found something

* adjust GH actions workflow

* Improve documentation & comments

* Prettier

* Add configurable logging via Winston

* Add SSL support for Redis connections

* Fix incompatible logger statements

* Apply suggestions from code review

Co-authored-by: David Aaron Suddjian <1858430+suddjian@users.noreply.github.com>

* rename streamPrefix config

Co-authored-by: David Aaron Suddjian <1858430+suddjian@users.noreply.github.com>
2021-04-08 11:12:03 -07:00
Rob DiCiuccio 6a81a7961c feat: Support feature flag overrides in ephemeral test envs (#14008)
* Add support for feature flag overrides in ephemeral env cmd

* update docs to reference correct config

* Update ephemeral env docs
2021-04-08 11:05:59 -07:00
Jack Fragassi 5dd971eaf5 fix: execution log crashes for logs with no uuid (#13998)
* Fix execution log when no execution id

* Use single quotes

* Pretty
2021-04-08 06:50:23 -07:00
Lyndsi Kay Williams 7697bc297c feat: FE: Export for Queries II (#13981)
* package.lock upgrade

* Copied changes from old PR

* Cleaned up ternaries

* Added export check for VERSIONED_EXPORT feature flag
2021-04-08 09:22:15 -04:00
Daniel Vaz Gaspar 89817d4cee fix(alerts/reports): working timeout with celery kill and logic fix (#13911)
* fix: working timeout with celery kill and logic fix

* add config flags

* fix typo

* fix python lint

* log query time for alerts

* add tests

* fix lint
2021-04-08 11:23:31 +01:00
Ville Brofeldt b427a80a4f fix(sqla): apply sqla type on calculated columns (#14014) 2021-04-08 10:59:26 +03:00
Michael S. Molina b5c95c537c test: Adds tests to the CssEditor component (#13933) 2021-04-07 14:40:24 -07:00
Geido 6c06866583 test: Tests and Storybook entry for the IndeterminateCheckbox Component (#13502)
* Add tests for IndeterminateCheckbox

* Add storybook entry

* Fix linting issue

* Remove mocked icon

* Add jest.fn to mockedProps
2021-04-07 13:34:19 -07:00
Bruno MottaandMichael S. Molina dcb9f7cff1 test: DataTablesPane (#13736)
* Tests for DataTablesPane

* Update superset-frontend/src/explore/components/DataTablesPane/DataTablesPane.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/explore/components/DataTablesPane/DataTablesPane.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/explore/components/DataTablesPane/DataTablesPane.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Using factory for props

* replacing "data-test"

* removing "act" from tests and fix error

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2021-04-07 11:35:27 -07:00
Bruno MottaandEvan Rusackas 284402c583 test: AdhocMetricEditPopover (#13787)
* tests for AdhocMetricEditPopover

* replace "factoryProps" for "createProps"

* removing unnecessary if

* Update superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/AdhocMetricEditPopover.test.tsx

Co-authored-by: Evan Rusackas <evan@preset.io>

* Update superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/AdhocMetricEditPopover.test.tsx

Co-authored-by: Evan Rusackas <evan@preset.io>

* Update superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/AdhocMetricEditPopover.test.tsx

Co-authored-by: Evan Rusackas <evan@preset.io>

* Update superset-frontend/src/explore/components/controls/MetricControl/AdhocMetricEditPopover/AdhocMetricEditPopover.test.tsx

Co-authored-by: Evan Rusackas <evan@preset.io>

Co-authored-by: Evan Rusackas <evan@preset.io>
2021-04-07 10:34:29 -07:00
Geido cc075f23ef test: Tests and Storybook entry for the TableView Component (#13501)
* Refactor TableView tests

* Add more tests

* Add storybook entry

* Remove unnecessary control
2021-04-07 10:33:55 -07:00
Yongjie Zhao f06d53455c fix: annotation modal dateRangePicker saved invalid value (#13969) 2021-04-07 22:02:29 +08:00
Yongjie ZhaoandMichael S. Molina e3efaba775 test: prevent flaky frontend unit test case (#13984)
* test: prevent flaky unit test case

* Update superset-frontend/spec/javascripts/datasource/ChangeDatasourceModal_spec.jsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2021-04-07 20:08:04 +08:00
Yongjie Zhao 56dc74e09f fix: Pie chart not displayed in viz (#13987) 2021-04-07 17:08:24 +08:00
Beto Dealmeida a82d72fef6 feat: initial work to make v1 API compatible with SIP-40 and SIP-41 (#13960)
* WIP

* Use errorhandler

* Add response schema

* Fix status on HTTPException

* s/found/encountered/g

* Fix test

* Fix lint

* Fix lint and test
2021-04-06 22:06:32 -07:00
Bruno Motta 1638e6e932 test: exploreUtils (#13719)
* Tests for exploreUtils

* removing eslint-disable

* applying factory

* Removing skip tests and code comments.

* Improving test name

* remove comments

* Improving "shouldUseLegacyApi" tests

* fixing typo
2021-04-06 21:35:34 -07:00
Michael S. Molina 4602ead10c test: Adds tests to the filter scope components (#13887) 2021-04-06 21:31:35 -07:00
Beto Dealmeida 3b11654c5a fix: import dataset/dashboard empty keys (#13979) 2021-04-06 20:55:15 -07:00
Bruno Motta ab0f5e3087 test: PropertiesModal (Dashboard) (#13931)
* Tests for PropertiesModal (Dashboard)

* fix: fetchMock
2021-04-06 14:00:35 -07:00
34991f5fab fix(explore): strip semicolons in virtual table SQL (#13801)
* add method to strip semicolon

* address comments

* test the test

* Update tests/sqla_models_tests.py

Co-authored-by: Jesse Yang <jesse.yang@airbnb.com>

* Update tests/sqla_models_tests.py

Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>

* fix test

* add suggestion

* fix trailing space

* remove logger

* fix unit test

Co-authored-by: Jesse Yang <jesse.yang@airbnb.com>
Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>
2021-04-06 13:40:34 -07:00
Geido c0888dc16d Add tests for FilterBar CascadeFilterControl (#13950) 2021-04-06 11:15:17 -07:00
AAfghahi 7fb138381f fix: Data table z index in sql Editor (#13972) 2021-04-06 12:42:48 -04:00
Alex Simoes 8b9c142e2b updates load_examples to load-examples (#13897) 2021-04-06 15:30:50 +08:00
Grace Guo 4b29789b64 fix: null exception from adhoc metric popover (#13955) 2021-04-06 13:36:59 +08:00
Octavian f3becbeb4f Use the right variable for Celery results in Redis (#13936) 2021-04-06 10:06:46 +08:00
Octavian 09f68c9c7b Update docs to use the newer WEBDRIVER_TYPE name (#13934) 2021-04-06 10:00:27 +08:00
Jesse Yang b9e601487a chore: bump @superset-ui/plugin-chart-table to 0.17.28 (#13953)
* chore: bump @superset-ui/plugin-chart-table to 0.17.28

* Bump chrono-node
2021-04-06 09:55:35 +08:00
AAfghahiandElizabeth Thompson f19f2c3ac8 fix: Floating Menu in SQL Left Bar (#13858)
* floating table git issue

* made changes

* floating table git issue

* made changes

* long table names

* floating table git issue

* made changes

* floating table git issue

* made changes

* long table names

* floating table git issue

* made changes

* floating table git issue

* made changes

* long table names

* table values

* aligned

* active key

* changed to customStyle

* update dropdown styles

Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
2021-04-05 15:54:28 -07:00
Hugh A. Miles IIandlyndsiWilliams d006178c03 refactor: move CTAS/CVAS field II (#13877)
Co-authored-by: lyndsiWilliams <kcatgirl@gmail.com>
2021-04-05 16:57:40 -04:00
Bruno MottaandMichael S. Molina d489d0018c test: SliceHeaderControls (#13895)
* tests for SliceHeaderControls

* Update superset-frontend/src/dashboard/components/SliceHeaderControls/SliceHeaderControls.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/dashboard/components/SliceHeaderControls/SliceHeaderControls.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/dashboard/components/SliceHeaderControls/SliceHeaderControls.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/dashboard/components/SliceHeaderControls/SliceHeaderControls.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* fix lint error

* Improving accessibility

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2021-04-05 13:34:06 -07:00
Geido fa1e028974 Add dedicated dir and storybook (#13553) 2021-04-05 13:11:50 -07:00
Hugh A. Miles II f291ba05c6 fix: SQL -> Explore Overwrite flow (#13946) 2021-04-05 14:52:04 -04:00
Sam Faber-Manning 31b14dcc88 fix: log exceptions for thumbnail generation as warnings (#13737)
* log errors for thumbnail generation as warnings

* fix: ex_info -> exc_info
2021-04-05 11:43:51 -07:00
Bruno Motta 592c566bb4 test: PropertiesModal (#13818)
* Tests for test-PropertiesModal

* finish fetchMock to solve conflicts

* clean fetchMock
2021-04-05 11:24:10 -07:00
Bruno MottaandMichael S. Molina 203512e189 test: CrossFilterScopingForm (#13875)
* tests for CrossFilterScopingForm

* Update superset-frontend/src/dashboard/components/CrossFilterScopingModal/CrossFilterScopingForm/CrossFilterScopingForm.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/dashboard/components/CrossFilterScopingModal/CrossFilterScopingForm/CrossFilterScopingForm.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/dashboard/components/CrossFilterScopingModal/CrossFilterScopingForm/CrossFilterScopingForm.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2021-04-05 11:16:04 -07:00
Bruno Motta 12982ef387 tests for FilterIndicator (#13873) 2021-04-05 11:14:30 -07:00
Bruno Motta f2d65989ab Tests for DetailsPanel (#13872) 2021-04-05 11:13:15 -07:00
GeidoandMichael S. Molina 9a4de232a7 test: Enhance tests and directory structure for FilterControl components (#13745)
* Enhance directory structure

* Enhance paths

* Move AdhocFilter

* Add AdhocFilterPopoverTrigger tests

* Move import

* Enhance AdhocFilterOption tests

* Linting

* Fix linting

* Update superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterOption/AdhocFilterOption.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/explore/components/controls/FilterControl/AdhocFilterOption/index.jsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Enhance

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2021-04-05 11:05:35 -07:00
Michael S. Molina 61129f749f test: Adds tests to the TimeSeriesColumnControl component (#13712) 2021-04-05 11:04:58 -07:00
Bruno Motta 7e394e556a test: FilterBoxItemControl (#13753)
* Tests for FilterBoxItemControl

* factory for props

* fix lint
2021-04-05 11:00:20 -07:00
Bruno Motta 555d7bbb35 test: CollectionControl (#13656)
* Tests for CollectionControl

* add role to icon

* applying factory to props
2021-04-05 10:52:24 -07:00
Michael S. Molina 35f33e8276 test: Adds storybook to Dropdown and DropdownButton components (#13482) 2021-04-05 10:48:59 -07:00
simcha90 e06290663a fix(colors): fix color schemes (#13945)
* fix: fix color schemes

* fix: tests case
2021-04-04 15:53:21 +03:00
Elizabeth Thompson abd4051f7a catch collapse onchange (#13927) 2021-04-03 00:00:34 -07:00
ʈᵃᵢ 541d23bbd1 fix: enable installing docker/requirements-local.txt in docker-compose-non-dev.yml (#13926) 2021-04-02 19:06:30 -06:00
Bruno Motta e829aa52eb Tests for "CrossFilterScopingModal/utils" (#13876) 2021-04-02 17:06:42 -07:00
David Aaron Suddjian e640b7f0e0 chore(dashboard): Datasource -> Dataset (#13939)
* chore(dashboard): Datasource -> Dataset

* lint

* more renaming datasource -> dataset
2021-04-02 16:47:16 -07:00
Michael S. Molina a0a00e6470 test: Adds tests to the PublishedStatus component (#13892) 2021-04-02 14:26:06 -07:00
AAfghahi 4187d9e4c4 fix: adjusted tab height (#13822) 2021-04-02 12:44:45 -04:00
Amit Miran f6f412b4ae chore: bump to new superset-ui version (#13932) 2021-04-02 18:27:10 +03:00
Stanislav SimovskiandStanislav Simovski 1d8d0675e6 fix: do not run containers as root by default in Helm chart (#13917)
* Helm: no running as root by default

* Maintain for backwards compatibility

Reverted uid and script to work same way as they previously did to maintain backwards compatibility.
Added clarification in comments that this is not a recommended production configuration.

Co-authored-by: Stanislav Simovski <stanislav.simovski@elisa.fi>
2021-04-02 07:29:16 -07:00
Jesse Yang 65940770ac feat(explore): adhoc column formatting for Table chart (#13758) 2021-04-01 23:28:42 -07:00
Jesse Yang 4789074309 fix(sqla-query): order by aggregations in Presto and Hive (#13739) 2021-04-01 18:10:17 -07:00
Lily Kuangandsamtfm 762101018b feat(alert/report): add ALERTS_ATTACH_REPORTS feature flags + feature (#13894)
* Add a feature flag ALERTS_ATTACH_REPORTS

* update test

* update feature flag

* add comment for feature flag

* add unit tests for alerts with attachments disabled

* fix lint

Co-authored-by: samtfm <sam@preset.io>
2021-04-01 13:06:45 -07:00
Michael S. Molina a1442497d4 test: Fixes PropertiesModal_spec (#13548) 2021-04-01 11:42:14 -07:00
Étienne Boisseau-Sierra 73a2cc322a fix: Pin Prophet dependency after breaking changes (#13852)
Prophet is heavily dependent on Pystan:
https://facebook.github.io/prophet/docs/installation.html

Pystan has recently (2021-03-25) release its v3.0.0.

This release is not backward compatible and breaks fbprophet:
https://github.com/facebook/prophet/issues/1856

(Indeed, fbprophet 0.6 specifies `pystan>=2.14` — but doesn't restrict
upgrading to next major release:
https://github.com/facebook/prophet/blob/0.6/python/requirements.txt#L3)

So we need to pin pystan to the lastest non 3.x release, while fbprophet
fixes the dependency on their side.

We have taken this opportunity to bump fbprophet too to its next minor
version.

Signed-off-by: Étienne Boisseau-Sierra <etienne.boisseau-sierra@unipart.io>
2021-04-02 00:42:29 +08:00
Michael S. Molina 42c7e2cae6 test: Adds tests to dnd controls (#13650) 2021-04-01 09:11:33 -07:00
Michael S. Molina bb677b8ef1 test: Adds tests to the AnnotationLayer component (#13748) 2021-04-01 09:10:42 -07:00
Geido 9156f089ff test: Refactor and enhance tests for the Explore DatasourcePanel Component (#13799)
* Refactor and enhance tests

* Fix linting issues
2021-03-31 23:14:51 -07:00
Geido a5c4db3aee Add tests (#13778) 2021-03-31 23:08:56 -07:00
Bruno MottaandMichael S. Molina 1dbc1496b2 test: DisplayQueryButton (#13750)
* Tests for DisplayQueryButton component

* add factories to props and fetch-mock

* Update superset-frontend/src/explore/components/DisplayQueryButton/DisplayQueryButton.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/explore/components/DisplayQueryButton/DisplayQueryButton.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2021-03-31 23:08:20 -07:00
Evan Rusackas a7f48c6599 Fixing condition around left margin for dashboard layout. Fixes #13863 (#13905) 2021-03-31 21:32:46 -07:00
Erik Ritter 5315d2cc2d Revert "fix: select table overlay (#13694)" (#13901)
This reverts commit b247279ffe.
2021-03-31 18:47:38 -07:00
Michael S. Molina 6fd62e3f7e test: Adds tests to the OptionControls component (#13729) 2021-03-31 18:07:22 -07:00
Bruno MottaandMichael S. Molina ec5d2f5f32 test: DatasourceControl (#13605)
* Tests for DatasourceControl

* fix: lint error

* Update superset-frontend/src/explore/components/controls/DatasourceControl/DatasourceControl.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/explore/components/controls/DatasourceControl/DatasourceControl.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/explore/components/controls/DatasourceControl/DatasourceControl.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Remove error comment

* replace component data-test

* factory to props

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2021-03-31 17:52:45 -07:00
Bruno Motta 9fd297f636 tests for function handleScroll (#13896) 2021-03-31 17:49:43 -07:00
Michael S. Molina 28fe6e0ef1 test: Adds tests to the CustomFrame component (#13675)
* test: Adds tests to the CustomFrame component

* Replaces full path with relative path
2021-03-31 15:53:07 -07:00
Michael S. Molina 7ae80e9d66 test: Adds tests to the AdvancedFrame component (#13664)
* test: Adds tests to AdvancedFrame component

* Replaces full path with relative path
2021-03-31 15:52:03 -07:00
Bruno MottaandMichael S. Molina 1252fd700e test: DataTableControl (#13668)
* Tests for DataTableControl

* Update superset-frontend/src/explore/components/DataTableControl/RowCount.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/explore/components/DataTableControl/RowCount.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2021-03-31 15:45:30 -07:00
Michael S. Molina 8ddcba82e0 chore: Removes Select duplication (#13477) 2021-03-31 15:42:14 -07:00
Beto Dealmeida 11dd2493b3 feat: create table with long name (#13871) 2021-03-31 11:28:34 -07:00
Ben Reinhart ca506e9396 fix(#13378): Ensure g.user is set for impersonation (#13878) 2021-03-31 11:22:56 -07:00
cccs-jcandcccs-jc 507041e93b docs: Documenting how to debug Flask app (#13813)
Co-authored-by: cccs-jc <cccs-jc@cyber.gc.ca>
2021-03-31 12:12:11 -06:00
Erik Ritter ceb88926ff fix: Check for permissions in FilterBox (#13859) 2021-03-31 10:34:48 -07:00
Hugh A. Miles II d54cc6d82a fix: change status code for generic errors to 400 (#13868)
* change status code for generic errors to 422

* Update exceptions.py
2021-03-31 16:19:15 +08:00
Michael S. Molina 9d6832dc27 test: Adds tests and storybook to CertifiedIcon component (#13457) 2021-03-30 14:31:35 -07:00
Michael S. Molina 3c4591ef15 chore: Moves CheckboxIcons to Checkbox folder (#13459) 2021-03-30 13:55:10 -07:00
Michael S. Molina 6fe4cc0c51 chore: Removes Popover duplication (#13462) 2021-03-30 13:54:53 -07:00
dependabot[bot] 9031e69dc2 build(deps): bump elliptic from 6.5.3 to 6.5.4 in /docs (#13527)
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.3 to 6.5.4.
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.3...v6.5.4)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-03-30 14:18:22 -06:00
Beto Dealmeida ce2760edf7 fix: allow spaces in DB names (#13800) 2021-03-30 10:12:10 -07:00
Rob DiCiuccio f81b746556 chore: Update PR template for SIP-59 DB migrations process (#13855) 2021-03-30 08:54:26 -07:00
Rob DiCiuccio 2a4e4b320c Add CODEOWNERS (#13759) 2021-03-30 08:54:08 -07:00
Jack Fragassi 304e3b36eb feat(alerts & reports): Easier to read execution logs (#13752)
* Prep for migration

* Migration for execution id column

* Generate execution ids for alerts and reports

* Change execution id range

* Add execution id to API endpoint

* Add execution id to execution log view

* Change execution id range

* Change execution id to a uuid

* Fix execution id type

* Switch state and exec. id columns

* Change db column to UUIDType

* Python lint

* Fix failing frontend tests

* execution_id -> uuid

* Fix migration head

* lint

* Use celery task id as the execution id

* lint

* lint for real

* Fix tests
2021-03-30 08:46:16 -07:00
Michael S. Molina 4ae9b819d3 fix: Disallows negative options remaining (#13749) 2021-03-30 08:34:12 -07:00
Eric Anderson 9d0bb3a3ba Fix broken link (#13861)
Currently link goes to: https://superset.apache.org/docs/docs/installation/installing-superset-using-docker-compose
It should go to: https://superset.apache.org/docs/installation/installing-superset-using-docker-compose
2021-03-29 23:11:04 -07:00
Ville Brofeldt 3394421fa8 fix(native-filters): add global async query support to native filters (#13837)
* fix(native-filters): improve loading styles for filter component

* round up fractional grid unit

* fix(native-filters): add support for global async queries

* move form item out of default value component

* move default value hook declaration to form

* delete LoadingBox
2021-03-30 07:50:52 +03:00
Michael S. Molina ac43f4c491 Displays row limit warning with Alert component (#13854) 2021-03-29 17:04:33 -07:00
Will Barrett 84560e8527 fix(errors): Downgrade error on stop query to a warning (#13826) 2021-03-29 13:51:57 -07:00
Jack Fragassi 33f7845010 fix(alerts and reports): Unify timestamp format on execution log view (#13718)
* Unify timestamp format on execution log view

* Fix lint
2021-03-29 13:30:19 -07:00
zuzana-vej 467848d8f7 fix(sqllab): warning message when rows limited (#13841) 2021-03-29 10:47:51 -07:00
Hugh A. Miles II 9f53c6c5bc chore: add success log whenever a connection is working (#13811) 2021-03-29 13:22:09 -04:00
Ville Brofeldt 9fa52b50ed fix(native-filters): improve loading styles for filter component (#13794)
* fix(native-filters): improve loading styles for filter component

* round up fractional grid unit

* remove LoadingBox
2021-03-29 10:23:01 +03:00
Lily Kuang 18ff484186 chore: update change log with cherry-picks for release 1.1 (#13824)
* add 1.1 cherries to change log

* one more cherry
2021-03-26 15:58:27 -07:00
24f805ebc4 feat: added support to configure the default explorer viz (#13610)
* added support to configure the default explorer viz

* code review fix

* lint

Co-authored-by: cccs-jc <cccs-jc@cyber.gc.ca>
Co-authored-by: Ville Brofeldt <ville.v.brofeldt@gmail.com>
2021-03-26 15:27:36 -07:00
Ben Reinhart 55ba47ec2e fix(#13734): Properly escape special characters in CSV output (#13735)
* fix: Escape csv content during downloads

* Reuse CsvResponse object

* Use correct mimetype for csv responses

* Ensure that headers are also escaped

* Update escaping logic
2021-03-26 15:22:00 -07:00
Cemre Mengu 5842cb1b12 chore(git): ignore superset/app/ folder (#13767)
upload generate this folder in the form of /app/static/uploads
2021-03-26 15:14:14 -07:00
David Aaron Suddjian db1d598f50 fix(cypress): avoid referencing detached dom nodes (#13825) 2021-03-26 14:46:31 -07:00
David Aaron SuddjianandPhillip Kelley-Dotson a45a5e1060 chore(cypress): Make the e2e tests more behavior-driven (#13784)
* chore(cypress): make the load dashboard test behavior driven

* remove bootstrap usage from controls test, + new utils

* fix save test to not use bootstrap dat

* remove bootstrap usage from the filter test

* fix race condition

* remove bootstrap from url params test

* fix lint

* remove unused const

* add chart specs for the tab test

* attempt removing bootstrap data from tabs tests

* fix cypress async/sync confusion

* remove redundant assertions

* attempt fixing tab test

* attempt fixing tabs test

* cleanup commented code

* better aliases so you can tell what they are in the logs

* remove unused imports

* get the line chart alias before clicking the tab

* simplify getChartGridComponent

* wait for all the charts before force refresh

* fix tabs test

* one more time with the tabs test

* another edit to tabs test

* fix flaky test

Co-authored-by: Phillip Kelley-Dotson <pkelleydotson@yahoo.com>
2021-03-26 09:20:13 -07:00
Ville Brofeldt 5ae91e2dd8 feat(rls): enable row level security by default (#13772) 2021-03-26 17:40:41 +02:00
Andreas Eberle 3cfeb43878 Add extraSecrets config to allow specifying extra secret files (#13728) 2021-03-26 08:04:21 -07:00
AAfghahi b247279ffe fix: select table overlay (#13694) 2021-03-26 10:39:39 -04:00
AAfghahi 64f967cb2d refactor: New schedule query button (#13797) 2021-03-26 09:56:59 -04:00
Michael S. Molina be8f8d9c1f test: Adds storybook and tests to PopoverDropdown component (#13547)
* test: Adds storybook and tests to PopoverDropdown component

* Changes to use gridUnit and theme hook
2021-03-26 05:29:03 -07:00
Jesse Yang e61f5a924b chore(CI): dont run Hive tests on Py 3.7 (#13757) 2021-03-25 23:03:58 -07:00
Bruno Motta 416f188328 test: SelectAsyncControl (#13638)
* SelectAsyncControl tests

* fix: lint error

* applying factory to  props
2021-03-25 22:07:05 -07:00
Bruno MottaandMichael S. Molina 2aedaaa03e test: DatabaseSelector (#13581)
* Moving DatabaseSelector to a folder

* Tests for DatabaseSelector

* Using factory for props

* Update superset-frontend/src/components/DatabaseSelector/DatabaseSelector.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/components/DatabaseSelector/DatabaseSelector.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update superset-frontend/src/components/DatabaseSelector/DatabaseSelector.test.tsx

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* apply waitFor and remove act

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2021-03-25 22:01:13 -07:00
Elizabeth ThompsonandBeto Dealmeida 086238fb10 feat: sort time grain configs (#13720)
* sort time grain configs

* Fix lint

Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
2021-03-25 18:00:52 -07:00
Geido 930cbea2e1 test: Tests, dedicated directory and Storybook for the ProgressBar component (#13534)
* Move to own dir and add storybook

* Add tests
2021-03-25 15:44:00 -07:00
Ben Reinhart 3ad9c910f9 docs: update setup instructions (#13781) 2021-03-25 15:32:15 -07:00
Ben Reinhart 52b5ea33d7 fix: restart superset container in test script (#13780) 2021-03-25 15:31:50 -07:00
Beto Dealmeida 7c23dfc195 fix: bad copy-and-paste in API spec (#13790) 2021-03-25 13:27:39 -07:00
Phillip Kelley-Dotson 3e4c3bddb9 feat(homescreen and cards): Toggle thumbnails off or on and feature flag (#13683) 2021-03-25 13:21:04 -04:00
AAfghahi 1d5c58d005 refactor: SouthPane into functional component (#13676) 2021-03-24 23:00:12 -04:00
Hugh A. Miles II 71ca5aca5b refactor: Revert "refactor: ScheduleQueryButton into functional component (#134… (#13785)
This reverts commit 2c3d9e9b1e.
2021-03-24 22:50:59 -04:00
Beto DealmeidaandMichael S. Molina fd63ac3687 chore: Update docs for 1.1 (#13732)
* Update docs for 1.1

* Update CONTRIBUTING.md

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update UPDATING.md

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update UPDATING.md

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

* Update UPDATING.md

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>

Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
2021-03-24 19:23:56 -07:00
AAfghahi 2c3d9e9b1e refactor: ScheduleQueryButton into functional component (#13443) 2021-03-24 17:46:24 -04:00
Srini Kadamati 7efe5a8485 docs: added release notes for 1.1 (#13777)
* docs: added release notes for 1.1

* fixed link

* incorporated villes excellent feedback
2021-03-24 10:13:47 -07:00
Hugh A. Miles II 3ea2311b87 chore: Update presto.mdx (#13738) 2021-03-24 13:13:22 -04:00
AAfghahi 6137a200a3 test: changing logger.exception to logger.errors in databases api (#13751) 2021-03-24 13:13:10 -04:00
Ville Brofeldt 5a50120f9c fix(dashboard): rename native filter configuration property (#13769) 2021-03-24 18:47:49 +02:00
Cemre Mengu ff0c9e93c3 feat: use cross-env when running dev-server (#13743)
* feat: use cross-env when running dev-server

* use cross-env for other inline env vars
2021-03-24 09:19:00 -07:00
Cemre Mengu c72c5c735b docs(contributing): fix backend port (#13770)
8080 -> 8088
2021-03-24 09:18:05 -07:00
Yaozong Liuandliuyaozong f18d14a51a fix(explore): make horizontal scroll appears in data panel (#13566)
* fix(explore): make horizontal scroll appear

* fix(explore): 34px -> 33px

* fix(lint): dataTablesPane lint

* fix(lint): prettier dataTablesPane

* fix(explore): use gridUnit rather than hardcode

Co-authored-by: liuyaozong <liuyaozong@baijiahulian.com>
2021-03-24 17:47:57 +02:00
Jesse Yang 9773aba522 fix(CI): use presto docker image from starburst (#13756) 2021-03-23 20:11:58 -07:00
Bruno Motta fd7c9eb71e test: DatasourcePanelDragWrapper (#13627)
* Tests for DatasourcePanelDragWrapper

* Absolute import path
2021-03-23 09:54:06 -07:00
Rob DiCiuccio 452b53092b feat: Refactor asyncEvent middleware and add websocket support (#13696) 2021-03-23 07:23:23 -07:00
김세환 5b79f84e1b chore: Improve Korean translation (#13722)
* chore: Improve Korean translation

* chore: Improve Korean translation
* delete wrong end line

* chore: Improve Korean translation
* delete wrong end line
* apply pre-commit
2021-03-22 17:35:54 -07:00
Phillip Kelley-Dotson bbc306c64f chore(homepage): separate out api calls to make homepage load more dynamically (#13500)
* separate out api calls

* add new loading states

* remove consoles

* update tests

* fix types and lint

* make code more robust and add test

* address comments

* address comments

* fix lint
2021-03-22 15:10:42 -07:00
Andreas Eberle 54b2bda2b0 Use stringData instead of data in Secrets and remove manual base64 encoding (#13730) 2021-03-22 15:02:06 -07:00
ʈᵃᵢ 3e646799a1 fix(datasets): log create exceptions as warning (#13652) 2021-03-22 14:46:18 -07:00
Jack Fragassi 2deb9c294e build: implement codecov carryforward flags (#13677)
* Test small config change for carryforward flags

* redo print statement

* newline

* Remove print statement
2021-03-22 14:21:30 -07:00
simcha90 aa92c1e7eb refactor(native-filters): refactor filter bar (#13723)
* fix: fix removeing native filter

* fix: fix native-cross filters

* fix: fix native-cross filters

* fix: fix native-cross filters

* fix: fix function declaration

* refactor: before pull

* refactor: refactor filter bar

* chore: add lic

* lint: fix lint
2021-03-22 17:03:44 +02:00
Anthony Corletti 6c3bfe80dc docs: update helm documentation (#12932)
* docs: update helm documentation

* docs: fix for end-of-file-fixer pre-commit-config

* update: bump chart apiVersion to v2 and remove requirements.yaml
2021-03-21 14:32:24 -07:00
daefebb49d feat: Make initial user configurable in helm chart (#12862)
* Make initial user configurable in helm chart

* Update helm/superset/values.yaml

Co-authored-by: Amit Miran <47772523+amitmiran137@users.noreply.github.com>

* Update helm/superset/values.yaml

Co-authored-by: Amit Miran <47772523+amitmiran137@users.noreply.github.com>

Co-authored-by: Craig Rueda <craig@craigrueda.com>
Co-authored-by: Amit Miran <47772523+amitmiran137@users.noreply.github.com>
2021-03-20 23:23:05 +02:00
Ville Brofeldt 1a67f1564c fix(cross-filters): only apply filters if ff is set (#13704)
* fix(cross-filters): only apply filters if ff is set

* fix missing parent
2021-03-20 10:56:02 +02:00
Maxime Beauchemin 95a017aa2d feat: add 'extra' column to saved_queries GET (#13662)
This column contains schedule information when the feature flag
`SCHEDULED_QUERIES` is enabled. Adding it here makes it available
through the REST API.
2021-03-19 21:38:06 +02:00
Grace Guo fa072cd74e fix: dashboard filter scope bug (#13695)
* fix: dashboard filter scope bug

* fix comments

* fix function/variables name
2021-03-19 10:39:09 -07:00
Ville Brofeldt 87d1afcc65 fix(cross-filters): expand relevant indicator sections (#13703) 2021-03-19 11:52:03 +02:00
Bruno Motta 375ded92ef test: usePrevious hook (#13554) 2021-03-18 18:30:50 -07:00
AAfghahi ebd4a917f7 refactor: Share sql lab query (#13630) 2021-03-18 17:07:24 -04:00
AAfghahiandElizabeth Thompson df9352f2b4 fix: data column in SQL lab left panel open by default (#13624)
* fix table expand

* Left Panel Expand

* added tests

Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
2021-03-18 13:28:24 -07:00
simcha90 7e6beb5ebf fix(native-filters): fix removing native filter (#13688)
* fix: fix removeing native filter

* fix: fix native-cross filters

* fix: fix native-cross filters

* fix: fix native-cross filters

* fix: fix function declaration
2021-03-18 21:11:50 +02:00
Bruno Motta e6c5bf4d54 test: useChangeEffect (#13555) 2021-03-18 11:50:50 -07:00
Elizabeth Thompson b97bbed2a9 fix: allow option to generate new query (#13488) 2021-03-18 14:42:31 -04:00
Ville Brofeldt ecfcaea803 fix(dashboard): missing parents in directPathToFilter (#13691) 2021-03-18 19:43:41 +02:00
Ville Brofeldt 81b64204c7 fix(cross-filters): add a control panel to range filter (#13692) 2021-03-18 19:43:25 +02:00
Jesse Yang 69a5ed9a1e fix: use FeatureFlags in @superset-ui/core (#13679) 2021-03-18 09:13:50 -07:00
Jesse Yang 08d0deb720 fix: clean up incorrect usage of TypeScript type in PropTypes (#13681) 2021-03-18 09:12:13 -07:00
simcha90 577ecc284f feat(cross-filter): Cross filter badge (#13687) 2021-03-18 17:59:13 +02:00
Daniel Wood 9efe1a44ec feat(helm): Add optional apt-get install to superset_bootstrap.sh (#13678)
* add conditional apt install

* move install switch to correct command.
2021-03-18 08:40:54 -07:00
Ville Brofeldt 13f7e0d755 feat(native-filters): add temporal support to select filter (#13622) 2021-03-18 16:15:43 +02:00
Beto Dealmeida adc247b7e4 feat: add Databricks DB engine spec (#13682) 2021-03-18 09:19:15 +00:00
Lily Kuang 3f2e2c9976 fix(alert|report): allow null on chart and dashboard field (#13680)
* allow null on chart and dashboard field

* update api test
2021-03-18 09:17:50 +00:00
Erik Ritter 64785c20bd feat: add warning metadata to tables and metrics (#13606) 2021-03-17 21:27:34 -07:00
Beto Dealmeida db57f90a34 feat: better error message when adding DBs (#13601)
* WIP

* Adding tests

* Add unit tests

* Show error message

* Fix lint

* Fix after rebase
2021-03-17 20:29:26 -07:00
Rob DiCiuccio 697cdf26b3 Bump pyyaml to latest (#13658) 2021-03-17 14:41:02 -07:00
Kris Stern abf2c87115 Make preliminary suggested changes to CONTRIBUTING.md (#13643) 2021-03-17 14:57:13 -04:00
simcha90 c0fc1ae018 fix(cross-filter): fix scheme py (#13665)
* fix: fix scehme py

* fix: fix scheme py
2021-03-17 19:53:40 +02:00
Lily Kuang 036fc3944d chore: script for changelog (#13588)
* change log with section

* add risk flag for showing risk pull request

* update changlog.md

* lint mypy

* small fixes
2021-03-17 08:55:46 -07:00
Yongjie Zhao 7b74eb2730 chore(explore): added debounce in DateFilter (#13660) 2021-03-17 09:04:50 -06:00
simcha90 0e0c99b2fb feat(cross-filters): Add scoping for cross filters (#13625)
* feat: cross filter modal

* refactor: add charts metadata

* refactor: add charts metadata

* feat: cross filters scoping

* fix: fix CR notes

* test: fix test

* lint: fix lint
2021-03-17 14:00:32 +02:00
Nikola Gigić aa0cd64940 fix(explore): Add int and bool regex pattern (#13621)
* fix postgres regex string for bool and int

* move regex from postgres to bae

* move regex from postgres to base
2021-03-17 11:59:29 +02:00
Maxime Beauchemin 4bdb958ce6 fix: 'Run in SQL Lab' redirect bug (#13657) 2021-03-16 21:47:39 -07:00
Jesse Yang bd1d6acb0c fix(query): order by adhoc metrics should trigger group by (#13434)
* fix(query): properly select adhoc metrics in orderby

* Throw error when sql is empty

* Allow `metrics` to be None

* Always use alias in orderby for metrics

* Bump table chart version and migrate histogram to typescript

* Fix Histogram without groupby

* Fix Presto birth names test

* Raw records mode should not aggregate
2021-03-16 21:00:03 -07:00
Dmytro Mudrovanddmitry.mudrov 72d19b6b35 fix(sqllab): Table name and schema are encoded twice during fetching table metadata on SQL Lab page. (#13636)
Co-authored-by: dmitry.mudrov <dmitrym.mudrov@agileengine.com>
2021-03-16 19:18:08 -07:00
Beto Dealmeida 98a26e7628 fix: Slack dashboard has stale charts (#13655) 2021-03-16 16:40:23 -07:00
Daniel Vaz Gaspar 0819beaedc fix: bump FAB to 3.2.1, SQLAlchemy fix (#13642) 2021-03-16 23:10:34 +00:00
Daniel Wood 65b4be7b51 Fix: Add SASL dependency module (#13608) 2021-03-16 15:42:53 -07:00
Elizabeth Thompson bf424e3351 docs: add file for users to see status of feature flags (#13402)
* add file for users to see status of feature flags

* move comment

* update flags per feedback

* move to subfolder and improve docs

* move CODE_OF_CONDUCT to root
2021-03-16 14:11:17 -07:00
Lily Kuang 21cc49509f chore: improve modal error handling (#13342)
* improve modal error handling

* update hook to handle string error message
2021-03-16 09:33:36 -07:00
Lily Kuang 10d88726db update test (#13463) 2021-03-16 09:33:17 -07:00
Lily Kuang f2c50f62ad fix antd select dropdown issue (#13585) 2021-03-16 09:32:15 -07:00
ʈᵃᵢ 3078c84d40 feat(reports): SLACK_API_TOKEN as callable or str (#13634) 2021-03-16 10:06:29 -06:00
Geido df5fb5a97c test: Tests and dedicated directory for the SupersetResourceSelect Component (#13508)
* Refactor

* Clean up

* Add license

* Use findBy
2021-03-15 16:09:02 -07:00
Daniel Vaz Gaspar 1e88408418 fix: better handle datasource exceptions (#13578)
* fix: handle datasource injected security exception

* add tests

* fix error text on create update dbs

* fix lint

* revert create update message

* fix test

* add sqlalchemy exceptions
2021-03-15 22:46:51 +00:00
Jesse Yang 868e063b03 feat: add ErrorBoundary to chart controls (#13584) 2021-03-15 14:44:18 -07:00
Beto Dealmeida 714d262336 Update UPDATING.md (#13607)
Fix link
2021-03-15 14:37:08 -07:00
Nikola Gigić 335415f5a2 dynamic dttm fix for test_convert_dttm (#13626) 2021-03-15 23:14:50 +02:00
Lily Kuang cd2f53ed7b switch message content between chart and dashboard AlertReportModal (#13537) 2021-03-15 12:00:53 -07:00
Daniel Vaz Gaspar d1e93078f4 fix: delete dataset columns and metrics on the REST API (#13389)
* feat: delete dataset columns and metrics on the REST API

* fix openapi spec

* change delete comparison to id

* delete columns and metrics on their namespace

* add missing licenses

* add failed test

* address comment
2021-03-15 18:14:26 +00:00
ʈᵃᵢ 4de6040d89 fix(dashboard|chart): use correct url for favorite_status and change request type to rison (#13557) 2021-03-15 10:53:16 -06:00
Daniel Wood fc345b9ab1 fix(helm): Add missing extraConfigs template volume mapping and fix type error on template. (#13613)
* Add volume mapping for superset-extra-config

* Fix wrong type for VALUE, cannot use "." inside range.

Fixes Error: template: superset/templates/configmap-superset.yaml:30:16: executing "superset/templates/configmap-superset.yaml" at <.>: wrong type for value; expected chartutil.Values; got string
2021-03-15 08:09:45 -07:00
simcha90andVille Brofeldt a35825de7b feat(filter-set): Filter set edge cases (#13576)
* refactor(native-filters): move data mask to root reducer

* refactor: update rest stuff for dataMask

* refactor: add ownCrrentState to explore

* fix: fix immer reducer

* fix: merge with master

* refactor: support explore dataMask

* refactor: support explore dataMask

* docs: add comment

* refactor: remove json stringify

* fix: fix failed cases

* feat: filter bat buttons start

* fix: fix CR notes

* fix: fix cascade filters

* fix: fix CR notes

* refactor: add clear all

* fix: fix CR notes

* fix: fix CR notes

* fix: fix CR notes

* feat: buttons in filter bar

* lint: update imports

* feat: add tabs for filter sets

* feat: add buttons to filter set

* feat: first phase add filter sets

* fix: undo FF

* refactor: continue filter sets

* fix: fix CR notes

* refactor: header

* fix: fix CR notes

* fix: fix CR notes

* refactor: continue filter sets

* lint: fix lint

* refactor: continue filter sets

* fix: fix filter bar opening

* refactor: continue filter sets

* refactor: continue filter sets

* refactor: continue filter sets

* feat: filters sets history

* feat: filters sets history

* fix: filter set name

* refactor: fix expand filters case

* fix: fix CR notes

* refactor: filter sets

* refactor: filter sets

* refactor: filter sets

* refactor: filter sets

* refactor: update sets

* feat: edit filter set

* refactor: add warning icon

* fix: fix CR notes

* Update superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterSets/EditSection.tsx

Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>

* fix: fix CR notes

* feat: filter set edge cases

* lint: fix lint

* lint: fix TS

* refactor: fix CR notes

* fix: fix CR notes

* fix: fix CR notes

Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>
2021-03-15 14:29:22 +02:00
Kamil Gabryjelski ae66f5fa78 feat(explore): Drag and drop UX improvements (#13598)
* Create a metric immediately when saved metric is dropped

* Display borders around control boxes when metric or column is dragged

* Fix imports

* Display ghost button

* Rename placeholder to ghostButton
2021-03-15 12:47:13 +02:00
Erfan Mirzapour 6b30f55cfd docs: correct sentence (#13611) 2021-03-13 18:57:55 -08:00
Elizabeth Thompson 67ffea8248 fix: always pass a string as a value to ace editor (#13563)
* always pass a string as a value to ace editor

* fix some syntax
2021-03-12 17:09:02 -08:00
Erik Ritter 06d6d7f8e2 fix: ParsedQuery subselect edge case (#13602) 2021-03-12 14:54:02 -08:00
Beto Dealmeida 4fc41e1cce fix: default when adding tab_state.hide_left_bar (#13603) 2021-03-12 13:37:48 -08:00
Beto Dealmeida 6e303f3c12 feat: add more big data for testing (#13586) 2021-03-12 13:02:42 -08:00
Elizabeth Thompson 1835ed02da create better link for badge (#13587) 2021-03-12 13:02:09 -08:00
AAfghahi a0e3754173 feat: create hooks to redux component (#13487)
* created TypedSelector

* made changes

* made discussed changes
2021-03-12 11:03:56 -08:00
İbrahim Ercan de0c6c9c56 Given port in dockerfile set to same port in config (#13570) 2021-03-12 08:13:11 -08:00
Yongjie Zhao 817b740f59 chore: metric refactor iteration 1 (#13596) 2021-03-12 23:11:05 +08:00
Nikola Gigić 609c3594ef feat(explore): Postgres datatype conversion (#13294)
* test

* unnecessary import

* fix lint

* changes

* fix lint

* changes

* changes

* changes

* changes

* answering comments & changes

* answering comments

* answering comments

* changes

* changes

* changes

* fix tests

* fix tests

* fix tests

* fix tests

* fix tests

* fix tests

* fix tests

* fix tests

* fix tests

* fix tests

* fix tests

* fix tests

* fix tests

* fix tests

* fix tests

* fix tests

* fix tests

* fix tests
2021-03-12 10:36:43 +02:00
Yongjie Zhao 1a46f93057 chore(explore): bump superset-ui 0.17.19 (#13593) 2021-03-12 15:16:59 +08:00
Kamil Gabryjelski d439da2fe0 feat: Implement drag and drop for metrics (#13575)
* Convert MetricsControl to functional component

* Implement drag and drop for metrics

* Implement customizable placeholder for DndSelectLabel
2021-03-12 12:31:17 +08:00
David Aaron Suddjian 1b95ed7267 feat(dashboard): dashboard/id/datasets endpoint (#13523)
* feat(dashboard) dashboard/id/datasets endpoint

* schema for dashboard datasets

* list instead of map

* finish dashboard dataset schema

* description

* better test

* add the dataset schema to the schema list

* lint
2021-03-11 17:43:33 -08:00
Jesse Yang 7656b2e68b refactor: convert controlUtils to TypeScript (2 of 2) (#13520) 2021-03-11 17:19:15 -08:00
Beto Dealmeida 1470e70c10 feat: add option to load big/wide tables (#13448)
* WIP

* feat: add option to load big/wide tables

* Fix lint

* Address comments
2021-03-11 17:17:29 -08:00
Ville Brofeldt 901acd936f feat(native-filters): add sort option to select filter (#13569)
* feat(native-filters): add sort option to select filter

* remove from useEffect

* disable flaky cypress tests
2021-03-11 16:49:01 -08:00
Bruno Motta fd4e5c85b2 test: CronPicker (#13549) 2021-03-11 16:12:08 -06:00
Bruno Motta b5ea5d085c test: TableCollection (#13583) 2021-03-11 16:08:16 -06:00
Srini KadamatiandVille Brofeldt bebac5921b feat: add connector for CrateDB (#13152)
* feat: add connector for CrateDB

* added crate

* fix PyPI reference

* add tests

* added more clarity on installing crate

* fix test

Co-authored-by: Ville Brofeldt <ville.v.brofeldt@gmail.com>
2021-03-11 23:03:22 +02:00
Jesse Yang 5fca19da56 build: check potential db migration conflict for open PRs (#13498) 2021-03-10 16:02:52 -08:00
Geido d1f6245bcd test: Tests, dedicated directory and Storybook for the Badge component (#13513)
* Move to dir and add storybook

* Add tests

* Remove no-restricted-imports
2021-03-10 12:29:59 -08:00
Jesse Yang b9884fb55b fix: IS NULL filter operator for numeric columns (#13496) 2021-03-10 10:15:25 -08:00
simcha90 70ccc26421 fix: fix initial filter loading (#13546) 2021-03-10 15:43:39 +02:00
simcha90andVille Brofeldt d509b157fd feat(filter-set): Update existing filter set (#13545)
* refactor(native-filters): move data mask to root reducer

* refactor: update rest stuff for dataMask

* refactor: add ownCrrentState to explore

* fix: fix immer reducer

* fix: merge with master

* refactor: support explore dataMask

* refactor: support explore dataMask

* docs: add comment

* refactor: remove json stringify

* fix: fix failed cases

* feat: filter bat buttons start

* fix: fix CR notes

* fix: fix cascade filters

* fix: fix CR notes

* refactor: add clear all

* fix: fix CR notes

* fix: fix CR notes

* fix: fix CR notes

* feat: buttons in filter bar

* lint: update imports

* feat: add tabs for filter sets

* feat: add buttons to filter set

* feat: first phase add filter sets

* fix: undo FF

* refactor: continue filter sets

* fix: fix CR notes

* refactor: header

* fix: fix CR notes

* fix: fix CR notes

* refactor: continue filter sets

* lint: fix lint

* refactor: continue filter sets

* fix: fix filter bar opening

* refactor: continue filter sets

* refactor: continue filter sets

* refactor: continue filter sets

* feat: filters sets history

* feat: filters sets history

* fix: filter set name

* refactor: fix expand filters case

* fix: fix CR notes

* refactor: filter sets

* refactor: filter sets

* refactor: filter sets

* refactor: filter sets

* refactor: update sets

* feat: edit filter set

* refactor: add warning icon

* fix: fix CR notes

* Update superset-frontend/src/dashboard/components/nativeFilters/FilterBar/FilterSets/EditSection.tsx

Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>

* fix: fix CR notes

Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>
2021-03-10 15:43:24 +02:00
simcha90 1d1a1cdc20 feat(filter-set): Filter set history (#13529)
* refactor(native-filters): move data mask to root reducer

* refactor: update rest stuff for dataMask

* refactor: add ownCrrentState to explore

* fix: fix immer reducer

* fix: merge with master

* refactor: support explore dataMask

* refactor: support explore dataMask

* docs: add comment

* refactor: remove json stringify

* fix: fix failed cases

* feat: filter bat buttons start

* fix: fix CR notes

* fix: fix cascade filters

* fix: fix CR notes

* refactor: add clear all

* fix: fix CR notes

* fix: fix CR notes

* fix: fix CR notes

* feat: buttons in filter bar

* lint: update imports

* feat: add tabs for filter sets

* feat: add buttons to filter set

* feat: first phase add filter sets

* fix: undo FF

* refactor: continue filter sets

* fix: fix CR notes

* refactor: header

* fix: fix CR notes

* fix: fix CR notes

* refactor: continue filter sets

* lint: fix lint

* refactor: continue filter sets

* fix: fix filter bar opening

* refactor: continue filter sets

* refactor: continue filter sets

* refactor: continue filter sets

* feat: filters sets history

* feat: filters sets history

* fix: filter set name

* refactor: fix expand filters case

* fix: fix CR notes

* refactor: filter sets

* fix: fix CR notes

* refactor: filter sets
2021-03-10 11:10:47 +02:00
Richard Nordin 226dd4b907 Fixed KeyError by making kwarg explicit (#13505) 2021-03-10 09:08:28 +02:00
Jesse Yang 9e964f4720 build: ignore Storybook stories in CodeCov (#13421) 2021-03-09 14:45:00 -08:00
Michael S. Molina fc36de2d1f test: Adds tests and storybook to PopoverSection component (#13438)
* test: Adds storybook to PopoverSection component

* test: Adds tests and storybook to PopoverSection component
2021-03-09 12:08:10 -08:00
Michael S. Molina f0a9dccc70 test: Adds storybook and tests to AsyncEsmComponent (#13517) 2021-03-09 12:01:57 -08:00
Michael S. Molina 6d2d3addc2 test: Adds storybook to AlteredSliceTag component (#13516) 2021-03-09 12:01:31 -08:00
Rob DiCiuccio b21d2cfcac build(test env): Shutdown test environments on PR close (#13452)
* Ephemeral env PR close cleanup action

* Add documentation for test envs
2021-03-09 10:19:43 -08:00
Ville Brofeldt 375797f649 feat(native-filters): add timegrain and column filter (#13484)
* feat(native-filters): add timegrain and column filter

* add fetch values predicate

* bump deps

* lint

* fix test

* add python test for legacy merge

* fix default value and isInitialized to not check strict equality

* Address comments

* add FilterValue type

* address review comments
2021-03-09 17:27:46 +02:00
Hugh A. Miles IIandBeto Dealmeida c91c45574b feat: add event_logger to test_connection and create_database commands (#13468)
Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
2021-03-09 08:17:13 -05:00
simcha90 9b8e2555bf feat(filter-set): adding new filters (#13515)
* refactor(native-filters): move data mask to root reducer

* refactor: update rest stuff for dataMask

* refactor: add ownCrrentState to explore

* fix: fix immer reducer

* fix: merge with master

* refactor: support explore dataMask

* refactor: support explore dataMask

* docs: add comment

* refactor: remove json stringify

* fix: fix failed cases

* feat: filter bat buttons start

* fix: fix CR notes

* fix: fix cascade filters

* fix: fix CR notes

* refactor: add clear all

* fix: fix CR notes

* fix: fix CR notes

* fix: fix CR notes

* feat: buttons in filter bar

* lint: update imports

* feat: add tabs for filter sets

* feat: add buttons to filter set

* feat: first phase add filter sets

* fix: undo FF

* fix: fix CR notes

* fix: fix CR notes

* lint: fix lint

* fix: fix filter bar opening

* refactor: continue filter sets
2021-03-09 12:01:37 +02:00
Ville Brofeldt 40fc144bbe ci: increase page size of GH PR API call (#13518) 2021-03-09 08:27:59 +02:00
Michael S. Molina 6e4825165a test: Adds storybook to ConfirmStatusChange component (#13412) 2021-03-08 22:19:56 -08:00
Elizabeth Thompson ec286f27c4 add more documentation around python testing and linting (#13365) 2021-03-08 16:45:37 -08:00
Daniel Vaz Gaspar 139c7878a5 fix(alerts&reports): add celery soft timeout support (#13436)
* fix(alerts&reports): add celery soft timeout support

* make a specific exception for screenshots timeout

* fix docs, add new test
2021-03-08 14:21:18 +00:00
Jesse Yang 49eeab6f55 fix(explore): make sure sort by metric is not duplicated (#13473) 2021-03-07 21:13:54 -08:00
simcha90 f504b7fdd6 feat(native-filters): Filter set tabs (#13507) 2021-03-07 16:03:48 +02:00
Kamil Gabryjelski 7b370e6f17 feat: Implement drag and drop columns for filters (#13340)
* Implement DnD feature for filters

* minor refactor

* Fix types

* Fix undefined error

* Refactor

* Fix ts errors

* Fix conflicting dnd types

* Bump superset-ui packages

* Change DndItemType case to PascalCase

* Remove redundant null check

* Fix

* Fix csrf mock api call
2021-03-07 11:54:08 +02:00
simcha90 3970d7316b feat(native-filters): Update filter bar buttons (#13506)
* refactor(native-filters): move data mask to root reducer

* refactor: update rest stuff for dataMask

* refactor: add ownCrrentState to explore

* fix: fix immer reducer

* fix: merge with master

* refactor: support explore dataMask

* refactor: support explore dataMask

* docs: add comment

* refactor: remove json stringify

* fix: fix failed cases

* feat: filter bat buttons start

* fix: fix CR notes

* fix: fix cascade filters

* fix: fix CR notes

* refactor: add clear all

* fix: fix CR notes

* fix: fix CR notes

* fix: fix CR notes

* feat: buttons in filter bar

* lint: update imports

* test: fix tests
2021-03-07 11:27:22 +02:00
simcha90 45972e9945 refactor(native-filters): Move filtersState to dataMask redux root (#13437) 2021-03-07 09:34:12 +02:00
Michael S. Molina d0714a0972 chore: Moves ChartIcon to own folder (#13454) 2021-03-05 21:23:03 -08:00
Michael S. Molina 0b213bf484 test: Adds tests and storybook to RefreshLabel (#13409) 2021-03-05 21:21:01 -08:00
Michael S. Molina 975dc2fe98 chore: Moves ListView test to component folder (#13324) 2021-03-05 20:52:12 -08:00
Michael S. Molina 095c15a1f1 chore: Moves InfoTooltip component to own folder (#13485) 2021-03-05 20:51:22 -08:00
Michael S. Molina 4284800cf1 test: Adds storybook to Switch component (#13479) 2021-03-05 20:50:01 -08:00
Michael S. MolinaandEvan Rusackas c1e9287cf1 test: Adds storybook to SearchInput component (#13410)
* test: Adds storybook to SearchInput component

* Fixes placeholder text

Co-authored-by: Evan Rusackas <evan@preset.io>

Co-authored-by: Evan Rusackas <evan@preset.io>
2021-03-05 20:48:13 -08:00
Michael S. Molina b6b7982a81 chore: Moves BootstrapSliderWrapper to own folder (#13460) 2021-03-05 20:46:46 -08:00
Hugh A. Miles II c8759a38bf fix: merge 67da9ef1ef9c and 1412ec1e5a7b migrations (#13493) 2021-03-05 19:25:32 -05:00
Hugh A. Miles IIandBeto Dealmeida b17e7aa5c9 feat: refactor on DBEventLogger to allow for context management (#13441)
Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
2021-03-05 15:12:42 -05:00
Beto Dealmeida 8d48d2e37b fix(sqllab): per-tab hide left bar (#13288)
* fix (sqllab): per-tab hide left bar

* Load state when switching tabs
2021-03-05 11:16:11 -08:00
David Aaron Suddjian 491fbd16f7 fix(dashboard): Get dashboard by slug (#13352)
* refactor out id_or_slug filter logic

* fix(dashboard): accept slug in place of id in url

* remove unnecessary show fields

* fixes and tests

* linting

* linter compliance

* change requests

* names
2021-03-05 10:11:21 -08:00
Daniel Vaz Gaspar 94fc5d586e docs: deprecate old alerts and dash/charts reports (#13440)
* docs: deprecated old alerts and dash/charts reports

* revert celery default config

* fix lint
2021-03-05 09:40:08 +00:00
Beto Dealmeida 9fc03f0424 fix: API to allow importing old exports (JSON/YAML) (#13444)
* fix: fix API to allow importing old exports (JSON/YAML)

* Fix test

* Fix lint

* Add description to API schema
2021-03-04 17:18:27 -08:00
Beto Dealmeida 528ea9cbb0 fix: SHOW is not DML (#13464)
* fix: SHOW is not DML

* Fix test
2021-03-04 17:17:25 -08:00
Erik Ritter d2e03ab9b4 fix: Remove view in sql lab from druid datasources (#13469) 2021-03-04 14:54:29 -08:00
Daniel Vaz Gaspar c3c73763d0 fix: url shortener invalid input (#13461)
* fix: url shortner invalid input

* fix lint
2021-03-04 20:46:45 +00:00
Sam Faber-Manning 0318b6d4ae feat: Add error pages (#13144)
* add custom error pages for 404 and 500 responses

* refactor error page styles into separate template

* move error pages to superset-frontend

* fix whitespace on error pages

* refactor error pages to be generated by jinja

* generate static error pages with webpack
2021-03-04 09:58:16 -08:00
Ayan Ginet 483405fff9 chore: Migrating dashboard/components/menu from jsx to tsx (#13361)
* fix: constant icon size

* clean up

* dashboard/components/menu jsx -> tsx

* more types

* package-lock.json sync

* package-lock fix

* fix

* lint fix

* added comment about event type
2021-03-04 08:40:42 -08:00
michellethomasandmichelle_thomas 95809e5e60 Adding v0 import/export fields to dashboard metadata schema (#13425)
Co-authored-by: michelle_thomas <michelle.thomas@airbnb.com>
2021-03-04 08:21:15 -08:00
Holger Stitz 09e5ea1f3d docs: Fix typo in footer (#13455)
The correct spelling is Foundation
2021-03-04 08:19:38 -08:00
Tetsushi Watanabe 6026e7d47a chore: Improve japannese translation (#13376) 2021-03-04 10:22:59 +02:00
simcha90 7f0fbb5b45 refactor: add set data mask to build query (#13417)
* refactor: add set data mask to build query

* refactor: update hooks placement
2021-03-04 10:08:37 +02:00
Yongjie Zhao ca27b00f3a chore: disable drag metrics and columns in datasourcePanel (#13450) 2021-03-04 12:21:57 +08:00
Michael S. Molina cfc83c271c chore: Moves TableSelector tests to component's folder (#13411) 2021-03-03 15:44:36 -08:00
Jesse Yang dc1eb305b1 refactor: convert controlUtils to TypeScript (1 of 2) (#13401) 2021-03-03 14:51:36 -08:00
Elizabeth Thompson 026782eb13 use semver for badge sort (#13424) 2021-03-03 13:32:19 -08:00
Moriah Kreeger 26e36ae484 fix: annotation layer modal err handling (#12341)
* annotation layer modal err handling

* address comments
2021-03-03 11:28:05 -08:00
AAfghahi 66a7318fa2 refactor: Query search into functional component (#13102) 2021-03-03 10:18:14 -05:00
AAfghahi 9c9862ff5b feat: Added Rows Returned (#13190) 2021-03-03 10:17:33 -05:00
Srini Kadamati 26b75fadc4 chore: Added rockset and firebird (#13418)
* added URL rerouting from old alerts & reports page to new one

* edited SQL Server, Rockset, db ordering, and link that Superset logo in left corner takes you to

* added Trino logo and firebird connection string and removed bigquery trailing comma

* added ROckset logo

* changed db list ordering for firebird

* tweaked presnetation of firebird connection string
2021-03-03 08:55:59 -05:00
Mayur 8b38d63b7d changes added (#13431) 2021-03-03 13:52:54 +02:00
simcha90andAmit Miran dc170397c5 feat(dashboard_rbac): manage roles for dashboard (#13145)
* feat(dashboard_rbac): manage roles for dashboard

* test: fix tests

* fix: fix empty roles

Co-authored-by: Amit Miran <47772523+amitmiran137@users.noreply.github.com>
2021-03-03 12:31:41 +02:00
Michael S. Molina 65cec1872d chore: Removes unused Hotkeys component (#13408) 2021-03-02 16:46:51 -08:00
Michael S. Molina 327e9b05c0 test: Adds storybook to FormRow component (#13407) 2021-03-02 16:41:53 -08:00
Michael S. Molina 51f05ea257 test: Adds storybook to AnchorLink component (#13406) 2021-03-02 16:39:04 -08:00
Michael S. Molina c3e19b2cf1 test: Adds storybook to IconTooltip component (#13415) 2021-03-02 16:36:40 -08:00
Michael S. Molina 45aa812cb0 test: Adds storybook to EditableTitle component (#13362) 2021-03-02 16:35:52 -08:00
Michael S. Molina e9d5d3b137 Adds tests and storybook to CopyToClipboard component (#13359) 2021-03-02 16:34:55 -08:00
Geido 7d270bced6 test: ErrorMessage components tests (#13358)
* Add tests for ErrorAlert

* Add BasicErrorAlert tests

* Add DatabaseErrorMessage tests

* Add useRedux property

* Finalize DatabaseErrorMessage tests

* Add ErrorMessageWithStackTrace tests

* Move getErrorMessageComponentRegistry test to dedicated directory

* Clean up getErrorMessageComponentRegistry

* Add IssueCode tests

* Add tests for ParameterErrorMessage

* Add tests for TimeoutErrorMessage

* Fix linting issue
2021-03-02 16:34:10 -08:00
John BodleyandJohn Bodley 694ae6f90e fix(query-object): extra time-range-endpoints (#13331)
Co-authored-by: John Bodley <john.bodley@airbnb.com>
2021-03-03 13:22:07 +13:00
Jesse Yang f2616294e6 chore: convert chartReducer to TypeScript (#13374) 2021-03-02 15:58:30 -08:00
Ville Brofeldt 70e12ed27d chore: bump pyarrow and pandas (#12882)
* bump pyarrow and pandas

* remove df copy
2021-03-02 19:44:53 +02:00
İbrahim ErcanandIbrahim Ercan b04aebfa99 fix(alerts&reports): Alerts & Reports will use values from WEBDRIVER_WINDOW option (#13157)
* fix: thumbnails and reports will be use WEBDRIVER_WINDOW option

* changes reformatted

* config change reverted. thumbnails sizes changed to original

* typo fix

* bugfix

defining defaults in thumbnails.py caused thumbnail caches invalidated.
they moved to init.

Co-authored-by: Ibrahim Ercan <ibrahim.ercan@vlmedia.com.tr>
2021-03-02 10:49:22 +00:00
simcha90andamitmiran137 f19a830d9b refactor(self-trigger): Split native filters state (#13137)
* feat: add cross filters

* refactor: fix CR notes

* lint: fix lint

* lint: fix lint

* feat: POC adding filters set feature

* chore: pre-commit

* refactor: under chage

* lint: fix TS

* fix: fix FF name

* refactor: move to behaviors

* lint: fix lint

* refactor: update state of native filters

* refactor: finish refactor nativeFilter state

* feat: split native filters state

* refactor: refactor Time filter to use new API

* refactor: refactor Time filter to use new API

* refactor: fix CR notes

* fix: fix update values in filter bar

* refactor: save filter sets in meta

* feat(filter-sets): save filters sets in metadata

* refactor: partially fix ts

* refactor: merge conflicts

* refactor: add behaviors property

* refactor: add behaviors property

* fix: undo py changes

* fix: under some changes

* refactor: synx with master

* fix: undo FF

* fix: undo FF

* lint: ts-ignore

* chore: update lock file

* refactor: update enum

* refactor: naming of enum

* test: fix test

* test: update mocks

Co-authored-by: amitmiran137 <amit.miran@nielsen.com>
2021-03-02 09:03:26 +02:00
Yongjie Zhao 488da65986 feat(viz): implement time picker on filter box (#13377)
* refactor(explore): restructure DateFilterControl

* fix UT

* remove datasource props

* remove unused files

* fix DateFilterControl in filterbox over length
2021-03-02 07:50:58 +08:00
Elizabeth Thompson 391d909d1e npm audit security updates (#13367) 2021-03-01 23:51:23 +02:00
Michael S. Molina fd5ce35728 test: Adds storybook to Timer component (#13343) 2021-03-01 12:55:10 -08:00
Michael S. Molina 19c8a62254 chore: Moves OnPasteSelect tests to component's folder (#13338) 2021-03-01 12:54:18 -08:00
Michael S. Molina f91b4388ba chore: Moves FilterableTable test to component folder (#13322) 2021-03-01 12:53:17 -08:00
Geido 5811e3f1ee test: ErrorBoundary dedicated directory and tests (#13276)
* Add tests for ErrorBoundary

* Remove original ErrorBoundary file

* Prefer absolute path
2021-03-01 12:05:24 -08:00
Michael S. Molina a36c8336ec chore: Migrates RefreshChartOverlay into Chart (#13274)
* Migrates RefreshChartOverlay into Chart

* Removes unused Chart width prop
2021-03-01 12:04:16 -08:00
Michael S. Molina 6028a691b7 Improves ButtonGroup tests (#13273) 2021-03-01 11:57:33 -08:00
Jesse Yang 8f09c62c17 build: fix codecov informational config (#13375) 2021-03-01 11:39:40 -08:00
Beto Dealmeida 08183dfe57 feat: add unit test for LimitMethod.FETCH_MANY (#13364) 2021-03-01 10:55:37 -08:00
Geido 36fda5e840 test: FormLabel dedicated directory and tests (#13270)
* Form label directory and tests

* Fix linting

* Remove unnecessary data-test-id
2021-03-01 10:28:32 -08:00
Jesse Yang 3c62069bbb refactor(explore): convert ControlPanelsContainer to typescript (#13221) 2021-02-28 10:10:15 -08:00
Beto Dealmeida 892eef1af6 feat: add Firebird DB engine spec (#13353)
* feat: add Firebird DB engine spec

* Add dep to setup.py

* Fix lint

* Add tests

* Remove uneeded code

* Fix old bug
2021-02-26 12:07:27 -08:00
Bruno Motta f706e6e7a2 test: Tests for OmniContainer (#13305) 2021-02-26 11:21:51 -08:00
Rob DiCiuccio b4ca39ceeb fix(celery): Reset DB connection pools for forked worker processes (#13350)
* Reset sqlalchemy connection pool on celery process fork

* Fix race condition with async chart loading state

* pylint: ignore

* prettier
2021-02-26 08:05:40 -08:00
leocapeandValentin NOURDIN 1697e1e3b1 chore: update docs for new alerts and reporting feature (#13104)
* update docs for new alerts and reporting feature

* fix punctuation

* fix punctuation

* fix punctuation

fix bullets
fix redis depends on name in docker-compose template

* fix bullets

* Add extra steps for getting v1.0.1 running

step added: Upgrade the db
step added: init
step added: setup admin
fix redis superset naming
add . to docker build command

* fix worker to use gevent instead of prefork

change postgres to internal so it persists on docker-compose down

* add comments to superset_config.py

* ref: Re-organize a bit and make it easier to read

* ref: rm useless level

* docs: md changes + more details + kubernetes

* docs: Rename to Alerts and Reports

* docs: Link to Kubernetes doc

* docs: details for docker-compose + minor md changes

* docs: fix lists indent

* docs: remove unused config

* docs: Put detailed config and dockerfile before specific stuff

* docs: clean Dockerfiles

Co-authored-by: Valentin NOURDIN <vnourdin.externe@bedrockstreaming.com>
2021-02-26 10:19:08 -05:00
Yongjie Zhao 1e3130d588 feat(explore): ColumnSelectControl with drag-and-drop (#13210)
* initial dnd

* shift group by items

* lint

* fix shift options

* wip

* wip

* fix shift action

* support scalar dimentions

* control rename to DndColumnSelectControl

* remove unused files

* added feature flag

* ff to False by default

* fix ut

* lint

* improve code smell

* added indicator

* replace value when column is scalcar

* scalar to isArray

* var rename

* minor fix

* update dependence

* minor fix
2021-02-26 16:48:23 +08:00
Bruno Motta f9fc85453e test: Pagination component (#13277)
* Moving Pagination.tsx to the Pagination folder and splitting components into diferent files

* Tests for Pagination components

* replace fireEvent for user-event

* Fix: Pagination references

* Rename PaginationButtonProps file

* Exchanging render imports

* pagination with attribute components

* switch "PaginationButtonProps.ts" to "types.ts"

* remove "Pagination.PaginationWrapper" from ListViewPagination.tsx

* fix: removing PaginationWrapper from tests

* removing data-test-id

* update PaginationProps
2021-02-25 22:36:54 -08:00
LiamandLiam f756518a9e chore: Update OAuth2 configuration guide to match with FlaskAppBuilder (#13332)
* Change helm requirement to bitnami charts

* chore: Fix OAuth2 Configuration to match FAB version

Co-authored-by: Liam <luyen.nv@teko.vn>
2021-02-26 07:05:31 +02:00
Michael S. Molina cd3f5214fa test: Adds tests to TableLoader component (#13299) 2021-02-25 17:23:47 -08:00
Michael S. Molina 7055c05218 Moves AsyncSelect component and tests to own folder (#13314) 2021-02-25 16:00:35 -08:00
Geido f3f37b0229 test: Menu component tests (#13302)
* Add tests for the Menu component

* Clean up and add  NewMenu - SubMenu tests

* Remove obsolete SubMenu test

* Add LanguagePicker tests
2021-02-25 15:51:26 -08:00
Bruno Motta 45cca3a945 test: CacheLabel (#13318)
* add HTMLAttributes on Label Component

* Split TooltipContent

* moving "CacheLabel.jsx" to "CacheLabel" folder

* remove "data-test-id"

* Fix timestamp name

* removing unused file
2021-02-25 15:48:34 -08:00
Bruno Motta abfd3734cf test: tests for component FaveStar (#13320)
* test for FaveStar

* removing comment
2021-02-25 15:47:28 -08:00
Evan Rusackas 33bec57619 chore: migrating some LESS (#13296) 2021-02-25 15:44:58 -08:00
David Aaron Suddjian e11d0cbf44 refactor: Introduce api resource hooks, fetch owners for chart errors (#13218)
* refactor: introduce api resource hooks, fix error owners

* comment

* vestigial comment

* not a function

* clarification

* vestigial comment

* filter the api for a leaner response

* reorganize code, add resource hook catalog

* better names

* implement state management in redux

* Revert "implement state management in redux"

This reverts commit d64d50a99f.

* add tests for hooks
2021-02-25 14:41:35 -08:00
Michael S. Molina 72721845e1 test: Adds tests to URLShortLinkButton component (#13319) 2021-02-25 10:59:36 -08:00
Bruno MottaandJesse Yang 8395b3d6c8 test: Tests for DeleteModal component (#13286)
* tests for DeleteModal component

* fix: test attribute

* removing config from DeleteModal.test.tsx

* re-run tests

* Update superset-frontend/src/components/DeleteModal/DeleteModal.test.tsx

Co-authored-by: Jesse Yang <jesse.yang@airbnb.com>

* Update superset-frontend/src/components/DeleteModal/DeleteModal.test.tsx

Co-authored-by: Jesse Yang <jesse.yang@airbnb.com>

* Update superset-frontend/src/components/DeleteModal/DeleteModal.test.tsx

Co-authored-by: Jesse Yang <jesse.yang@airbnb.com>

* Update superset-frontend/src/components/DeleteModal/DeleteModal.test.tsx

Co-authored-by: Jesse Yang <jesse.yang@airbnb.com>

Co-authored-by: Jesse Yang <jesse.yang@airbnb.com>
2021-02-25 10:56:07 -08:00
AAfghahi 776685736c sql Lab buttons (#13174) 2021-02-25 09:51:48 -08:00
Jesse Yang d39bc14a0b test: optimize codecov config (#13329)
* test: optimize codecov config to let GitHub checks always pass

* Run tests on workflow changes, too
2021-02-25 05:22:34 -08:00
Yongjie Zhao 94d0bb9e7f fix: date picker support date unit with singular and plural (#13330)
* fix: date picker support date unit with singular and plural

* fix grammar
2021-02-25 17:38:23 +08:00
Rob DiCiuccio 970e473d10 Use redis:latest in docker-compose workflow (#13323) 2021-02-25 00:36:19 -08:00
Geido 8ab45c90cc refactor: New Icon system with Enhanced Antd Custom Icon (#12229)
* Enhance custom icon

* Minor fix

* Move DashboardList icon trash icon to enhanced

* Enhance trash icon on lists

* Enhance actions icons card view

* Add storybook entry for custom icons

* Test delete button

* Remove commented line

* Fix linting issue

* Enhance Antd icons

* Enhance existing icons up to BoltSmallRunIcon

* Remove unused import

* Import/Exports all icons from index

* Export all existing icons

* Implement more enhanced icons

* Add data-id on edit buttons

* Fix lint issue

* Inherit color

* Apply original color to actions

* Fix linting issue

* Fix typo

* Change ModeHoriz to MoreHoriz
2021-02-24 19:36:40 -08:00
Daniel Vaz Gaspar 0b114fcbc5 feat(reports): send notification on error with grace (#13135)
* fix: add config to disable dataset ownership on the old api

* fix CI docker build

* fix logic

* add deprecation comment on the config

* feat: send alerts reports errors to recipients

* update

* feat(reports): send notification on error with grace

* merge and revert config

* fix lint and MySQL test

* fix mysql tests
2021-02-24 13:31:31 -08:00
Rob DiCiuccio 27f7d1157f build: Ephemeral environments for PRs via slash command (#13189)
* First pass at ephemeral env, new Docker ci target

* Add service checks, get public IP

* Separate issue_comment and workflow_run jobs

* Refactor workflows

* Adjust comment author association

* Checkout code

* Fix image name, manage service desired task count

* Use merge commit sha

* Fix IP output, add failure comment

* Refactor comment parsing & env spinup

* Check container image publish status

* Parse AWS account ID from registry URL

* Use PR number rather than variable merge commit SHA for image tag

* Fix docker push conditional

* Push multiple tags to ECR

* Fix comment author check

* Refactor comment body check

* Provision service with active task to get correct IP

* /testenv up

* Add @mentions to PR comments, env var cleanup
2021-02-24 10:50:52 -08:00
Amit Miran 29d6420ecc fix: exception when saving dash (#13300)
* fix: project None value

* fix: pre-commit
2021-02-24 12:08:28 +02:00
Ville Brofeldt 0a00153375 feat(chart-data): add rowcount, timegrain and column result types (#13271)
* feat(chart-data): add rowcount, timegrain and column result types

* break out actions from query_context

* rename module
2021-02-24 07:43:47 +02:00
MayurandJesse Yang 6954114f84 feat: add Echarts Graph chart (#13111)
* update preset file

* migration added

* bug fix

* lint

* Update superset/migrations/versions/1412ec1e5a7b_legacy_force_directed_to_echart.py

Co-authored-by: Jesse Yang <jesse.yang@airbnb.com>

* version bump

* bummp dependency

* add package.lock

* merge migrations

* add integration test

* lint

* remove unnecessary params from test

* check key existance in migrations

* test to typescript

* Update graph.test.ts

* fix migration downstream head

* Upgrade to lockfileversion 2

Co-authored-by: Jesse Yang <jesse.yang@airbnb.com>
2021-02-23 16:47:20 -08:00
Bruno Motta 8ef52babfe fix(test): change data-test-id to data-test in FlashProvider (#13304) 2021-02-23 13:20:09 -08:00
Đặng Minh Dũng e8114be99a docs: Connecting to Trino Databases (#13171)
* feat: add trino logo

Signed-off-by: Đặng Minh Dũng <dungdm93@live.com>

* chores: update image links in README.md

Signed-off-by: Đặng Minh Dũng <dungdm93@live.com>

* docs: add Trino Connecting to Databases doc

Signed-off-by: Đặng Minh Dũng <dungdm93@live.com>
2021-02-23 14:32:21 -05:00
Pablo Rodriguez Bertorello 3fbd44ecce chore: update instructions for Pinot in connecting to databases (#12238)
* Update index.mdx

Pinot connection fix

* Update index.mdx
2021-02-23 14:08:53 -05:00
Michael S. Molina 9a05d6afe5 Migrates Collapse component from Bootstrap to AntD (#12920) 2021-02-23 10:24:08 -08:00
Jesse Yang e4a0233181 test: use data-test for testIdAttribute (#13292) 2021-02-23 11:43:35 -06:00
ʈᵃᵢ 75677f42bc fix(listview): preserve bulk selections when view mode is changed (#13284) 2021-02-23 11:17:31 -06:00
Bruno Motta 6297ad7c8b test: Switching FlashProvider to function component & creating tests (#13220) 2021-02-23 10:46:12 -06:00
bolkedebruin 99a0c8a8a1 refactor: Move raise_for_dashboard_access to security manager (#13235)
raise_for_dashboard_access is part of dashboard and cannot
be overridden by a security manager.
2021-02-23 10:52:34 +00:00
Daniel Vaz Gaspar 6e3121268e fix(alerts): Handle None on results (#13289) 2021-02-23 09:50:55 +00:00
Daniel Vaz Gaspar 9e2455aab7 refactor(api): csrf token on the new REST API (#13212)
* refactor(api): csrf token on the new REST API

* improve OpenAPI spec description

* fix test

* remove public role like has default for all tests

* fix test
2021-02-23 09:50:22 +00:00
Rob Spielman e37c2bf8fd fixing chart keys in MultiLineViz (#12937) 2021-02-23 10:40:23 +02:00
Evan Rusackas 8db5d43969 fix: style tweaks for inconsistent button spacing (#13254)
* fix: button margin glitches

* removing unncessary fragment

* removing grid gap

* Revert "removing unncessary fragment"

This reverts commit 659e27348f.
2021-02-22 22:49:59 -08:00
Karol KostrzewaandVille Brofeldt a5a31e0e60 fix schedules tests (#12870)
Co-authored-by: Ville Brofeldt <ville.v.brofeldt@gmail.com>
2021-02-22 22:21:19 -08:00
Jesse Yang af3a46048d fix(home): missing key and invalid dates in Recents cards (#13291) 2021-02-22 20:30:52 -08:00
Jesse Yang c02079278e fix: migration script message formatting issue (#13262) 2021-02-22 18:37:43 -08:00
Karol KostrzewaandVille Brofeldt 974f4476e5 fix reports/commands_tests (#12864)
Co-authored-by: Ville Brofeldt <ville.v.brofeldt@gmail.com>
2021-02-22 14:53:14 -08:00
Moriah Kreeger fc180ab2a6 fix: add alert report timeout limits (#12926)
* prevent working timeout and grace period from being set to negative numbers

* add extra validation

* lint

* fix black

* fix isort

* add js tests

* fix lint + more python schema validation

* add report schema test for timeout limits

* add extra test for null grace period
2021-02-22 11:12:10 -08:00
Michael S. Molina 741219e84d test: add Tests and Storybook for AsyncAceEditor (#13241) 2021-02-22 11:06:23 -08:00
ʈᵃᵢ a646914493 fix(menu): links that result in 404s (#13283) 2021-02-22 12:15:12 -06:00
Lily Kuang 1e2ea36e70 disable redirect when bulk select enabled (#13245) 2021-02-22 09:27:18 -08:00
Victor MalaiandVictor Malai b5379bc8c5 fix(viz): calendar heatmap granularity (#13233)
* fix: add time granularity to heatmap query

* fix: add time granularity to heatmap query

* Add aggregation for druid

* Fix lint

* Fix lint

Co-authored-by: Victor Malai <victormalai@Victors-MacBook-Pro.local>
2021-02-22 16:17:36 +02:00
rijojoseph07andrijojoseph01 efeb5a93e6 feat(presto): add support for user impersonation (#13214)
* changes to support presto impersionation with ldap

* renamed method to match 30 char limit

* import spell check

* added presto impersonation test

* refactored impersionation code to generalize for extension

* moving config_args mutation to the update_connect_args_for_impersonation

* moving config_args mutation to the update_connect_args_for_impersonation

* nits

* refactored update_impersonation_config method name to match lint rule

* reduced comment line length

* black reformats

Co-authored-by: rijojoseph01 <rijo.joseph@myntra.com>
2021-02-22 15:01:33 +02:00
simcha90 9b5e66b728 refactor(native-filters): Refactor filters config modal module (#13268)
* refactor(native-filters): Refactor filters config modal module

* fix: fix import

* lint: fix import
2021-02-22 09:23:38 +02:00
Victor Malai e8d50356a2 Add sort by for dist bar chart (#13049) 2021-02-22 08:36:57 +02:00
Ville Brofeldt 87d6ad28ad chore(viz): bump superset-ui 0.17.10 (#13258) 2021-02-22 08:24:31 +02:00
Ville Brofeldt 15567dd627 ci: always execute tests on non-PRs (#13260) 2021-02-22 08:23:34 +02:00
Victor Malai 73ce2f1ea7 feat: Add sort by metric for charts with multiple metrics (#13057)
* feat: Add sort by metric for pivot-table

* feat(legacy-plugin-chart-parallel-coordinates): subject Add sort by metric

* feat(legacy-plugin-chart-rose-chart): subject Add sort by metric

* feat(legacy-plugin-chart-partition): subject Add sort by metric

* feat(legacy-plugin-chart-paired-t-test): subject Add sort by metric

* feat(legacy-plugin-chart-treemap): subject Add sort by metric

* feat(legacy-plugin-chart-nvd3-area): subject Add sort by metric

* Fix lint

* feat(plugin-chart-horizon): Add sort by & Add no default sorting if checkbox is not selected
2021-02-21 21:59:45 -08:00
Michael S. Molina 42ab57850d Migrate Bootstrap Alert to AntD (#12101) (#12122) 2021-02-21 20:50:18 -08:00
Michael S. Molina 7ee8d114d2 fix: SqlEditor_spec tests (#13186) 2021-02-21 20:49:51 -08:00
Lily Kuang d8bd8ec896 fix(alert/report): alert modal loading dropdown options (#13222)
* alert modal loading

* add ui test
2021-02-22 01:59:33 +00:00
pavlozt 4bc2daf4c1 fix: TimeTable average with nulls calculations (#13122) 2021-02-20 19:46:00 +02:00
Kamil Gabryjelski c1aacde304 fix(explore): Fix downloading as image charts which use Mapbox (#13181)
* Fix downloading as image charts which use Mapbox

* Remove unused prop

* Bump deckgl version
2021-02-20 19:45:03 +02:00
Kamil Gabryjelski 19a60435b0 chore: bump node.js to v14 (#13215)
* Bump node version to v15.8.0

* Update node version in Dockerfile and docker-compose.yml

* Set node version to LTS - v14.15.5

* Bump node version in .nvmrc
2021-02-20 19:42:51 +02:00
Xiang FuandVille Brofeldt 786c12d52d fix: Fixing pinot query generation for date format conversion from python datetime format to java simple date format (#13163)
* Fixing pinot query generation for date format conversion from python datetime format to java simple date format

* Address comments

* fix test

Co-authored-by: Ville Brofeldt <ville.v.brofeldt@gmail.com>
2021-02-20 08:26:34 +02:00
Thinking Chen eea5fe3b60 fix: add the untranslated text content of Chart page, Sql Editor page and some dashboard label in messages.pot (#13123) 2021-02-19 17:54:22 -08:00
Jesse Yang 571b53e9cf refactor: add frontend debounce constants (#13250) 2021-02-19 17:47:44 -08:00
Kamil Gabryjelski 42ff4fc19a fix(explore): Reset values in TextControl only when datasource changes (#13211)
* Reset values in TextControl only when datasource changes

* Fix undefined error
2021-02-19 15:28:49 +02:00
Hugh A. Miles II 85d1e80544 fix: Update display string when sqlalchemy doc config us changed (#13219) 2021-02-18 17:04:13 -05:00
Beto Dealmeida b34c863825 fix: add missing columns (#13216) 2021-02-18 13:27:07 -08:00
Geido 63e4e8a62b test: Tests and Storybook entry for the ModalTriggerComponent (#13213)
* Kickstart tests

* Finalize tests

* Add storybook entry

* Remove unnecessary args types
2021-02-18 10:53:50 -08:00
Amit Miran bcaa484aa9 fix: uncapitalize filter name (#13217) 2021-02-18 20:43:52 +02:00
Geido 66653ef306 test: Tests and Storybook entry for the Popover component (#13176)
* Initial Popover tests

* Add more cases

* Add Popover storybook entry

* Improve storybook entry

* Clean up
2021-02-18 10:18:24 -08:00
Geido 409fc83ca9 chore: Tab title to be empty when creating a new tab (#12773)
* Remove unwanted package lock

* Edit on new and autofocus

* Update test

* Remove autofocus
2021-02-18 10:14:59 -08:00
Michael S. Molina 9335b9c983 Migrates DropdownButton component from Bootstrap to AntD (#13002) 2021-02-18 10:14:21 -08:00
AAfghahi 9489f0b8f4 refactor: HighligthedSQL into functional component with Typescript (#13098) 2021-02-18 13:01:34 -05:00
ʈᵃᵢ aa50161933 chore: add non-dev docker-compose workflow (#13143) 2021-02-18 09:55:15 -08:00
Beto Dealmeida 3d23adec5e chore: use shillelagh instead of gsheetsdb (#13185)
* chore: use shillelagh instead of gsheetsdb

* Fix tests

* Clean up code and remove duplication

* Fix test

* Tighten dep
2021-02-18 09:48:18 -08:00
Hugh A. Miles II 3c58fc5ef5 feat: Move SQLAlchemy url reference to config (#13182) 2021-02-18 12:42:15 -05:00
Yann Jouanique 1e17ef3410 Evaluate configOverrides as templates (#13130) 2021-02-18 07:46:23 -08:00
Connor T. Skennerton 51c90ec013 Fix typo in pyathena connection string (#13201) 2021-02-18 10:38:05 -05:00
simcha90 2ff8741248 feat(filter-sets): Saving filter sets in metadata (#13205)
* feat: POC adding filters set feature

* lint: fix TS

* fix: fix FF name

* refactor: fix CR notes

* fix: fix update values in filter bar

* refactor: save filter sets in meta

* feat(filter-sets): save filters sets in metadata
2021-02-18 15:43:10 +02:00
Bruno Motta f85497e69b test: Adding test and storybook to "Loading" component. (#13179)
* moving Loading.tsx to the Loading folder

* Creating storybook for Loading component

* Creating unit test for Loading component

* fix eof on package.json

* Improving accessibility and interface

* just to run CI again
2021-02-18 00:43:09 -08:00
Michael S. Molina fcd443d366 Creates storybook and tests for Tooltip component (#13184) 2021-02-17 22:51:35 -08:00
Hugh A. Miles II d48b894573 fix: Grab datasets initially onMount (#13160) 2021-02-17 21:12:06 -05:00
Michael S. Molina ad4ca2223e feat: one-click copy chart and dashboard URL (#13037)
Closes #10328
2021-02-17 14:14:08 -08:00
michellethomasandmichelle_thomas 91db008d72 fix: accept null groupby in form data for timeseries table viz (#13086)
* Allowing timeseries table groupby to be null in form data

* Check truthiness for is_group_by

Co-authored-by: michelle_thomas <michelle.thomas@airbnb.com>
2021-02-17 13:45:39 -08:00
Daniel Vaz Gaspar 4c544500a7 fix(api): apply dashboard filter to get dash charts API (#13173)
* fix(api): apply dashboard filter to get dash charts API

* lint
2021-02-17 13:42:07 -08:00
Will Barrett 2d95bfcd99 Ignore database migrations on coverage reports (#13136) 2021-02-17 11:10:54 -08:00
simcha90 5cbe2ac760 feat(filters-set): basic implementation for managing user filter sets (#13031)
* feat: POC adding filters set feature

* lint: fix TS

* fix: fix FF name

* refactor: fix CR notes

* fix: fix update values in filter bar
2021-02-17 21:06:12 +02:00
simcha90 450215549f fix: cross filter functionality (#13178) 2021-02-17 20:59:37 +02:00
David Aaron Suddjian e01015f792 fix: handle lack of dynamic plugins (#13141)
* handle lack of plugins

* clearer logic
2021-02-17 20:08:43 +02:00
Daniel Vaz Gaspar 13a5b439fe feat(alerts): apply SQL limit to all alerts (#13150)
* feat(alerts): apply SQL limit to all alerts

* change limit to 2 and test

* undo mock

* mock, mock and mock

* lint
2021-02-17 18:03:35 +00:00
Daniel Vaz Gaspar 9568985b7b fix: engines that don't support comments (#13153)
* fix: engines that don't support comments

* fix: engines that don't support comments

* add quick inexpensive test

* add test
2021-02-17 18:01:34 +00:00
Lily Kuang e1bb7f4364 fix(alert/report): bulk select mode should be deactivated (#12977)
* close bulk delete when switch between alert and report

* update test for alert/report list
2021-02-17 09:45:00 -08:00
ʈᵃᵢ 6e09156598 fix(sqllab): menu link results in 404 (#13180) 2021-02-17 09:14:30 -08:00
simcha90 ad2aed5a68 fix(native-filters): Apply range filter (#13164)
* refactor: update range build query

* fix: apply range filter filtering

* fix: range resize action

* refactor: fix CR notes
2021-02-17 16:08:33 +02:00
simcha90 9c9becc3d5 fix: correct apply of native filter scopes (#13165) 2021-02-17 11:24:14 +02:00
David Aaron Suddjian 189aced320 refactor: remove deprecated chart.edit_url field from frontend usage (#13142) 2021-02-16 19:54:43 -08:00
Kamil Gabryjelski da478531b2 Fix chart panel overflowing (#13154) 2021-02-17 09:37:35 +08:00
ʈᵃᵢ c787f46f10 perf: add lazy loading along react-router routes and router links in menu (#13087) 2021-02-16 14:48:35 -08:00
ʈᵃᵢ 8b40bf695f style: table sort icon alignment (#13139) 2021-02-16 11:23:40 -08:00
Erik RitterandRob DiCiuccio beee11de0f fix: misspelling Erik Ritter (#13120)
* fix: misspelling Erik Ritter

* Add --all-tags to docker push to account for new default behavior

Co-authored-by: Rob DiCiuccio <rob.diciuccio@gmail.com>
2021-02-16 11:20:23 -08:00
Lily Kuang f10dbbe0ac fix(alert/report): add/edit modal issue (#12955)
* fix alert modal

* add test for edit modal
2021-02-16 11:18:39 -08:00
Kamil Gabryjelski 44723eabbe fix(explore): Certificate icon not displaying for certified metrics (#13133)
* Fix certificate icon not displaying for certified metrics

* Remove redundant function

* Fix grammar mistake
2021-02-16 08:56:19 -08:00
Michael S. Molina 981deaaa22 Change test environment to jsdom (#13149) 2021-02-16 08:48:16 -08:00
Yann JouaniqueandValentin Nourdin 2e93784f86 feat(helm): Helm template for Celery beat (for reporting and alerting) (#13116)
* Custom superset_config.py + secret envs

* Helm template for celery beat

* Fix end of file

* Update helm/superset/values.yaml

Co-authored-by: Valentin Nourdin <valentin.nourdin@lilo.org>

* Rename pods

* Update helm/superset/values.yaml

Co-authored-by: Valentin Nourdin <valentin.nourdin@lilo.org>

* Update helm/superset/templates/deployment-beat.yaml

Co-authored-by: Valentin Nourdin <valentin.nourdin@lilo.org>

* Update helm/superset/templates/deployment-beat.yaml

Co-authored-by: Valentin Nourdin <valentin.nourdin@lilo.org>

* Update helm/superset/templates/deployment-beat.yaml

Co-authored-by: Valentin Nourdin <valentin.nourdin@lilo.org>

* Update helm/superset/templates/deployment-beat.yaml

Co-authored-by: Valentin Nourdin <valentin.nourdin@lilo.org>

* Update helm/superset/templates/deployment-beat.yaml

Co-authored-by: Valentin Nourdin <valentin.nourdin@lilo.org>

* Added Kubernetes documentation

* Data source declarations

Co-authored-by: Valentin Nourdin <valentin.nourdin@lilo.org>
2021-02-16 08:15:21 -08:00
Cheun Hong 94893ff280 feat: Added annotations and loadBalancerIP option in helm service.yaml (#13114)
* added annotations and loadBalancerIP option in helm service.yaml

* Update service.yaml

* Update values.yaml

* Update service.yaml
2021-02-16 08:12:01 -08:00
simcha90 5aa38ef929 feat(native-filters): enable filter indicator and make datasource optional (#13148)
* refactor: continue decouple native filters

* refactor(native-filters): decouple native filter parms from config modal

* lint: fix TS errors

* lint: fix TS errors

* refactor: update filter badge

* refactor: rename ant filters

* test: fix tests

* test: fix tests

* refactor: remove 18 from dataset
2021-02-16 16:12:35 +02:00
Ville Brofeldt 5ab613d89e fix(database): ensure pk_constraint is JSON serializable (#13147) 2021-02-16 12:17:29 +02:00
Ville Brofeldt d8c32b8097 fix(chart-data-api): support numeric temporal columns (#13138) 2021-02-16 09:51:22 +02:00
Jesse Yang c9f76d58f0 chore: upgrade to npm 7 and superset-ui 0.17.9 (#13100) 2021-02-15 09:45:29 -10:00
David Aaron SuddjianandPhillip Kelley-Dotson cc9103b0e2 feat(dashboard): API to get a dashboard's charts (#12978)
* feat(dashboard): get endpoint for a dashboard's charts

* temporary debugging fetch on the frontend

* attempted fixes

* singular -> plural derp

* plural -> singular derp derp

* docstring changes

* change return, no id

* move log above query

* add get_charts to include_route_methods /)_-)

* add get charts api

* result not response

* refactor test helper function to a mixin

* add test for new endpoint

* fix test when running in isolation

* correct comment

* rename test

* more tests, handle dashboard not found

* simplify test to use new helper function

* remove debugging code from frontend

* update docstring

* attempt a doc fix

* add id to api docs

* fix docs

* use pytest fixture

* why oh why does test order matter here, idk

* writing a schema for the endpoint

* more efficient fetching of charts

* testing tweaks

Co-authored-by: Phillip Kelley-Dotson <pkelleydotson@yahoo.com>
2021-02-15 11:41:59 -08:00
Daniel Vaz Gaspar 2e6ea76631 fix(alerts): void query with numeric comparison (#13090)
* fix(alerts): void query with numeric comparison

* remove config changes

* fix tests

* better logic

* fix logic

* fix logic

* Improve test readability
2021-02-15 17:09:47 +00:00
Jesse Yang 613945a200 fix(FilterBox): treat empty defaultValues as null (#13109)
* fix(FilterBox): treat empty defaultValues as null

* Add a unit test and move constant around
2021-02-15 08:35:47 -08:00
Kamil Gabryjelski d0b00bc08f fix: Fix switching viz type to and from Filter box (#13094)
* Fix switching viz_type to and from filter_box

* Remove RESET_FIELDS action

* Restore removed log

* Refactor reducer logic
2021-02-15 08:05:40 -08:00
Đặng Minh Dũng 2dbe92ba2f feat: first step native support Trino (#13105)
* feat: add TrinoEngineSpec

Signed-off-by: Đặng Minh Dũng <dungdm93@live.com>

* feat: add trino into extras_require

Signed-off-by: Đặng Minh Dũng <dungdm93@live.com>

* test: add trino_tests.py

Signed-off-by: Đặng Minh Dũng <dungdm93@live.com>
2021-02-15 14:30:13 +02:00
Victor Malai 24ebf10976 feat: add sort_by_metric for charts with single metric (#13058) 2021-02-15 02:59:50 -08:00
Amit Miran 312cbf736c feat(dashboard_rbac): add support for related roles (#13035) 2021-02-15 10:57:37 +02:00
Jesse Yang 10296651fb build: add more files to .dockerignore (#13113) 2021-02-15 00:04:52 -08:00
Thinking Chenandchenx 5b669b3d79 fix: Add some missing Chinese translation content, including superset-ui project (#13022)
* fix: Add some missing Chinese translation content, including superset-ui project

* fix translation error

* update Time column

Co-authored-by: chenx <yuxiang1989>
2021-02-14 23:03:32 -08:00
Amit Miran d55a040acd feat(native-filters): hide filterBar and toggle icon when in editMode (#13108) 2021-02-14 22:37:48 +02:00
simcha90andamitmiran137 2010e64c94 refactor(native-filters): decouple params from filter config modal (first phase) (#13021)
* refactor: decouple params from filter config modal (first phase)

* refactor: remove unnecessary fields

* refactor: fix CR notes

* fix: fix controlValues

* refactor: fix Cr notes

Co-authored-by: amitmiran137 <amit.miran@nielsen.com>
2021-02-14 10:38:15 +02:00
Ville Brofeldt bc4c837da3 fix(native-filters): set currentValue null when empty (#13000) 2021-02-13 21:01:12 +02:00
Yann Jouanique 6b615c4479 Custom superset_config.py + secret envs (#13096) 2021-02-13 08:39:44 -08:00
Duy Nguyen Hoang 56fca17e62 Update http error code from 400 to 403 (#13061) 2021-02-13 13:32:21 +02:00
simcha90andVille Brofeldt dae1258903 feat(native-filters): add storybook entry for select filter (#13005)
* refactor: update native filters ignores

* refactor: use behaviour variable

* refactor: move story for Filter select

* chore: update dependencies

* lint: fix lint

* remove unnecessary changes

Co-authored-by: Ville Brofeldt <ville.v.brofeldt@gmail.com>
2021-02-13 13:11:18 +02:00
d6fc720f4c feat(native-filters): Time native filter (#12992)
* Add Time Filter component

* Improve Time Filter component

* Fix import errors

* Display Time Filter

* Remove console logs

* Change Control Panel

* Remove unnecessary files

* Use time range override

* test: fix tests

* feat: re run pipeline

* fix: fix some case for Time filter

* fix: merge with master

* use original time range

* fix height

* add cross filter behavior

* apply filters on initialization

* add applied filter to overrides

* add unit tests for merge_extra_form_data

Co-authored-by: Agata Stawarz-Pastewska <agata.stawarz-pastewska@polidea.com>
Co-authored-by: Ville Brofeldt <ville.v.brofeldt@gmail.com>
2021-02-13 12:09:54 +02:00
Yann Jouanique acca3a4431 Force pod restart on config changes (#13056) 2021-02-12 16:30:03 -08:00
simcha90andamitmiran137 956f276e70 feat(cross-filters): add cross filters (#12662)
* feat: add cross filters

* refactor: fix CR notes

* lint: fix lint

* lint: fix lint

* chore: pre-commit

* refactor: under chage

* refactor: move to behaviors

* lint: fix lint

Co-authored-by: amitmiran137 <amit.miran@nielsen.com>
2021-02-12 09:58:19 +02:00
Kamil Gabryjelski 85d02620b7 fix(explore): Enable selecting an option not included in suggestions (#13029) 2021-02-11 23:15:46 -08:00
Michael S. Molina 86807e40b7 Improves RTL configuration (#13079)
- Adds plugin:jest-dom/recommended to ESLint plugins list to enforce tests best practices

- Moves import @testing-library/jest-dom/extend-expect; from setup.ts to testing-library.tsx to avoid matchers collision

- Adds @testing-library/user-event to help simulate users events
2021-02-11 15:32:22 -08:00
Robert H Stolz 870886ca2f Added a note about the ! prefix for breaking changes to CONTRIBUTING.md (#13083) 2021-02-11 15:31:55 -05:00
Jesse Yang 6bc28a087c chore: lock down npm to v6 (#13069) 2021-02-11 10:49:34 -08:00
Daniel Vaz Gaspar fa4c118e2d fix: API tests, make them possible to run independently again (#13076)
* fix: API tests, possible to run independently

* fix workflow name
2021-02-11 18:19:41 +00:00
Daniel Vaz Gaspar 0cf57756f0 fix: add config to disable dataset ownership on the old api (#13051)
* fix: add config to disable dataset ownership on the old api

* fix CI docker build

* fix logic

* add deprecation comment on the config
2021-02-11 18:18:27 +00:00
Moriah Kreeger 7f7e113de2 add required * indicator to message content/notif method (#12931) 2021-02-11 10:17:53 -08:00
Erik Ritter a6df28482e fix: Retroactively add granularity param to charts (#12960)
* fix: Retroactively add granularity param to charts

* Update down revision
2021-02-11 09:54:10 -08:00
Ville Brofeldt ad380fd0f8 fix(ci): multiline regex in change detection (#13075)
* fix(ci): multiline regex in change detection

* fix shellcheck issues
2021-02-11 15:40:44 +02:00
simcha90andamitmiran137 c5781cde60 feat(style): hide dashboard header by url parameter (#12918)
* feat(native-filters): hide dashboard header bu url parameter

* lint: fix lint

* test: add tests

* test: fix test

* refactor: upgrade standalone param

* fix: pre-commit and extract to method is_standalone_mode

* test: fix tests

* test: fix tests

* fix: fix standalone statement

* refactor: fix CR notes

* chore: pre-commit

* fix: fix sticky tabs + update CR notes

* lint: fix lint

* lint: fix lint

* fix: fix CR notes

* fix: fix CR notes

* lint: fix lint

* refactor: fix cr notes

Co-authored-by: amitmiran137 <amit.miran@nielsen.com>
2021-02-11 15:05:35 +02:00
Ville Brofeldt 42c4facb7e fix(explore): pie chart label bugs (#13052) 2021-02-11 11:23:40 +02:00
AAfghahi 6c9f315b77 fix: Disabled state button transition time (#13008)
* button fix

* tooltips disabled when it is disabled, border width changed

* added isDisabled to tooltip

* worked on transition times

* cleaned up transition to be local instead of global

* made it local

* linted

* trying to resolve a conflict
2021-02-10 20:36:33 -08:00
Ville Brofeldt c1e10c4627 fix: sorting by saved metric (#13059) 2021-02-10 21:45:45 +02:00
Daniel Ben-Zion 4183a03542 style: fix typo in documentation (#13063)
* Update README.md

* Update introduction.mdx
2021-02-10 11:33:46 -08:00
Beto Dealmeida 7b8a0e184b fix: timeout context manager on Windows (#13041)
* fix: timeout decorator in Windows

* Fix lint
2021-02-10 10:40:28 -08:00
Beto Dealmeida 249b51bfba fix: vertical scroll in query history (#13042) 2021-02-10 07:31:46 -08:00
Daniel Vaz Gaspar 3e0681b438 fix: UI toast typo (#13026)
* fix: UI toast typo

* translate

* fix error msg
2021-02-10 08:17:54 +00:00
Daniel Vaz Gaspar b3a814fa27 feat(db engines): add support for Opendistro Elasticsearch (AWS ES) (#12602)
* feat(db engines): add support for Opendistro Elasticsearch (AWS ES)

* add time grains

* lint

* bump elasticsearch-dbapi version

* add tests

* fix test
2021-02-10 08:17:27 +00:00
Rob DiCiuccio 1a961022b9 fix(build): black failing on master, add to required checks (#13039)
* fix(build): black failing on master

* Add pre-commit to required checks
2021-02-09 12:44:29 -08:00
1275 changed files with 162124 additions and 32341 deletions
+1
View File
@@ -66,6 +66,7 @@ github:
- cypress-matrix (3, chrome)
- docker-build
- frontend-build
- pre-commit (3.7)
- python-lint (3.7)
- test-mysql (3.7)
- test-postgres (3.7)
+12
View File
@@ -1,11 +1,23 @@
codecov:
notify:
after_n_builds: 4
ignore:
- "superset/migrations/versions/*.py"
- "**/*.stories.tsx"
- "**/*.stories.jsx"
coverage:
status:
project:
default:
informational: true
# Commits pushed to master should not make the overall
# project coverage decrease:
target: auto
threshold: 0%
patch:
default:
informational: true
threshold: 0%
flag_management:
default_rules:
carryforward: true
+8 -2
View File
@@ -15,6 +15,9 @@
# limitations under the License.
#
**/__pycache__/
**/.git
**/.apache_superset.egg-info
**/.github
**/.mypy_cache
**/.pytest_cache
**/.tox
@@ -30,11 +33,14 @@
**/*.pyc
**/*.sqllite
**/*.swp
**/.terser-plugin-cache/
**/.storybook/
**/node_modules/
tests/
docs/
install/
superset-frontend/node_modules/
superset-frontend/cypress/
superset-frontend/cypress-base/
superset-frontend/coverage/
superset/static/assets/
venv
+8
View File
@@ -0,0 +1,8 @@
# Notify all committers of DB migration changes, per SIP-59
# https://github.com/apache/superset/issues/13351
/superset/migrations/ @apache/superset-committers
# Notify Preset team when ephemeral env settings are changed
.github/workflows/ecs-task-definition.json @robdiciuccio @craig-rueda @benjreinhart
.github/workflows/docker-ephemeral-env.yml @robdiciuccio @craig-rueda @benjreinhart
.github/workflows/ephemeral*.yml @robdiciuccio @craig-rueda @benjreinhart
+4 -2
View File
@@ -12,7 +12,9 @@
<!--- HINT: Include "Fixes #nnn" if you are fixing an existing issue -->
- [ ] Has associated issue:
- [ ] Changes UI
- [ ] Requires DB Migration.
- [ ] Confirm DB Migration upgrade and downgrade tested.
- [ ] Includes DB Migration (follow approval process in [SIP-59](https://github.com/apache/superset/issues/13351))
- [ ] Migration is atomic, supports rollback & is backwards-compatible
- [ ] Confirm DB migration upgrade and downgrade tested
- [ ] Runtime estimates and downtime expectations provided
- [ ] Introduces new feature or API
- [ ] Removes existing feature or API
+4 -12
View File
@@ -131,12 +131,7 @@ testdata() {
codecov() {
say "::group::Upload code coverage"
local codecovScript="${HOME}/codecov.sh"
# download bash script if needed
if [[ ! -f "$codecovScript" ]]; then
curl -s https://codecov.io/bash >"$codecovScript"
fi
bash "$codecovScript" "$@"
bash ".github/workflows/codecov.sh" "$@"
say "::endgroup::"
}
@@ -191,11 +186,6 @@ cypress-run-all() {
cypress-run "*/**/*"
# Upload code coverage separately so each page can have separate flags
# -c will clean existing coverage reports, -F means add flags
# || true to prevent CI failure on codecov upload
codecov -cF "cypress" || true
# After job is done, print out Flask log for debugging
say "::group::Flask log for default run"
cat "$flasklog"
@@ -211,8 +201,10 @@ cypress-run-all() {
cypress-run "sqllab/*" "Backend persist"
# Upload code coverage separately so each page can have separate flags
# -c will clean existing coverage reports, -F means add flags
# || true to prevent CI failure on codecov upload
codecov -cF "cypress" || true
codecov -c -F "cypress" || true
say "::group::Flask log for backend persist"
cat "$flasklog"
@@ -0,0 +1,59 @@
name: Check DB migration conflict
on:
push:
paths:
- "superset/migrations/**"
jobs:
check_db_migration_conflict:
name: Check DB migration conflict
runs-on: ubuntu-20.04
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v2
- name: Check and notify
uses: actions/github-script@v3
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
// API reference: https://octokit.github.io/rest.js
const currentBranch = context.ref.replace('refs/heads/', '');
// Find all pull requests to current branch
const opts = github.pulls.list.endpoint.merge({
owner: context.repo.owner,
repo: context.repo.repo,
base: context.ref,
state: 'open',
sort: 'updated',
per_page: 100,
});
const pulls = await github.paginate(opts);
if (pulls.length > 0) {
console.log(`Found ${pulls.length} open PRs for base branch "${currentBranch}"`)
}
for (const pull of pulls) {
const listFilesOpts = await github.pulls.listFiles.endpoint.merge({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: pull.number,
});
const files = await github.paginate(listFilesOpts);
if (
files.some(x => x.contents_url.includes('/contents/superset/migrations'))
) {
console.log(`PR #${pull.number} "${pull.title}" also added db migration`)
await github.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: pull.number,
body:
`⚠️ @${pull.user.login} Your base branch \`${currentBranch}\` has just ` +
'also updated `superset/migrations`.\n' +
'\n' +
'❗ **Please consider rebasing your branch to avoid db migration conflicts.**',
});
}
}
+1903
View File
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,78 @@
name: Push ephmereral env image
on:
workflow_run:
workflows: ["Docker"]
types:
- completed
jobs:
docker_ephemeral_env:
name: Push ephemeral env Docker image to ECR
if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest
steps:
- name: 'Download artifact'
uses: actions/github-script@v3.1.0
with:
script: |
const artifacts = await github.actions.listWorkflowRunArtifacts({
owner: context.repo.owner,
repo: context.repo.repo,
run_id: ${{ github.event.workflow_run.id }},
});
core.info('*** artifacts')
core.info(JSON.stringify(artifacts))
const matchArtifact = artifacts.data.artifacts.filter((artifact) => {
return artifact.name == "build"
})[0];
if(!matchArtifact) return core.setFailed("Build artifacts not found")
const download = await github.actions.downloadArtifact({
owner: context.repo.owner,
repo: context.repo.repo,
artifact_id: matchArtifact.id,
archive_format: 'zip',
});
var fs = require('fs');
fs.writeFileSync('${{github.workspace}}/build.zip', Buffer.from(download.data));
- run: unzip build.zip
- name: Display downloaded files (debug)
run: ls -la
- name: Get SHA
id: get-sha
run: echo "::set-output name=sha::$(cat ./SHA)"
- name: Get PR
id: get-pr
run: echo "::set-output name=num::$(cat ./PR-NUM)"
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-west-2
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
- name: Load, tag and push image to ECR
id: push-image
env:
ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }}
ECR_REPOSITORY: superset-ci
SHA: ${{ steps.get-sha.outputs.sha }}
IMAGE_TAG: pr-${{ steps.get-pr.outputs.num }}
run: |
docker load < $SHA.tar.gz
docker tag $SHA $ECR_REGISTRY/$ECR_REPOSITORY:$IMAGE_TAG
docker tag $SHA $ECR_REGISTRY/$ECR_REPOSITORY:$SHA
docker push -a $ECR_REGISTRY/$ECR_REPOSITORY
+16
View File
@@ -24,3 +24,19 @@ jobs:
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
run: |
.github/workflows/docker_build_push.sh
- name: Build ephemeral env image
if: github.event_name == 'pull_request'
run: |
mkdir -p ./build
echo ${{ github.sha }} > ./build/SHA
echo ${{ github.event.pull_request.number }} > ./build/PR-NUM
docker build --target ci -t ${{ github.sha }} -t "pr-${{ github.event.pull_request.number }}" .
docker save ${{ github.sha }} | gzip > ./build/${{ github.sha }}.tar.gz
- name: Upload build artifacts
if: github.event_name == 'pull_request'
uses: actions/upload-artifact@v2
with:
name: build
path: build/
+3 -3
View File
@@ -21,14 +21,14 @@ SHA=$(git rev-parse HEAD)
REPO_NAME="apache/superset"
if [[ "${GITHUB_EVENT_NAME}" == "pull_request" ]]; then
REFSPEC=$(echo "${GITHUB_HEAD_REF}" | sed 's/[^a-zA-Z0-9]/-/' | head -c 40)
REFSPEC=$(echo "${GITHUB_HEAD_REF}" | sed 's/[^a-zA-Z0-9]/-/g' | head -c 40)
PR_NUM=$(echo "${GITHUB_REF}" | sed 's:refs/pull/::' | sed 's:/merge::')
LATEST_TAG="pr-${PR_NUM}"
elif [[ "${GITHUB_EVENT_NAME}" == "release" ]]; then
REFSPEC=$(echo "${GITHUB_REF}" | sed 's:refs/tags/::' | head -c 40)
LATEST_TAG="${REFSPEC}"
else
REFSPEC=$(echo "${GITHUB_REF}" | sed 's:refs/heads/::' | sed 's/[^a-zA-Z0-9]/-/' | head -c 40)
REFSPEC=$(echo "${GITHUB_REF}" | sed 's:refs/heads/::' | sed 's/[^a-zA-Z0-9]/-/g' | head -c 40)
LATEST_TAG="${REFSPEC}"
fi
@@ -76,5 +76,5 @@ else
# Login and push
docker logout
docker login --username "${DOCKERHUB_USER}" --password "${DOCKERHUB_TOKEN}"
docker push "${REPO_NAME}"
docker push --all-tags "${REPO_NAME}"
fi
@@ -0,0 +1,51 @@
{
"containerDefinitions": [
{
"name": "superset-ci",
"image": "apache/superset:latest",
"cpu": 0,
"links": [],
"portMappings": [
{
"containerPort": 8080,
"hostPort": 8080,
"protocol": "tcp"
}
],
"essential": true,
"entryPoint": [],
"command": [],
"environment": [
{
"name": "SUPERSET_LOAD_EXAMPLES",
"value": "yes"
},
{
"name": "SUPERSET_PORT",
"value": "8080"
}
],
"mountPoints": [],
"volumesFrom": [],
"logConfiguration": {
"logDriver": "awslogs",
"options": {
"awslogs-group": "/ecs/superset-ci",
"awslogs-region": "us-west-2",
"awslogs-stream-prefix": "ecs"
}
}
}
],
"family": "superset-ci",
"taskRoleArn": "ecsTaskExecutionRole",
"executionRoleArn": "ecsTaskExecutionRole",
"networkMode": "awsvpc",
"volumes": [],
"placementConstraints": [],
"requiresCompatibilities": [
"FARGATE"
],
"cpu": "512",
"memory": "1024"
}
@@ -0,0 +1,58 @@
name: Cleanup ephemeral envs (PR close)
on:
pull_request_target:
types: [closed]
jobs:
ephemeral-env-cleanup:
name: Cleanup ephemeral envs
runs-on: ubuntu-latest
steps:
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-west-2
- name: Describe ECS service
id: describe-services
run: |
echo "::set-output name=active::$(aws ecs describe-services --cluster superset-ci --services pr-${{ github.event.number }}-service | jq '.services[] | select(.status == "ACTIVE") | any')"
- name: Delete ECS service
if: steps.describe-services.outputs.active == 'true'
id: delete-service
run: |
aws ecs delete-service \
--cluster superset-ci \
--service pr-${{ github.event.number }}-service \
--force
- name: Login to Amazon ECR
if: steps.describe-services.outputs.active == 'true'
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
- name: Delete ECR image tag
if: steps.describe-services.outputs.active == 'true'
id: delete-image-tag
run: |
aws ecr batch-delete-image \
--registry-id $(echo "${{ steps.login-ecr.outputs.registry }}" | grep -Eo "^[0-9]+") \
--repository-name superset-ci \
--image-ids imageTag=pr-${{ github.event.number }}
- name: Comment (success)
if: steps.describe-services.outputs.active == 'true'
uses: actions/github-script@v3
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
github.issues.createComment({
issue_number: ${{ github.event.number }},
owner: context.repo.owner,
repo: context.repo.repo,
body: 'Ephemeral environment shutdown and build artifacts deleted.'
})
+195
View File
@@ -0,0 +1,195 @@
name: Ephemeral env workflow
on:
issue_comment:
types: [created]
jobs:
ephemeral_env_comment:
if: github.event.issue.pull_request
name: Evaluate ephemeral env comment trigger (/testenv)
runs-on: ubuntu-latest
outputs:
slash-command: ${{ steps.eval-body.outputs.result }}
feature-flags: ${{ steps.eval-feature-flags.outputs.result }}
steps:
- name: Debug
run: |
echo "Comment on PR #${{ github.event.issue.number }} by ${{ github.event.issue.user.login }}, ${{ github.event.comment.author_association }}"
echo "Comment body: ${{ github.event.comment.body }}"
- name: Eval comment body for /testenv slash command
uses: actions/github-script@v3
id: eval-body
with:
result-encoding: string
script: |
const pattern = /^\/testenv (up|down)/
const result = pattern.exec(context.payload.comment.body)
return result === null ? 'noop' : result[1]
- name: Eval comment body for feature flags
uses: actions/github-script@v3
id: eval-feature-flags
with:
script: |
const pattern = /FEATURE_(\w+)=(\w+)/g;
let results = [];
[...context.payload.comment.body.matchAll(pattern)].forEach(match => {
const config = {
name: `SUPERSET_FEATURE_${match[1]}`,
value: match[2],
};
results.push(config);
});
return results;
- name: Limit to committers
if: >
steps.eval-body.outputs.result != 'noop' &&
github.event.comment.author_association != 'MEMBER' &&
github.event.comment.author_association != 'OWNER'
uses: actions/github-script@v3
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
const errMsg = '@${{ github.event.comment.user.login }} Ephemeral environment creation is currently limited to committers.'
github.issues.createComment({
issue_number: ${{ github.event.issue.number }},
owner: context.repo.owner,
repo: context.repo.repo,
body: errMsg
})
core.setFailed(errMsg)
ephemeral_env_up:
needs: ephemeral_env_comment
if: needs.ephemeral_env_comment.outputs.slash-command == 'up'
name: Spin up an ephemeral environment
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
persist-credentials: false
- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: us-west-2
- name: Login to Amazon ECR
id: login-ecr
uses: aws-actions/amazon-ecr-login@v1
- name: Check target image exists in ECR
id: check-image
continue-on-error: true
run: |
aws ecr describe-images \
--registry-id $(echo "${{ steps.login-ecr.outputs.registry }}" | grep -Eo "^[0-9]+") \
--repository-name superset-ci \
--image-ids imageTag=pr-${{ github.event.issue.number }}
- name: Fail on missing container image
if: steps.check-image.outcome == 'failure'
uses: actions/github-script@v3
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
const errMsg = '@${{ github.event.comment.user.login }} Container image not yet published for this PR. Please try again when build is complete.'
github.issues.createComment({
issue_number: ${{ github.event.issue.number }},
owner: context.repo.owner,
repo: context.repo.repo,
body: errMsg
})
core.setFailed(errMsg)
- name: Fill in the new image ID in the Amazon ECS task definition
id: task-def
uses: aws-actions/amazon-ecs-render-task-definition@v1
with:
task-definition: .github/workflows/ecs-task-definition.json
container-name: superset-ci
image: ${{ steps.login-ecr.outputs.registry }}/superset-ci:pr-${{ github.event.issue.number }}
- name: Update env vars in the Amazon ECS task definition
run: |
cat <<< "$(jq '.containerDefinitions[0].environment += ${{ needs.ephemeral_env_comment.outputs.feature-flags }}' < ${{ steps.task-def.outputs.task-definition }})" > ${{ steps.task-def.outputs.task-definition }}
- name: Describe ECS service
id: describe-services
run: |
echo "::set-output name=active::$(aws ecs describe-services --cluster superset-ci --services pr-${{ github.event.issue.number }}-service | jq '.services[] | select(.status == "ACTIVE") | any')"
- name: Create ECS service
if: steps.describe-services.outputs.active != 'true'
id: create-service
env:
ECR_SUBNETS: subnet-0e15a5034b4121710,subnet-0e8efef4a72224974
ECR_SECURITY_GROUP: sg-092ff3a6ae0574d91
run: |
aws ecs create-service \
--cluster superset-ci \
--service-name pr-${{ github.event.issue.number }}-service \
--task-definition superset-ci \
--launch-type FARGATE \
--desired-count 1 \
--platform-version LATEST \
--network-configuration "awsvpcConfiguration={subnets=[$ECR_SUBNETS],securityGroups=[$ECR_SECURITY_GROUP],assignPublicIp=ENABLED}" \
--tags key=pr,value=${{ github.event.issue.number }} key=github_user,value=${{ github.actor }}
- name: Deploy Amazon ECS task definition
id: deploy-task
uses: aws-actions/amazon-ecs-deploy-task-definition@v1
with:
task-definition: ${{ steps.task-def.outputs.task-definition }}
service: pr-${{ github.event.issue.number }}-service
cluster: superset-ci
wait-for-service-stability: true
wait-for-minutes: 10
- name: List tasks
id: list-tasks
run: |
echo "::set-output name=task::$(aws ecs list-tasks --cluster superset-ci --service-name pr-${{ github.event.issue.number }}-service | jq '.taskArns | first')"
- name: Get network interface
id: get-eni
run: |
echo "::set-output name=eni::$(aws ecs describe-tasks --cluster superset-ci --tasks ${{ steps.list-tasks.outputs.task }} | jq '.tasks | .[0] | .attachments | .[0] | .details | map(select(.name=="networkInterfaceId")) | .[0] | .value')"
- name: Get public IP
id: get-ip
run: |
echo "::set-output name=ip::$(aws ec2 describe-network-interfaces --network-interface-ids ${{ steps.get-eni.outputs.eni }} | jq -r '.NetworkInterfaces | first | .Association.PublicIp')"
- name: Comment (success)
if: ${{ success() }}
uses: actions/github-script@v3
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
github.issues.createComment({
issue_number: ${{ github.event.issue.number }},
owner: context.repo.owner,
repo: context.repo.repo,
body: '@${{ github.event.comment.user.login }} Ephemeral environment spinning up at http://${{ steps.get-ip.outputs.ip }}:8080. Credentials are `admin`/`admin`. Please allow several minutes for bootstrapping and startup.'
})
- name: Comment (failure)
if: ${{ failure() }}
uses: actions/github-script@v3
with:
github-token: ${{secrets.GITHUB_TOKEN}}
script: |
github.issues.createComment({
issue_number: ${{ github.event.issue.number }},
owner: context.repo.owner,
repo: context.repo.repo,
body: '@${{ github.event.comment.user.login }} Ephemeral environment creation failed. Please check the Actions logs for details.'
})
+15 -2
View File
@@ -9,14 +9,15 @@ on:
- "docs/**"
jobs:
docs:
name: docs
build-deploy:
name: Build & Deploy
runs-on: ubuntu-20.04
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v2
with:
persist-credentials: false
submodules: recursive
- name: npm install
working-directory: ./docs
run: |
@@ -29,3 +30,15 @@ jobs:
working-directory: ./docs
run: |
npm run build
- name: deploy docs
if: github.ref == 'refs/heads/master'
uses: ./.github/actions/github-action-push-to-another-repository
env:
API_TOKEN_GITHUB: ${{ secrets.SUPERSET_SITE_BUILD }}
with:
source-directory: './docs/public'
destination-github-username: 'apache'
destination-repository-name: 'superset-site'
target-branch: 'asf-site'
commit-message: "deploying docs: ${{ github.event.head_commit.message }} (apache/superset@${{ github.sha }})"
user-email: dev@superset.apache.org
+1 -2
View File
@@ -44,5 +44,4 @@ jobs:
- name: Upload code coverage
if: steps.check.outcome == 'failure'
working-directory: ./superset-frontend
run: |
bash <(curl -s https://codecov.io/bash) -cF javascript
run: ../.github/workflows/codecov.sh -c -F javascript
+46
View File
@@ -0,0 +1,46 @@
name: Lint and Test Charts
on:
pull_request:
types: [opened, edited, reopened, synchronize]
jobs:
lint-test:
runs-on: ubuntu-latest
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v2
with:
persist-credentials: false
submodules: recursive
fetch-depth: 0
- name: Set up Helm
uses: azure/setup-helm@v1
with:
version: v3.5.4
- uses: actions/setup-python@v2
with:
python-version: 3.7
- name: Set up chart-testing
uses: ./.github/actions/chart-testing-action
- name: Run chart-testing (list-changed)
id: list-changed
run: |
changed=$(ct list-changed --print-config)
if [[ -n "$changed" ]]; then
echo "::set-output name=changed::true"
fi
env:
CT_CHART_DIRS: helm
CT_SINCE: HEAD
- name: Run chart-testing (lint)
run: ct lint --print-config
env:
CT_CHART_DIRS: helm
CT_LINT_CONF: lintconf.yaml
CT_SINCE: HEAD
@@ -0,0 +1,37 @@
name: Release Charts
on:
push:
branches:
- 'master'
paths:
- 'helm/**'
jobs:
release:
runs-on: ubuntu-latest
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v2
with:
persist-credentials: false
submodules: recursive
fetch-depth: 0
- name: Configure Git
run: |
git config user.name "$GITHUB_ACTOR"
git config user.email "$GITHUB_ACTOR@users.noreply.github.com"
- name: Install Helm
uses: azure/setup-helm@v1
with:
version: v3.5.4
- name: Run chart-releaser
uses: ./.github/actions/chart-releaser-action
with:
charts_dir: helm
env:
CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
CR_RELEASE_NAME_TEMPLATE: "superset-helm-chart-{{ .Version }}"
@@ -14,7 +14,6 @@ jobs:
runs-on: ubuntu-20.04
strategy:
matrix:
# run unit tests in multiple version just for fun
python-version: [3.8]
env:
PYTHONPATH: ${{ github.workspace }}
@@ -33,7 +32,7 @@ jobs:
# GitHub action runner's default installations
- 15432:5432
presto:
image: prestosql/presto:339
image: starburstdata/presto:350-e.6
env:
POSTGRES_USER: superset
POSTGRES_PASSWORD: superset
@@ -82,15 +81,14 @@ jobs:
- name: Upload code coverage
if: steps.check.outcome == 'failure'
run: |
bash <(curl -s https://codecov.io/bash) -cF python
bash .github/workflows/codecov.sh -c -F python -F presto
test-postgres-hive:
if: github.event.pull_request.draft == false
runs-on: ubuntu-20.04
strategy:
matrix:
# run unit tests in multiple version just for fun
python-version: [3.7, 3.8]
python-version: [3.8]
env:
PYTHONPATH: ${{ github.workspace }}
SUPERSET_CONFIG: tests.superset_test_config
@@ -158,4 +156,4 @@ jobs:
- name: Upload code coverage
if: steps.check.outcome == 'failure'
run: |
bash <(curl -s https://codecov.io/bash) -cF python
bash .github/workflows/codecov.sh -c -F python -F hive
@@ -1,5 +1,5 @@
# Python MySQL unit tests
name: Python MySQL
# Python unit tests
name: Python
on:
push:
@@ -70,7 +70,7 @@ jobs:
- name: Upload code coverage
if: steps.check.outcome == 'failure'
run: |
bash <(curl -s https://codecov.io/bash) -cF python
bash .github/workflows/codecov.sh -c -F python -F mysql
test-postgres:
if: github.event.pull_request.draft == false
@@ -134,7 +134,7 @@ jobs:
- name: Upload code coverage
if: steps.check.outcome == 'failure'
run: |
bash <(curl -s https://codecov.io/bash) -cF python
bash .github/workflows/codecov.sh -c -F python -F postgres
test-sqlite:
if: github.event.pull_request.draft == false
@@ -190,4 +190,4 @@ jobs:
- name: Upload code coverage
if: steps.check.outcome == 'failure'
run: |
bash <(curl -s https://codecov.io/bash) -cF python
bash .github/workflows/codecov.sh -c -F python -F sqlite
+33
View File
@@ -0,0 +1,33 @@
name: WebSocket server
on:
push:
paths:
- "superset-websocket/**"
pull_request:
paths:
- "superset-websocket/**"
jobs:
app-checks:
if: github.event.pull_request.draft == false
runs-on: ubuntu-20.04
steps:
- name: "Checkout ${{ github.ref }} ( ${{ github.sha }} )"
uses: actions/checkout@v2
with:
persist-credentials: false
- name: Install dependencies
working-directory: ./superset-websocket
run: npm install
- name: lint
working-directory: ./superset-websocket
run: npm run lint
- name: prettier
working-directory: ./superset-websocket
run: npm run prettier-check
- name: unit tests
working-directory: ./superset-websocket
run: npm run test
- name: build
working-directory: ./superset-websocket
run: npm run build
+2
View File
@@ -54,10 +54,12 @@ envpy3
env36
local_config.py
/superset_config.py
/superset_text.yml
superset.egg-info/
superset/bin/supersetc
tmp
rat-results.txt
superset/app/
# Node.js, webpack artifacts
*.entry.js
+9
View File
@@ -30,3 +30,12 @@
[submodule ".github/actions/comment-on-pr"]
path = .github/actions/comment-on-pr
url = https://github.com/unsplash/comment-on-pr
[submodule ".github/actions/chart-testing-action"]
path = .github/actions/chart-testing-action
url = https://github.com/helm/chart-testing-action
[submodule ".github/actions/chart-releaser-action"]
path = .github/actions/chart-releaser-action
url = https://github.com/helm/chart-releaser-action
[submodule ".github/actions/github-action-push-to-another-repository"]
path = .github/actions/github-action-push-to-another-repository
url = https://github.com/cpina/github-action-push-to-another-repository
+1 -1
View File
@@ -81,7 +81,7 @@ confidence=
# --enable=similarities". If you want to run only the classes checker, but have
# no Warning level messages displayed, use"--disable=all --enable=classes
# --disable=W"
disable=long-builtin,dict-view-method,intern-builtin,suppressed-message,no-absolute-import,unpacking-in-except,apply-builtin,delslice-method,indexing-exception,old-raise-syntax,print-statement,cmp-builtin,reduce-builtin,useless-suppression,coerce-method,input-builtin,cmp-method,raw_input-builtin,nonzero-method,backtick,basestring-builtin,setslice-method,reload-builtin,oct-method,map-builtin-not-iterating,execfile-builtin,old-octal-literal,zip-builtin-not-iterating,buffer-builtin,getslice-method,metaclass-assignment,xrange-builtin,long-suffix,round-builtin,range-builtin-not-iterating,next-method-called,parameter-unpacking,unicode-builtin,unichr-builtin,import-star-module-level,raising-string,filter-builtin-not-iterating,using-cmp-argument,coerce-builtin,file-builtin,old-division,hex-method,missing-docstring,too-many-lines,ungrouped-imports,import-outside-toplevel,raise-missing-from,super-with-arguments,bad-option-value
disable=long-builtin,dict-view-method,intern-builtin,suppressed-message,no-absolute-import,unpacking-in-except,apply-builtin,delslice-method,indexing-exception,old-raise-syntax,print-statement,cmp-builtin,reduce-builtin,useless-suppression,coerce-method,input-builtin,cmp-method,raw_input-builtin,nonzero-method,backtick,basestring-builtin,setslice-method,reload-builtin,oct-method,map-builtin-not-iterating,execfile-builtin,old-octal-literal,zip-builtin-not-iterating,buffer-builtin,getslice-method,metaclass-assignment,xrange-builtin,long-suffix,round-builtin,range-builtin-not-iterating,next-method-called,parameter-unpacking,unicode-builtin,unichr-builtin,import-star-module-level,raising-string,filter-builtin-not-iterating,using-cmp-argument,coerce-builtin,file-builtin,old-division,hex-method,missing-docstring,too-many-lines,ungrouped-imports,import-outside-toplevel,raise-missing-from,super-with-arguments,bad-option-value,too-few-public-methods
[REPORTS]
+825
View File
@@ -18,6 +18,831 @@ under the License.
-->
## Change Log
### 1.2 (Tue May 11 09:05:39 2021 -0700)
**Database Migrations**
- [#14446](https://github.com/apache/superset/pull/14446) fix(native-filters): add migration to update metadata (@villebro)
- [#14234](https://github.com/apache/superset/pull/14234) feat: Adding limiting_factor column to Query model (@AAfghahi)
- [#14109](https://github.com/apache/superset/pull/14109) feat: Adding encrypted field factory (@craig-rueda)
- [#13828](https://github.com/apache/superset/pull/13828) feat(alert/report): chart as csv format attachment for email and slack (@lilykuang)
- [#13983](https://github.com/apache/superset/pull/13983) refactor(native-filters): update dataMask and ExtraFormData schema (@simcha90)
- [#14063](https://github.com/apache/superset/pull/14063) fix(country-map): update geojson and control layout (@ktmud)
- [#13980](https://github.com/apache/superset/pull/13980) fix: Issue 13956 (@john-bodley)
- [#13752](https://github.com/apache/superset/pull/13752) feat(alerts & reports): Easier to read execution logs (@jfrag1)
- [#13769](https://github.com/apache/superset/pull/13769) fix(dashboard): rename native filter configuration property (@villebro)
- [#13603](https://github.com/apache/superset/pull/13603) fix: default when adding tab_state.hide_left_bar (@betodealmeida)
- [#13493](https://github.com/apache/superset/pull/13493) fix: merge 67da9ef1ef9c and 1412ec1e5a7b migrations (@hughhhh)
- [#13288](https://github.com/apache/superset/pull/13288) fix(sqllab): per-tab hide left bar (@betodealmeida)
**Features**
- [#14590](https://github.com/apache/superset/pull/14590) feat(native-filters): add sort metric to select (@villebro)
- [#14519](https://github.com/apache/superset/pull/14519) feat(dremio): implement convert_dttm method (@villebro)
- [#14461](https://github.com/apache/superset/pull/14461) feat(native-filters): Auto apply changes in FiltersConfigModal (@simcha90)
- [#13521](https://github.com/apache/superset/pull/13521) feat: Logic added to limiting factor column in Query model (@AAfghahi)
- [#14357](https://github.com/apache/superset/pull/14357) feat: Add etag caching to dashboard APIs (@etr2460)
- [#14318](https://github.com/apache/superset/pull/14318) feat: Dynamic imports for the Icons component (@geido)
- [#14398](https://github.com/apache/superset/pull/14398) feat: Support env vars configuration for WebSocket server (@benjreinhart)
- [#14261](https://github.com/apache/superset/pull/14261) feat(native-filters): Show/Hide filter bar by metdata ff (@simcha90)
- [#14256](https://github.com/apache/superset/pull/14256) feat: Setup `supersetText` configuration to overwrite errors (@hughhhh)
- [#14346](https://github.com/apache/superset/pull/14346) feat(native-filters): add optional sort metric to select filter (@villebro)
- [#14375](https://github.com/apache/superset/pull/14375) feat(native-filters): add refresh button to default value picker (@villebro)
- [#14374](https://github.com/apache/superset/pull/14374) feat(native-filters): Use datasets in dashboard as default options for native filters (@kgabryje)
- [#14313](https://github.com/apache/superset/pull/14313) feat(native-filters): Implement adhoc filters and time picker in Range and Select native filters (@kgabryje)
- [#14363](https://github.com/apache/superset/pull/14363) feat: update default cron settings for new alerts and reports (@samtfm)
- [#14235](https://github.com/apache/superset/pull/14235) feat(alert/report): update content format radio buttons (@lilykuang)
- [#14340](https://github.com/apache/superset/pull/14340) feat(filter-box): sort by metric on backend (@villebro)
- [#14314](https://github.com/apache/superset/pull/14314) feat(native-filters): add option to create value in select filter (@villebro)
- [#14208](https://github.com/apache/superset/pull/14208) feat: add endpoint to fetch available DBs (@betodealmeida)
- [#14312](https://github.com/apache/superset/pull/14312) feat(native-filters): add tooltip to control values (@villebro)
- [#14267](https://github.com/apache/superset/pull/14267) feat: add alerts & reports to docker compose (@dpgaspar)
- [#14250](https://github.com/apache/superset/pull/14250) feat: catch errors on do_ping (@betodealmeida)
- [#14092](https://github.com/apache/superset/pull/14092) feat: restyle database modal (@eschutho)
- [#14217](https://github.com/apache/superset/pull/14217) feat(native-filters): select group by support (@amitmiran137)
- [#14204](https://github.com/apache/superset/pull/14204) feat: improve engine spec discoverability (@betodealmeida)
- [#14122](https://github.com/apache/superset/pull/14122) feat: TrinoEngineSpec.adjust_database_uri (@dungdm93)
- [#14172](https://github.com/apache/superset/pull/14172) feat: error messages for Presto connections (@betodealmeida)
- [#14171](https://github.com/apache/superset/pull/14171) feat: error messages when connecting to mssql (@AAfghahi)
- [#14163](https://github.com/apache/superset/pull/14163) feat: publish superset helm chart (@jawabuu)
- [#14197](https://github.com/apache/superset/pull/14197) feat(viz): add mixed timeseries and radar chart (@villebro)
- [#14187](https://github.com/apache/superset/pull/14187) feat(explore): Enable the new pivot table (@kgabryje)
- [#13561](https://github.com/apache/superset/pull/13561) feat: script to benchmark DB migrations (@betodealmeida)
- [#14110](https://github.com/apache/superset/pull/14110) feat: Add health endpoint to WebSocket server (@benjreinhart)
- [#14146](https://github.com/apache/superset/pull/14146) feat: invalid DB name error messages (MySQL/Postgres/Redshift) (@AAfghahi)
- [#14091](https://github.com/apache/superset/pull/14091) feat: FE: Import for Queries II (@lyndsiWilliams)
- [#14093](https://github.com/apache/superset/pull/14093) feat: error messages when connecting to MSSQL (@betodealmeida)
- [#14072](https://github.com/apache/superset/pull/14072) feat: add Echarts gauge chart (@krsnik93)
- [#14111](https://github.com/apache/superset/pull/14111) feat: invalid hostname and password error messages (Redshift) (@AAfghahi)
- [#14089](https://github.com/apache/superset/pull/14089) feat: invalid hostname and password error messages (MySQL) (@AAfghahi)
- [#13992](https://github.com/apache/superset/pull/13992) feat(dashboard_rbac): provide data access based on dashboard access (@amitmiran137)
- [#14076](https://github.com/apache/superset/pull/14076) feat(can_share): can share chart and dashboard (@amitmiran137)
- [#14038](https://github.com/apache/superset/pull/14038) feat: invalid password error message (Postgres) (@betodealmeida)
- [#13740](https://github.com/apache/superset/pull/13740) feat: Implement Celery SoftTimeLimit handling (@lilykuang)
- [#13862](https://github.com/apache/superset/pull/13862) feat: only send alert error emails to owners of the alert (@samtfm)
- [#13827](https://github.com/apache/superset/pull/13827) feat: add descriptions to report emails (@samtfm)
- [#13726](https://github.com/apache/superset/pull/13726) feat(native-filters): Add default first value to select filter (@simcha90)
- [#14007](https://github.com/apache/superset/pull/14007) feat: Make async query JWT cookie domain configurable (@benjreinhart)
- [#14040](https://github.com/apache/superset/pull/14040) feat: handle chart/data API errors (@etr2460)
- [#14030](https://github.com/apache/superset/pull/14030) feat(helm): add pod and deployment annotations to template (@rasta-rocket)
- [#13997](https://github.com/apache/superset/pull/13997) feat: add extract_errors to Postgres (@betodealmeida)
- [#13893](https://github.com/apache/superset/pull/13893) feat: create backend routes and API for importing saved queries (@AAfghahi)
- [#11498](https://github.com/apache/superset/pull/11498) feat(SIP-39): Websocket sidecar app (@robdiciuccio)
- [#14008](https://github.com/apache/superset/pull/14008) feat: Support feature flag overrides in ephemeral test envs (@robdiciuccio)
- [#13981](https://github.com/apache/superset/pull/13981) feat: FE: Export for Queries II (@lyndsiWilliams)
- [#13960](https://github.com/apache/superset/pull/13960) feat: initial work to make v1 API compatible with SIP-40 and SIP-41 (@betodealmeida)
- [#13758](https://github.com/apache/superset/pull/13758) feat(explore): adhoc column formatting for Table chart (@ktmud)
- [#13894](https://github.com/apache/superset/pull/13894) feat(alert/report): add ALERTS_ATTACH_REPORTS feature flags + feature (@lilykuang)
- [#13871](https://github.com/apache/superset/pull/13871) feat: create table with long name (@betodealmeida)
- [#13610](https://github.com/apache/superset/pull/13610) feat: added support to configure the default explorer viz (@cccs-jc)
- [#13772](https://github.com/apache/superset/pull/13772) feat(rls): enable row level security by default (@villebro)
- [#13728](https://github.com/apache/superset/pull/13728) feat: Helm Chart: add extraSecrets config to allow specifying extra secret files (@andreas-eberle)
- [#13720](https://github.com/apache/superset/pull/13720) feat: sort time grain configs (@eschutho)
- [#13683](https://github.com/apache/superset/pull/13683) feat(homescreen and cards): Toggle thumbnails off or on and feature flag (@pkdotson)
- [#13743](https://github.com/apache/superset/pull/13743) feat: use cross-env when running dev-server (@cemremengu)
- [#13696](https://github.com/apache/superset/pull/13696) feat: Refactor asyncEvent middleware and add websocket support (@robdiciuccio)
- [#12862](https://github.com/apache/superset/pull/12862) feat: Make initial user configurable in helm chart (@andreas-eberle)
- [#13662](https://github.com/apache/superset/pull/13662) feat: add 'extra' column to saved_queries GET (@mistercrunch)
- [#13687](https://github.com/apache/superset/pull/13687) feat(cross-filter): Cross filter badge (@simcha90)
- [#13678](https://github.com/apache/superset/pull/13678) feat(helm): Add optional apt-get install to superset_bootstrap.sh (@danielewood)
- [#13622](https://github.com/apache/superset/pull/13622) feat(native-filters): add temporal support to select filter (@villebro)
- [#13682](https://github.com/apache/superset/pull/13682) feat: add Databricks DB engine spec (@betodealmeida)
- [#13606](https://github.com/apache/superset/pull/13606) feat: add warning metadata to tables and metrics (@etr2460)
- [#13601](https://github.com/apache/superset/pull/13601) feat: better error message when adding DBs (@betodealmeida)
- [#13625](https://github.com/apache/superset/pull/13625) feat(cross-filters): Add scoping for cross filters (@simcha90)
- [#13634](https://github.com/apache/superset/pull/13634) feat(reports): SLACK_API_TOKEN as callable or str (@nytai)
- [#13584](https://github.com/apache/superset/pull/13584) feat: add ErrorBoundary to chart controls (@ktmud)
- [#13576](https://github.com/apache/superset/pull/13576) feat(filter-set): Filter set edge cases (@simcha90)
- [#13598](https://github.com/apache/superset/pull/13598) feat(explore): Drag and drop UX improvements (@kgabryje)
- [#13586](https://github.com/apache/superset/pull/13586) feat: add more big data for testing (@betodealmeida)
- [#13487](https://github.com/apache/superset/pull/13487) feat: create hooks to redux component (@AAfghahi)
- [#13294](https://github.com/apache/superset/pull/13294) feat(explore): Postgres datatype conversion (@nikolagigic)
- [#13575](https://github.com/apache/superset/pull/13575) feat: Implement drag and drop for metrics (@kgabryje)
- [#13523](https://github.com/apache/superset/pull/13523) feat(dashboard): dashboard/id/datasets endpoint (@suddjian)
- [#13448](https://github.com/apache/superset/pull/13448) feat: add option to load big/wide tables (@betodealmeida)
- [#13569](https://github.com/apache/superset/pull/13569) feat(native-filters): add sort option to select filter (@villebro)
- [#13152](https://github.com/apache/superset/pull/13152) feat: add connector for CrateDB (@srinify)
- [#13545](https://github.com/apache/superset/pull/13545) feat(filter-set): Update existing filter set (@simcha90)
- [#13529](https://github.com/apache/superset/pull/13529) feat(filter-set): Filter set history (@simcha90)
- [#13484](https://github.com/apache/superset/pull/13484) feat(native-filters): add timegrain and column filter (@villebro)
- [#13468](https://github.com/apache/superset/pull/13468) feat: add event_logger to test_connection and create_database commands (@hughhhh)
- [#13515](https://github.com/apache/superset/pull/13515) feat(filter-set): adding new filters (@simcha90)
- [#13507](https://github.com/apache/superset/pull/13507) feat(native-filters): Filter set tabs (@simcha90)
- [#13340](https://github.com/apache/superset/pull/13340) feat: Implement drag and drop columns for filters (@kgabryje)
- [#13506](https://github.com/apache/superset/pull/13506) feat(native-filters): Update filter bar buttons (@simcha90)
- [#13441](https://github.com/apache/superset/pull/13441) feat: refactor on DBEventLogger to allow for context management (@hughhhh)
- [#13144](https://github.com/apache/superset/pull/13144) feat: Add error pages (@samtfm)
- [#13190](https://github.com/apache/superset/pull/13190) feat: Added Rows Returned (@AAfghahi)
- [#13145](https://github.com/apache/superset/pull/13145) feat(dashboard_rbac): manage roles for dashboard (@simcha90)
- [#13377](https://github.com/apache/superset/pull/13377) feat(viz): implement time picker on filter box (@zhaoyongjie)
- [#13364](https://github.com/apache/superset/pull/13364) feat: add unit test for LimitMethod.FETCH_MANY (@betodealmeida)
- [#13210](https://github.com/apache/superset/pull/13210) feat(explore): ColumnSelectControl with drag-and-drop (@zhaoyongjie)
- [#13135](https://github.com/apache/superset/pull/13135) feat(reports): send notification on error with grace (@dpgaspar)
**Fixes**
- [#14561](https://github.com/apache/superset/pull/14561) fix: select country in examples chart (@betodealmeida)
- [#14587](https://github.com/apache/superset/pull/14587) fix: dashboard side actions (@pkdotson)
- [#14526](https://github.com/apache/superset/pull/14526) fix(chart-data): handle url_params in csv export and native filters (@villebro)
- [#14509](https://github.com/apache/superset/pull/14509) fix: parameterize titles correctly (@suddjian)
- [#14358](https://github.com/apache/superset/pull/14358) fix: SQL Statement on QUERY_LOGGER prints none to log (@cccs-rc)
- [#14483](https://github.com/apache/superset/pull/14483) fix(annotations): pass force param to annotation request (@villebro)
- [#14438](https://github.com/apache/superset/pull/14438) fix(viz): bump superset-ui to fix bugs in table and graph chart (@ktmud)
- [#14426](https://github.com/apache/superset/pull/14426) fix(native-filters): fix filter scope error (@villebro)
- [#14372](https://github.com/apache/superset/pull/14372) fix: SQLLab role permissions (@dpgaspar)
- [#14409](https://github.com/apache/superset/pull/14409) fix(native-filters): always show filters without dataset (@villebro)
- [#14369](https://github.com/apache/superset/pull/14369) fix: error getting partitionQuery from table.partition (@eriendeng)
- [#14401](https://github.com/apache/superset/pull/14401) fix(native-filters): default value not populated on second opening (@villebro)
- [#14291](https://github.com/apache/superset/pull/14291) fix: Fix unintended cache misses with async queries (@benjreinhart)
- [#14390](https://github.com/apache/superset/pull/14390) fix(sqllab): fix error due to anonymous user (@villebro)
- [#14385](https://github.com/apache/superset/pull/14385) fix(native-filters): force update control value on change (@villebro)
- [#14387](https://github.com/apache/superset/pull/14387) fix(native-filters): fix lint (@simcha90)
- [#14362](https://github.com/apache/superset/pull/14362) fix(emotion): add separate namespace for menu app (@nytai)
- [#14370](https://github.com/apache/superset/pull/14370) fix(native-filters): Update filter saving (@simcha90)
- [#14317](https://github.com/apache/superset/pull/14317) fix: Cleanup serialization and hashing code (@benjreinhart)
- [#14338](https://github.com/apache/superset/pull/14338) fix: pybabel extract fails (@bungoume)
- [#14347](https://github.com/apache/superset/pull/14347) fix: flaky test for alerts and reports (@dpgaspar)
- [#14353](https://github.com/apache/superset/pull/14353) fix(native-filters): allowClear only when required not checked (@villebro)
- [#14287](https://github.com/apache/superset/pull/14287) fix: Make g.user attribute access safe for public users (@robdiciuccio)
- [#14334](https://github.com/apache/superset/pull/14334) fix(native-filters): Fix indicators (@simcha90)
- [#14332](https://github.com/apache/superset/pull/14332) fix(native-filters): Fix first loading of charts (@simcha90)
- [#14240](https://github.com/apache/superset/pull/14240) fix(hive): Use parquet rather than textfile when uploading CSV files to Hive (@john-bodley)
- [#14306](https://github.com/apache/superset/pull/14306) fix(dashboard): Add caching for dashboard datasets (@suddjian)
- [#14255](https://github.com/apache/superset/pull/14255) fix(hive): Update CSV to Hive upload prefix (@john-bodley)
- [#14252](https://github.com/apache/superset/pull/14252) fix: SHOW FUNCTIONS for Databricks (@betodealmeida)
- [#14319](https://github.com/apache/superset/pull/14319) fix: unbreak CI (@etr2460)
- [#13921](https://github.com/apache/superset/pull/13921) fix: new import/export CLI (@betodealmeida)
- [#14084](https://github.com/apache/superset/pull/14084) fix: custom TimeRange can not input value (@zhaoyongjie)
- [#14297](https://github.com/apache/superset/pull/14297) fix(sqla): timeseries limit not applied when using columns (@villebro)
- [#14295](https://github.com/apache/superset/pull/14295) fix(db2): change engine name and add legacy alias (@villebro)
- [#14207](https://github.com/apache/superset/pull/14207) fix(dashboard): draft dashboards should be viewable (@ktmud)
- [#14194](https://github.com/apache/superset/pull/14194) fix(explore): CUSTOM SQL tab should automatically update (@stephenLYZ)
- [#14258](https://github.com/apache/superset/pull/14258) fix: incorrect module reference(Tooltip) (@zhaoyongjie)
- [#14192](https://github.com/apache/superset/pull/14192) fix: Center each import icon and add a tooltip II (@lyndsiWilliams)
- [#14147](https://github.com/apache/superset/pull/14147) fix: Handle bad permission errors for bigquery test connections (@hughhhh)
- [#14244](https://github.com/apache/superset/pull/14244) fix(native-filters): merge_extra_form_data extras processing (@villebro)
- [#14243](https://github.com/apache/superset/pull/14243) fix(explore): Filter edit popover not opening in DnD mode (@kgabryje)
- [#14218](https://github.com/apache/superset/pull/14218) fix(native-filters): fix remove native filters (@simcha90)
- [#13830](https://github.com/apache/superset/pull/13830) fix: Use utils.json_iso_dttm_ser to dump jsons when async query execution (@cabo40)
- [#14220](https://github.com/apache/superset/pull/14220) fix(cross-filters): Fix missed metadata (@simcha90)
- [#14170](https://github.com/apache/superset/pull/14170) fix: Switching to local codecov script (@craig-rueda)
- [#14180](https://github.com/apache/superset/pull/14180) fix: Add extra requires for shillelagh (@etr2460)
- [#14191](https://github.com/apache/superset/pull/14191) fix(viz): time shift read-only error (@villebro)
- [#14129](https://github.com/apache/superset/pull/14129) fix(dashboard): filter set hydration not working (@villebro)
- [#14140](https://github.com/apache/superset/pull/14140) fix: QueryPane horizontal scroll (@AAfghahi)
- [#14148](https://github.com/apache/superset/pull/14148) fix(dashboard): incorrect perm for users with multiple roles (@ktmud)
- [#14113](https://github.com/apache/superset/pull/14113) fix: add missing __init__.py (@betodealmeida)
- [#14099](https://github.com/apache/superset/pull/14099) fix(SPA): get permission function (@simcha90)
- [#14086](https://github.com/apache/superset/pull/14086) fix: Fixed saved query export (@lyndsiWilliams)
- [#14057](https://github.com/apache/superset/pull/14057) fix: logs table - user_id is NULL (@hughhhh)
- [#14095](https://github.com/apache/superset/pull/14095) fix(sqla): labels_expected contains mutated label (@villebro)
- [#14074](https://github.com/apache/superset/pull/14074) fix: unable to apply logging format (@zhaoyongjie)
- [#13906](https://github.com/apache/superset/pull/13906) fix(listview): update listview feature flag (@pkdotson)
- [#14082](https://github.com/apache/superset/pull/14082) fix: flacky test in test_update_dataset_item_w_override_columns (@hughhhh)
- [#14046](https://github.com/apache/superset/pull/14046) fix(cross-filters): Make chart emitting cross-filter exclude itself from filtering (@kgabryje)
- [#14081](https://github.com/apache/superset/pull/14081) fix(cross-filters): fix bug when remove chart not removing it's related cross filter data (@simcha90)
- [#14036](https://github.com/apache/superset/pull/14036) fix: add exception to catch session not having JWT (@hughhhh)
- [#14031](https://github.com/apache/superset/pull/14031) fix: Use consistent chart value (@thomasv314)
- [#13974](https://github.com/apache/superset/pull/13974) fix: Use superset generic db to catch external_metadata queries (@hughhhh)
- [#14045](https://github.com/apache/superset/pull/14045) fix(viz): bump superset-ui 0.17.30 (@villebro)
- [#14039](https://github.com/apache/superset/pull/14039) fix: broken port-forward instructions (@caleb15)
- [#14009](https://github.com/apache/superset/pull/14009) fix: use dynamic time_grains for schema (@eschutho)
- [#13998](https://github.com/apache/superset/pull/13998) fix: execution log crashes for logs with no uuid (@jfrag1)
- [#13911](https://github.com/apache/superset/pull/13911) fix: working timeout with celery kill and logic fix (@dpgaspar)
- [#14014](https://github.com/apache/superset/pull/14014) fix(sqla): apply sqla type on calculated columns (@villebro)
- [#13969](https://github.com/apache/superset/pull/13969) fix: annotation modal dateRangePicker saved invalid value (@zhaoyongjie)
- [#13987](https://github.com/apache/superset/pull/13987) fix: Pie chart not displayed in viz type selection (@zhaoyongjie)
- [#13979](https://github.com/apache/superset/pull/13979) fix: import dataset/dashboard empty keys (@betodealmeida)
- [#13801](https://github.com/apache/superset/pull/13801) fix(explore): strip semicolons in virtual table SQL (@pkdotson)
- [#13972](https://github.com/apache/superset/pull/13972) fix: Data table z index in sql Editor (@AAfghahi)
- [#13897](https://github.com/apache/superset/pull/13897) fix: updates load_examples to load-examples (@alexandersimoes)
- [#13955](https://github.com/apache/superset/pull/13955) fix: null exception from adhoc metric popover (@graceguo-supercat)
- [#13936](https://github.com/apache/superset/pull/13936) fix: use the right variable for Celery results in Redis (@octaviancorlade)
- [#13858](https://github.com/apache/superset/pull/13858) fix: Floating Menu in SQL Left Bar (@AAfghahi)
- [#13946](https://github.com/apache/superset/pull/13946) fix: SQL -> Explore Overwrite flow (@hughhhh)
- [#13737](https://github.com/apache/superset/pull/13737) fix: log exceptions for thumbnail generation as warnings (@samtfm)
- [#13945](https://github.com/apache/superset/pull/13945) fix(colors): fix color schemes (@simcha90)
- [#13927](https://github.com/apache/superset/pull/13927) fix: trigger collapse with onchange (@eschutho)
- [#13926](https://github.com/apache/superset/pull/13926) fix: enable installing docker/requirements-local.txt in docker-compos… (@nytai)
- [#13822](https://github.com/apache/superset/pull/13822) fix: adjusted tab height (@AAfghahi)
- [#13917](https://github.com/apache/superset/pull/13917) fix: do not run containers as root by default in Helm chart (@megakoresh)
- [#13739](https://github.com/apache/superset/pull/13739) fix(sqla-query): order by aggregations in Presto and Hive (@ktmud)
- [#13852](https://github.com/apache/superset/pull/13852) fix(dependency): Pin pystan after breaking prophet install (@EBoisseauSierra)
- [#13905](https://github.com/apache/superset/pull/13905) fix: consistent left margin for dashboard layout. (@rusackas)
- [#13901](https://github.com/apache/superset/pull/13901) fix: Revert "fix: select table overlay" (@etr2460)
- [#13878](https://github.com/apache/superset/pull/13878) fix(#13378): Ensure g.user is set for impersonation (@benjreinhart)
- [#13859](https://github.com/apache/superset/pull/13859) fix: Check for permissions in FilterBox (@etr2460)
- [#13868](https://github.com/apache/superset/pull/13868) fix: change status code for generic errors to 400 (@hughhhh)
- [#13800](https://github.com/apache/superset/pull/13800) fix: allow spaces in DB names (@betodealmeida)
- [#13749](https://github.com/apache/superset/pull/13749) fix: Disallows negative options remaining in SelectControl (@michael-s-molina)
- [#13837](https://github.com/apache/superset/pull/13837) fix(native-filters): add global async query support to native filters (@villebro)
- [#13826](https://github.com/apache/superset/pull/13826) fix(errors): Downgrade error on stop query to a warning (@willbarrett)
- [#13718](https://github.com/apache/superset/pull/13718) fix(alerts and reports): Unify timestamp format on execution log view (@jfrag1)
- [#13841](https://github.com/apache/superset/pull/13841) fix(sqllab): warning message when displayed rows limited (@zuzana-vej)
- [#13794](https://github.com/apache/superset/pull/13794) fix(native-filters): improve loading styles for filter component (@villebro)
- [#13825](https://github.com/apache/superset/pull/13825) fix(cypress): avoid referencing detached dom nodes (@suddjian)
- [#13694](https://github.com/apache/superset/pull/13694) fix: select table overlay (@AAfghahi)
- [#13780](https://github.com/apache/superset/pull/13780) fix: restart superset container in test script (@benjreinhart)
- [#13790](https://github.com/apache/superset/pull/13790) fix: bad copy-and-paste in API spec (@betodealmeida)
- [#13566](https://github.com/apache/superset/pull/13566) fix(explore): make horizontal scroll appears in data panel (@stephenLYZ)
- [#13756](https://github.com/apache/superset/pull/13756) fix(CI): use Presto docker image from starburst (@ktmud)
- [#13652](https://github.com/apache/superset/pull/13652) fix(datasets): log create exceptions as warning (@nytai)
- [#13704](https://github.com/apache/superset/pull/13704) fix(cross-filters): only apply filters if ff is set (@villebro)
- [#13695](https://github.com/apache/superset/pull/13695) fix: dashboard filter scope bug (@graceguo-supercat)
- [#13703](https://github.com/apache/superset/pull/13703) fix(cross-filters): expand relevant indicator sections (@villebro)
- [#13624](https://github.com/apache/superset/pull/13624) fix: data column in SQL lab left panel open by default (@AAfghahi)
- [#13688](https://github.com/apache/superset/pull/13688) fix(native-filters): fix removing native filter (@simcha90)
- [#13488](https://github.com/apache/superset/pull/13488) fix: allow option to generate new query (@eschutho)
- [#13691](https://github.com/apache/superset/pull/13691) fix(dashboard): missing parents in directPathToFilter (@villebro)
- [#13692](https://github.com/apache/superset/pull/13692) fix(cross-filters): add a control panel to range filter (@villebro)
- [#13679](https://github.com/apache/superset/pull/13679) fix: use FeatureFlags in @superset-ui/core (@ktmud)
- [#13681](https://github.com/apache/superset/pull/13681) fix: clean up incorrect usage of TypeScript type in PropTypes (@ktmud)
- [#13665](https://github.com/apache/superset/pull/13665) fix(cross-filter): fix scheme py (@simcha90)
- [#13621](https://github.com/apache/superset/pull/13621) fix(explore): Add int and bool regex pattern (@nikolagigic)
- [#13657](https://github.com/apache/superset/pull/13657) fix: 'Run in SQL Lab' redirect bug (@mistercrunch)
- [#13434](https://github.com/apache/superset/pull/13434) fix(query): order by adhoc metrics should trigger group by (@ktmud)
- [#13636](https://github.com/apache/superset/pull/13636) fix(sqllab): Table name and schema are encoded twice during fetching table metadata on SQL Lab page. (@didva)
- [#13655](https://github.com/apache/superset/pull/13655) fix: Slack dashboard has stale charts (@betodealmeida)
- [#13642](https://github.com/apache/superset/pull/13642) fix: bump FAB to 3.2.1, SQLAlchemy fix (@dpgaspar)
- [#13608](https://github.com/apache/superset/pull/13608) fix: Add SASL dependency module (@danielewood)
- [#13463](https://github.com/apache/superset/pull/13463) fix(alert/report): add notification method in alert report modal (@lilykuang)
- [#13585](https://github.com/apache/superset/pull/13585) fix: AntD select dropdown scroll issue (@lilykuang)
- [#13578](https://github.com/apache/superset/pull/13578) fix: better handle datasource exceptions (@dpgaspar)
- [#13607](https://github.com/apache/superset/pull/13607) fix: link update for report and old alerts deprecations (@betodealmeida)
- [#13626](https://github.com/apache/superset/pull/13626) fix(explore): Dynamic dttm in crate test (@nikolagigic)
- [#13537](https://github.com/apache/superset/pull/13537) fix(alert/report): switch message content between chart and dashboard (@lilykuang)
- [#13389](https://github.com/apache/superset/pull/13389) fix: delete dataset columns and metrics on the REST API (@dpgaspar)
- [#13613](https://github.com/apache/superset/pull/13613) fix(helm): Add missing extraConfigs template volume mapping and fix type error on template. (@danielewood)
- [#13563](https://github.com/apache/superset/pull/13563) fix: always pass a string as a value to ace editor (@eschutho)
- [#13602](https://github.com/apache/superset/pull/13602) fix: ParsedQuery subselect edge case (@etr2460)
- [#13570](https://github.com/apache/superset/pull/13570) fix: UI port in dockerfile set to same port in config (@iercan)
- [#13496](https://github.com/apache/superset/pull/13496) fix: `IS NULL` filter operator for numeric columns (@ktmud)
- [#13546](https://github.com/apache/superset/pull/13546) fix(native-filters): fix initial filter loading (@simcha90)
- [#13505](https://github.com/apache/superset/pull/13505) fix: Prevents KeyError in 13504 by making kwarg explicit (@spookymotion)
- [#13436](https://github.com/apache/superset/pull/13436) fix(alerts&reports): add celery soft timeout support (@dpgaspar)
- [#13473](https://github.com/apache/superset/pull/13473) fix(explore): make sure sort by metric is not duplicated (@ktmud)
- [#13352](https://github.com/apache/superset/pull/13352) fix(dashboard): Get dashboard by slug (@suddjian)
- [#13444](https://github.com/apache/superset/pull/13444) fix: API to allow importing old exports (JSON/YAML) (@betodealmeida)
- [#13464](https://github.com/apache/superset/pull/13464) fix: SHOW is not DML (@betodealmeida)
- [#13469](https://github.com/apache/superset/pull/13469) fix: Remove view in sql lab from druid datasources (@etr2460)
- [#13425](https://github.com/apache/superset/pull/13425) fix: Adding v0 import/export fields to dashboard metadata schema (@michellethomas)
- [#13424](https://github.com/apache/superset/pull/13424) fix: use semver for badge sort (@eschutho)
- [#12341](https://github.com/apache/superset/pull/12341) fix: annotation layer modal err handling (@riahk)
- [#13331](https://github.com/apache/superset/pull/13331) fix(query-object): extra time-range-endpoints (@john-bodley)
- [#13174](https://github.com/apache/superset/pull/13174) fix: update SQL Lab Buttons to better wording (@AAfghahi)
- [#13330](https://github.com/apache/superset/pull/13330) fix: date picker support date unit with singular and plural (@zhaoyongjie)
**Others**
- [#14460](https://github.com/apache/superset/pull/14460) chore: bump table plugin to 0.17.42 (@amitmiran137)
- [#14443](https://github.com/apache/superset/pull/14443) perf(native-filters): Load native filters after charts (@simcha90)
- [#14408](https://github.com/apache/superset/pull/14408) perf(native-filters): avoid unnecessary reloading of charts (@simcha90)
- [#14441](https://github.com/apache/superset/pull/14441) refactor(native-filters): allow cascading only for filter_select (@simcha90)
- [#14371](https://github.com/apache/superset/pull/14371) test(maximize-chart): Add tests to maximize chart action (@simcha90)
- [#14139](https://github.com/apache/superset/pull/14139) chore: Moves Card to the components folder (@michael-s-molina)
- [#14048](https://github.com/apache/superset/pull/14048) refactor: Boostrap to AntD - Tabs (@michael-s-molina)
- [#14166](https://github.com/apache/superset/pull/14166) chore: Moves the branding folder to the assets folder (@michael-s-molina)
- [#14394](https://github.com/apache/superset/pull/14394) docs: improved clickhouse connection details (@srinify)
- [#14321](https://github.com/apache/superset/pull/14321) docs: multiple small fixes around databases (@srinify)
- [#14366](https://github.com/apache/superset/pull/14366) refactor(db_engine_specs): Removing top-level import of app (@john-bodley)
- [#14219](https://github.com/apache/superset/pull/14219) docs: Update trino connection docs (@aakashnand)
- [#14203](https://github.com/apache/superset/pull/14203) chore: Bumping lodash version in Superset (@rusackas)
- [#14339](https://github.com/apache/superset/pull/14339) chore: Improve Japanese translation (@bungoume)
- [#14342](https://github.com/apache/superset/pull/14342) chore(docker-compose): use dev image for docker-compose-non-dev.yml (@nytai)
- [#14136](https://github.com/apache/superset/pull/14136) chore: Moves Tabs to the components folder (@michael-s-molina)
- [#14355](https://github.com/apache/superset/pull/14355) chore: bump 0.17.38 (@amitmiran137)
- [#14035](https://github.com/apache/superset/pull/14035) refactor(addslicecontainer): move slice container panel from bootstrap panel to ant-d (@pkdotson)
- [#14106](https://github.com/apache/superset/pull/14106) refactor: Bootstrap to AntD - Form - iteration 1 (@michael-s-molina)
- [#14354](https://github.com/apache/superset/pull/14354) chore: add some basic instrumentation to Node WebSocket server (@benjreinhart)
- [#14274](https://github.com/apache/superset/pull/14274) chore: Add Redis password option to helm chart (@robdiciuccio)
- [#14350](https://github.com/apache/superset/pull/14350) ci: set remote URL to https and bump sha (@dpgaspar)
- [#14331](https://github.com/apache/superset/pull/14331) chore(docs): remove .py from db migrate -m (@amitmiran137)
- [#14323](https://github.com/apache/superset/pull/14323) chore(spelling): fixing spelling: `clint` -> `client` (@ChrisCarini)
- [#14202](https://github.com/apache/superset/pull/14202) chore: Moves spec files to the src folder - iteration 3 (@michael-s-molina)
- [#14201](https://github.com/apache/superset/pull/14201) chore: Moves spec files to the src folder - iteration 2 (@michael-s-molina)
- [#14200](https://github.com/apache/superset/pull/14200) chore: Moves spec files to the src folder - iteration 1 (@michael-s-molina)
- [#14193](https://github.com/apache/superset/pull/14193) chore: Improves Icons storybook (@michael-s-molina)
- [#14304](https://github.com/apache/superset/pull/14304) docs: add publish step (@nytai)
- [#14309](https://github.com/apache/superset/pull/14309) refactor: reorganize dateFilterUtils.tx (@zhaoyongjie)
- [#14100](https://github.com/apache/superset/pull/14100) refactor: Boostrap to AntD - Row/Col (@michael-s-molina)
- [#13970](https://github.com/apache/superset/pull/13970) chore: starter make file (@hughhhh)
- [#14123](https://github.com/apache/superset/pull/14123) chore: Moves WarningIconWithTooltip to own folder (@michael-s-molina)
- [#14298](https://github.com/apache/superset/pull/14298) chore: SQLLab row limit warning using Alert component (@zuzana-vej)
- [#14196](https://github.com/apache/superset/pull/14196) chore: Code cleanup in DatabaseModal (@lyndsiWilliams)
- [#14257](https://github.com/apache/superset/pull/14257) chore: WebSocket server improvements (@benjreinhart)
- [#14253](https://github.com/apache/superset/pull/14253) chore: bump superset-ui (@etr2460)
- [#14126](https://github.com/apache/superset/pull/14126) chore: Moves Dropdown to the components folder (@michael-s-molina)
- [#14133](https://github.com/apache/superset/pull/14133) chore: Moves Radio to the components folder (@michael-s-molina)
- [#14137](https://github.com/apache/superset/pull/14137) chore: Moves Tooltip to the components folder (@michael-s-molina)
- [#14167](https://github.com/apache/superset/pull/14167) chore: Moves the staticPages folder to the assets folder (@michael-s-molina)
- [#14228](https://github.com/apache/superset/pull/14228) chore(prophet): bump prophet to 1.0.1 (@villebro)
- [#14245](https://github.com/apache/superset/pull/14245) test(native-filters): Filter config modal test (@simcha90)
- [#14098](https://github.com/apache/superset/pull/14098) test(native-filters): add integration tests for filter bar (@simcha90)
- [#14238](https://github.com/apache/superset/pull/14238) chore: Add Preset code owners for ephemeral test env workflows (@robdiciuccio)
- [#14128](https://github.com/apache/superset/pull/14128) chore: Moves InfoTooltip to the components folder (@michael-s-molina)
- [#14222](https://github.com/apache/superset/pull/14222) chore: bump package.json (@amitmiran137)
- [#14223](https://github.com/apache/superset/pull/14223) docs: add helm repo to kubernetes installation instructions (@jawabuu)
- [#14211](https://github.com/apache/superset/pull/14211) ci: use git submodules for Chart Actions (@jawabuu)
- [#14124](https://github.com/apache/superset/pull/14124) chore: Moves Collapse to the components folder (@michael-s-molina)
- [#14130](https://github.com/apache/superset/pull/14130) chore: Moves Modal to the components folder (@michael-s-molina)
- [#14178](https://github.com/apache/superset/pull/14178) chore: type some SQL Lab components (@etr2460)
- [#14164](https://github.com/apache/superset/pull/14164) chore: Configures Jest to ignore storybook files (@michael-s-molina)
- [#14135](https://github.com/apache/superset/pull/14135) chore: Moves Switch to the components folder (@michael-s-molina)
- [#14127](https://github.com/apache/superset/pull/14127) chore: Moves DropdownButton to the components folder (@michael-s-molina)
- [#14125](https://github.com/apache/superset/pull/14125) chore: Moves CronPicker to the components folder (@michael-s-molina)
- [#14013](https://github.com/apache/superset/pull/14013) chore(toggle thumbnails): use localstorage for toggle (@pkdotson)
- [#14169](https://github.com/apache/superset/pull/14169) chore: rename connection errors (@betodealmeida)
- [#14090](https://github.com/apache/superset/pull/14090) refactor(userInfo): userinfo panel to styled component (@pkdotson)
- [#14152](https://github.com/apache/superset/pull/14152) chore: update RELEASING readme (@lilykuang)
- [#13973](https://github.com/apache/superset/pull/13973) test: Add tests for Dashboard Header and HeaderActionsDropdown components (@geido)
- [#13393](https://github.com/apache/superset/pull/13393) build(deps): bump urijs from 1.19.4 to 1.19.6 in /superset-frontend (@dependabot[bot])
- [#13705](https://github.com/apache/superset/pull/13705) test: Adds tests for the FixedOrMetricControl component (@michael-s-molina)
- [#13996](https://github.com/apache/superset/pull/13996) refactor: Bootstrap to AntD - ListGroup (@michael-s-molina)
- [#12636](https://github.com/apache/superset/pull/12636) build(deps): bump socket.io from 2.3.0 to 2.4.1 in /docs (@dependabot[bot])
- [#13391](https://github.com/apache/superset/pull/13391) build(deps): bump three from 0.68.87 to 0.125.0 in /docs (@dependabot[bot])
- [#13874](https://github.com/apache/superset/pull/13874) build(deps): bump y18n from 4.0.0 to 4.0.1 in /docs (@dependabot[bot])
- [#13886](https://github.com/apache/superset/pull/13886) build(deps): bump y18n from 4.0.0 to 4.0.1 in /superset-frontend (@dependabot[bot])
- [#14088](https://github.com/apache/superset/pull/14088) chore: stop logging `SupersetExceptions` if status < 500 (@hughhhh)
- [#13919](https://github.com/apache/superset/pull/13919) test: Adds tests to the UndoRedoKeyListeners component (@michael-s-molina)
- [#13951](https://github.com/apache/superset/pull/13951) chore: Adds dataMask reducer to reducerIndex (@michael-s-molina)
- [#13916](https://github.com/apache/superset/pull/13916) test: Tests audit for the Dashboard FilterBar (@geido)
- [#13989](https://github.com/apache/superset/pull/13989) refactor: Bootstrap to AntD - Slider (@michael-s-molina)
- [#13306](https://github.com/apache/superset/pull/13306) chore(spa refactor): refactoring dashboard to use api's instead of bootstrapdata (@pkdotson)
- [#13961](https://github.com/apache/superset/pull/13961) docs: details on configuring Docker Compose setup (@alexkreidler)
- [#14027](https://github.com/apache/superset/pull/14027) docs: update outdated country map tools instructions (@ktmud)
- [#14028](https://github.com/apache/superset/pull/14028) test: FilterSets-utils (@yardz)
- [#14033](https://github.com/apache/superset/pull/14033) chore: well component to card component(Updating PR #12200) (@yardz)
- [#13975](https://github.com/apache/superset/pull/13975) test: ControlItems (@yardz)
- [#13941](https://github.com/apache/superset/pull/13941) test: Tabs (@yardz)
- [#13937](https://github.com/apache/superset/pull/13937) test: Tab (@yardz)
- [#13888](https://github.com/apache/superset/pull/13888) test: SliceHeader (@yardz)
- [#13860](https://github.com/apache/superset/pull/13860) test: ShareMenuItems (@yardz)
- [#13991](https://github.com/apache/superset/pull/13991) test: ColumnSelect (@yardz)
- [#14025](https://github.com/apache/superset/pull/14025) chore: update docs to allow user to properly load examples (@hughhhh)
- [#13458](https://github.com/apache/superset/pull/13458) chore: Moves Fade component into TableElement (@michael-s-molina)
- [#13933](https://github.com/apache/superset/pull/13933) test: Adds tests to the CssEditor component (@michael-s-molina)
- [#13502](https://github.com/apache/superset/pull/13502) test: Tests and Storybook entry for the IndeterminateCheckbox Component (@geido)
- [#13736](https://github.com/apache/superset/pull/13736) test: DataTablesPane (@yardz)
- [#13787](https://github.com/apache/superset/pull/13787) test: AdhocMetricEditPopover (@yardz)
- [#13501](https://github.com/apache/superset/pull/13501) test: Tests and Storybook entry for the TableView Component (@geido)
- [#13984](https://github.com/apache/superset/pull/13984) test: prevent flaky frontend unit test case (@zhaoyongjie)
- [#13719](https://github.com/apache/superset/pull/13719) test: exploreUtils (@yardz)
- [#13887](https://github.com/apache/superset/pull/13887) test: Adds tests to the filter scope components (@michael-s-molina)
- [#13931](https://github.com/apache/superset/pull/13931) test: PropertiesModal (Dashboard) (@yardz)
- [#13950](https://github.com/apache/superset/pull/13950) test: Add tests for the Dashboard FilterBar CascadeFilterControl component (@geido)
- [#13934](https://github.com/apache/superset/pull/13934) docs: replace deprecated EMAIL_REPORTS_WEBDRIVER with the new WEBDRIVER_TYPE (@octaviancorlade)
- [#13953](https://github.com/apache/superset/pull/13953) chore: bump @superset-ui/plugin-chart-table to 0.17.28 (@ktmud)
- [#13877](https://github.com/apache/superset/pull/13877) refactor: move CTAS/CVAS field II (@hughhhh)
- [#13895](https://github.com/apache/superset/pull/13895) test: SliceHeaderControls (@yardz)
- [#13553](https://github.com/apache/superset/pull/13553) chore: Dedicated dir and Storybook for the DatePicker Component (@geido)
- [#13818](https://github.com/apache/superset/pull/13818) test: PropertiesModal (@yardz)
- [#13875](https://github.com/apache/superset/pull/13875) test: CrossFilterScopingForm (@yardz)
- [#13873](https://github.com/apache/superset/pull/13873) test: FilterIndicator (@yardz)
- [#13872](https://github.com/apache/superset/pull/13872) test: DetailsPanel (@yardz)
- [#13745](https://github.com/apache/superset/pull/13745) test: Enhance tests and directory structure for FilterControl components (@geido)
- [#13712](https://github.com/apache/superset/pull/13712) test: Adds tests to the TimeSeriesColumnControl component (@michael-s-molina)
- [#13753](https://github.com/apache/superset/pull/13753) test: FilterBoxItemControl (@yardz)
- [#13656](https://github.com/apache/superset/pull/13656) test: CollectionControl (@yardz)
- [#13482](https://github.com/apache/superset/pull/13482) test: Adds storybook to Dropdown and DropdownButton components (@michael-s-molina)
- [#13876](https://github.com/apache/superset/pull/13876) test: CrossFilterScopingModal/utils (@yardz)
- [#13939](https://github.com/apache/superset/pull/13939) chore(dashboard): Datasource -> Dataset (@suddjian)
- [#13892](https://github.com/apache/superset/pull/13892) test: Adds tests to the PublishedStatus component (@michael-s-molina)
- [#13932](https://github.com/apache/superset/pull/13932) chore(dashboard_rbac): bump superset-ui 0.17.27 (@amitmiran137)
- [#13548](https://github.com/apache/superset/pull/13548) test: Fixes PropertiesModal_spec (@michael-s-molina)
- [#13650](https://github.com/apache/superset/pull/13650) test: Adds tests to dnd controls (@michael-s-molina)
- [#13748](https://github.com/apache/superset/pull/13748) test: Adds tests to the AnnotationLayer component (@michael-s-molina)
- [#13799](https://github.com/apache/superset/pull/13799) test: Refactor and enhance tests for the Explore DatasourcePanel Component (@geido)
- [#13778](https://github.com/apache/superset/pull/13778) test: Tests and dedicated dir for Explore TextControl component (@geido)
- [#13750](https://github.com/apache/superset/pull/13750) test: DisplayQueryButton (@yardz)
- [#13729](https://github.com/apache/superset/pull/13729) test: Adds tests to the OptionControls component (@michael-s-molina)
- [#13605](https://github.com/apache/superset/pull/13605) test: DatasourceControl (@yardz)
- [#13896](https://github.com/apache/superset/pull/13896) test: handleScroll (@yardz)
- [#13675](https://github.com/apache/superset/pull/13675) test: Adds tests to the CustomFrame component (@michael-s-molina)
- [#13664](https://github.com/apache/superset/pull/13664) test: Adds tests to the AdvancedFrame component (@michael-s-molina)
- [#13668](https://github.com/apache/superset/pull/13668) test: DataTableControl (@yardz)
- [#13477](https://github.com/apache/superset/pull/13477) chore: Removes Select duplication (@michael-s-molina)
- [#13813](https://github.com/apache/superset/pull/13813) docs: Documenting how to debug Flask app (@cccs-jc)
- [#13457](https://github.com/apache/superset/pull/13457) test: Adds tests and storybook to CertifiedIcon component (@michael-s-molina)
- [#13459](https://github.com/apache/superset/pull/13459) chore: Moves CheckboxIcons to Checkbox folder (@michael-s-molina)
- [#13462](https://github.com/apache/superset/pull/13462) chore: Removes Popover duplication (@michael-s-molina)
- [#13527](https://github.com/apache/superset/pull/13527) build(deps): bump elliptic from 6.5.3 to 6.5.4 in /docs (@dependabot[bot])
- [#13855](https://github.com/apache/superset/pull/13855) chore: Update PR template for SIP-59 DB migrations process (@robdiciuccio)
- [#13759](https://github.com/apache/superset/pull/13759) chore: Add CODEOWNERS for superset/migrations (@robdiciuccio)
- [#13861](https://github.com/apache/superset/pull/13861) docs: fixed a link (@ericmand)
- [#13854](https://github.com/apache/superset/pull/13854) chore: Displays row limit warning with the Alert component (@michael-s-molina)
- [#13811](https://github.com/apache/superset/pull/13811) chore: add success log whenever a connection is working (@hughhhh)
- [#13767](https://github.com/apache/superset/pull/13767) chore(git): ignore app folder under superset (@cemremengu)
- [#13784](https://github.com/apache/superset/pull/13784) chore(cypress): Make the e2e tests more behavior-driven (@suddjian)
- [#13797](https://github.com/apache/superset/pull/13797) refactor: New schedule query button (@AAfghahi)
- [#13547](https://github.com/apache/superset/pull/13547) test: Adds storybook and tests to PopoverDropdown component (@michael-s-molina)
- [#13757](https://github.com/apache/superset/pull/13757) chore(CI): dont run Hive tests on Py 3.7 (@ktmud)
- [#13638](https://github.com/apache/superset/pull/13638) test: SelectAsyncControl (@yardz)
- [#13581](https://github.com/apache/superset/pull/13581) test: DatabaseSelector (@yardz)
- [#13534](https://github.com/apache/superset/pull/13534) test: Tests, dedicated directory and Storybook for the ProgressBar component (@geido)
- [#13781](https://github.com/apache/superset/pull/13781) docs: update setup instructions (@benjreinhart)
- [#13676](https://github.com/apache/superset/pull/13676) refactor: SouthPane into functional component (@AAfghahi)
- [#13785](https://github.com/apache/superset/pull/13785) refactor: Revert "refactor: ScheduleQueryButton into functional component (#134… (@hughhhh)
- [#13443](https://github.com/apache/superset/pull/13443) refactor: ScheduleQueryButton into functional component (@AAfghahi)
- [#13738](https://github.com/apache/superset/pull/13738) chore: Update presto.mdx (@hughhhh)
- [#13751](https://github.com/apache/superset/pull/13751) test: changing logger.exception to logger.errors in databases api (@AAfghahi)
- [#13770](https://github.com/apache/superset/pull/13770) docs(contributing): fix backend port (@cemremengu)
- [#13627](https://github.com/apache/superset/pull/13627) test: DatasourcePanelDragWrapper (@yardz)
- [#13722](https://github.com/apache/superset/pull/13722) chore: Improve Korean translation (@kimsehwan96)
- [#13500](https://github.com/apache/superset/pull/13500) chore(homepage): separate out api calls to make homepage load more dynamically (@pkdotson)
- [#13730](https://github.com/apache/superset/pull/13730) refactor: helm chart: Use stringData instead of data in Secrets and remove manual base64 encoding (@andreas-eberle)
- [#13677](https://github.com/apache/superset/pull/13677) build: implement codecov carryforward flags (@jfrag1)
- [#13723](https://github.com/apache/superset/pull/13723) refactor(native-filters): refactor filter bar (@simcha90)
- [#12932](https://github.com/apache/superset/pull/12932) docs: update helm documentation (@anthcor)
- [#13554](https://github.com/apache/superset/pull/13554) test: usePrevious hook (@yardz)
- [#13630](https://github.com/apache/superset/pull/13630) refactor: Share sql lab query (@AAfghahi)
- [#13555](https://github.com/apache/superset/pull/13555) test: useChangeEffect (@yardz)
- [#13658](https://github.com/apache/superset/pull/13658) chore: bump pyyaml to latest (@robdiciuccio)
- [#13643](https://github.com/apache/superset/pull/13643) docs: Make suggested changes related to curl use in CONTRIBUTING.md (@slim-patchy)
- [#13660](https://github.com/apache/superset/pull/13660) chore(explore): added debounce in DateFilterControl (@zhaoyongjie)
- [#13342](https://github.com/apache/superset/pull/13342) chore: improve modal error handling (@lilykuang)
- [#13508](https://github.com/apache/superset/pull/13508) test: Tests and dedicated directory for the SupersetResourceSelect Component (@geido)
- [#13611](https://github.com/apache/superset/pull/13611) docs: correct sentence (@ErfanMirzapour)
- [#13587](https://github.com/apache/superset/pull/13587) chore: create better links for latest release (@eschutho)
- [#13596](https://github.com/apache/superset/pull/13596) chore: metric refactor iteration 1 (@zhaoyongjie)
- [#13593](https://github.com/apache/superset/pull/13593) chore(explore): bump superset-ui 0.17.19 (@zhaoyongjie)
- [#13520](https://github.com/apache/superset/pull/13520) refactor: convert controlUtils to TypeScript (2 of 2) (@ktmud)
- [#13549](https://github.com/apache/superset/pull/13549) test: CronPicker (@yardz)
- [#13583](https://github.com/apache/superset/pull/13583) test: TableCollection (@yardz)
- [#13498](https://github.com/apache/superset/pull/13498) build: check potential db migration conflict for open PRs (@ktmud)
- [#13513](https://github.com/apache/superset/pull/13513) test: Tests, dedicated directory and Storybook for the Badge component (@geido)
- [#13421](https://github.com/apache/superset/pull/13421) build: ignore Storybook stories in CodeCov (@ktmud)
- [#13438](https://github.com/apache/superset/pull/13438) test: Adds tests and storybook to PopoverSection component (@michael-s-molina)
- [#13517](https://github.com/apache/superset/pull/13517) test: Adds storybook and tests to AsyncEsmComponent (@michael-s-molina)
- [#13516](https://github.com/apache/superset/pull/13516) test: Adds storybook to AlteredSliceTag component (@michael-s-molina)
- [#13452](https://github.com/apache/superset/pull/13452) build(test env): Shutdown test environments on PR close (@robdiciuccio)
- [#13518](https://github.com/apache/superset/pull/13518) ci: increase page size of GH PR API call (@villebro)
- [#13412](https://github.com/apache/superset/pull/13412) test: Adds storybook to ConfirmStatusChange component (@michael-s-molina)
- [#13365](https://github.com/apache/superset/pull/13365) docs: add more documentation around python testing and linting (@eschutho)
- [#13437](https://github.com/apache/superset/pull/13437) refactor(native-filters): Move `filtersState` to `dataMask` redux root (@simcha90)
- [#13454](https://github.com/apache/superset/pull/13454) chore: Moves ChartIcon to own folder (@michael-s-molina)
- [#13409](https://github.com/apache/superset/pull/13409) test: Adds tests and storybook to RefreshLabel (@michael-s-molina)
- [#13324](https://github.com/apache/superset/pull/13324) chore: Moves ListView test to component's folder (@michael-s-molina)
- [#13485](https://github.com/apache/superset/pull/13485) chore: Moves InfoTooltip component to own folder (@michael-s-molina)
- [#13479](https://github.com/apache/superset/pull/13479) test: Adds storybook to Switch component (@michael-s-molina)
- [#13410](https://github.com/apache/superset/pull/13410) test: Adds storybook to SearchInput component (@michael-s-molina)
- [#13460](https://github.com/apache/superset/pull/13460) chore: Moves BootstrapSliderWrapper to own folder (@michael-s-molina)
- [#13440](https://github.com/apache/superset/pull/13440) docs: deprecate old alerts and dash/charts reports (@dpgaspar)
- [#13361](https://github.com/apache/superset/pull/13361) chore: Migrating dashboard/components/menu from jsx to tsx (@ayanginet)
- [#13455](https://github.com/apache/superset/pull/13455) docs: Fix typo in footer (@thinkh)
- [#13376](https://github.com/apache/superset/pull/13376) chore: Improve Japanese translation (@tesshy)
- [#13417](https://github.com/apache/superset/pull/13417) refactor: add set data mask to build query (@simcha90)
- [#13450](https://github.com/apache/superset/pull/13450) chore: disable drag metrics and columns in datasourcePanel (@zhaoyongjie)
- [#13411](https://github.com/apache/superset/pull/13411) chore: Moves TableSelector tests to component's folder (@michael-s-molina)
- [#13401](https://github.com/apache/superset/pull/13401) refactor: convert controlUtils to TypeScript (1 of 2) (@ktmud)
- [#13102](https://github.com/apache/superset/pull/13102) refactor: Query search into functional component (@AAfghahi)
- [#13418](https://github.com/apache/superset/pull/13418) chore: Added rockset and firebird (@srinify)
- [#13408](https://github.com/apache/superset/pull/13408) chore: Removes unused Hotkeys component (@michael-s-molina)
- [#13407](https://github.com/apache/superset/pull/13407) test: Adds storybook to FormRow component (@michael-s-molina)
- [#13406](https://github.com/apache/superset/pull/13406) test: Adds storybook to AnchorLink component (@michael-s-molina)
- [#13415](https://github.com/apache/superset/pull/13415) test: Adds storybook to IconTooltip component (@michael-s-molina)
- [#13362](https://github.com/apache/superset/pull/13362) test: Adds storybook to EditableTitle component (@michael-s-molina)
- [#13359](https://github.com/apache/superset/pull/13359) test: Adds tests and storybook to CopyToClipboard component (@michael-s-molina)
- [#13358](https://github.com/apache/superset/pull/13358) test: ErrorMessage components tests (@geido)
- [#13374](https://github.com/apache/superset/pull/13374) chore: convert chartReducer to TypeScript (@ktmud)
- [#13137](https://github.com/apache/superset/pull/13137) refactor(self-trigger): Split native filters state (@simcha90)
- [#13367](https://github.com/apache/superset/pull/13367) chore: npm audit fix (@eschutho)
- [#13343](https://github.com/apache/superset/pull/13343) test: Adds storybook to Timer component (@michael-s-molina)
- [#13338](https://github.com/apache/superset/pull/13338) chore: Moves OnPasteSelect tests to component's folder (@michael-s-molina)
- [#13322](https://github.com/apache/superset/pull/13322) chore: Moves FilterableTable test to component's folder (@michael-s-molina)
- [#13276](https://github.com/apache/superset/pull/13276) test: ErrorBoundary dedicated directory and tests (@geido)
- [#13274](https://github.com/apache/superset/pull/13274) chore: Migrates RefreshChartOverlay into Chart (@michael-s-molina)
- [#13273](https://github.com/apache/superset/pull/13273) test: Improves ButtonGroup tests (@michael-s-molina)
- [#13375](https://github.com/apache/superset/pull/13375) build: fix codecov informational config (@ktmud)
- [#13270](https://github.com/apache/superset/pull/13270) test: FormLabel dedicated directory and tests (@geido)
- [#13221](https://github.com/apache/superset/pull/13221) refactor(explore): convert ControlPanelsContainer to typescript (@ktmud)
- [#13305](https://github.com/apache/superset/pull/13305) test: Tests for OmniContainer (@yardz)
- [#13104](https://github.com/apache/superset/pull/13104) chore: update docs for new alerts and reporting feature (@leocape)
- [#13277](https://github.com/apache/superset/pull/13277) test: Pagination component (@yardz)
- [#13332](https://github.com/apache/superset/pull/13332) chore: Update OAuth2 configuration guide to match with FlaskAppBuilder (@liamnv)
- [#13299](https://github.com/apache/superset/pull/13299) test: Adds tests to TableLoader component (@michael-s-molina)
- [#13314](https://github.com/apache/superset/pull/13314) chore: Moves AsyncSelect component and tests to own folder (@michael-s-molina)
- [#13302](https://github.com/apache/superset/pull/13302) test: Menu component tests (@geido)
- [#13318](https://github.com/apache/superset/pull/13318) test: CacheLabel (@yardz)
- [#13320](https://github.com/apache/superset/pull/13320) test: tests for component FaveStar (@yardz)
- [#13296](https://github.com/apache/superset/pull/13296) chore: migrating some LESS to Emotions for ResultSet components (@rusackas)
- [#13218](https://github.com/apache/superset/pull/13218) refactor: Introduce api resource hooks, fetch owners for chart errors (@suddjian)
- [#13319](https://github.com/apache/superset/pull/13319) test: Adds tests to URLShortLinkButton component (@michael-s-molina)
- [#13286](https://github.com/apache/superset/pull/13286) test: Tests for DeleteModal component (@yardz)
- [#13329](https://github.com/apache/superset/pull/13329) test: optimize codecov config (@ktmud)
- [#13323](https://github.com/apache/superset/pull/13323) build: Use redis:latest in docker-compose workflow (@robdiciuccio)
- [#12229](https://github.com/apache/superset/pull/12229) refactor: New Icon system with Enhanced Antd Custom Icon (@geido)
- [#13189](https://github.com/apache/superset/pull/13189) build: Ephemeral environments for PRs via slash command (@robdiciuccio)
### 1.1 (Wed Feb 24 12:08:28 2021 +0200)
**Database Migrations**
- [#13111](https://github.com/apache/superset/pull/13111) feat: add Echarts Graph chart (@mayurnewase)
- [#13262](https://github.com/apache/superset/pull/13262) fix: migration script message formatting issue (@ktmud)
- [#13216](https://github.com/apache/superset/pull/13216) fix: add missing columns (@betodealmeida)
- [#12960](https://github.com/apache/superset/pull/12960) fix: Retroactively add granularity param to charts (@etr2460)
- [#13052](https://github.com/apache/superset/pull/13052) fix(explore): pie chart label bugs (@villebro)
- [#13015](https://github.com/apache/superset/pull/13015) fix: time filter db migration optimization (@ktmud)
- [#12950](https://github.com/apache/superset/pull/12950) chore: rename revision to match naming scheme (@etr2460)
- [#12680](https://github.com/apache/superset/pull/12680) feat(dashboard_rbac): dashboard lists (@amitmiran137)
- [#12552](https://github.com/apache/superset/pull/12552) fix(explore): deprecated x periods pattern in new time picker value (@zhaoyongjie)
- [#12336](https://github.com/apache/superset/pull/12336) chore: remove additional incubator references (@amitmiran137)
**Features**
- [#13353](https://github.com/apache/superset/pull/13353) feat: add Firebird DB engine spec (@betodealmeida)
- [#13271](https://github.com/apache/superset/pull/13271) feat(chart-data): add rowcount, timegrain and column result types (@villebro)
- [#13214](https://github.com/apache/superset/pull/13214) feat(presto): add support for user impersonation (@rijojoseph07)
- [#13049](https://github.com/apache/superset/pull/13049) feat: Add sort by for dist bar chart (@maloun96)
- [#13057](https://github.com/apache/superset/pull/13057) feat: Add sort by metric for charts with multiple metrics (@maloun96)
- [#13182](https://github.com/apache/superset/pull/13182) feat: Move SQLAlchemy url reference to config (@hughhhh)
- [#13130](https://github.com/apache/superset/pull/13130) feat(helm): Evaluate configOverrides as templates (@Yann-J)
- [#13205](https://github.com/apache/superset/pull/13205) feat(filter-sets): Saving filter sets in metadata (@simcha90)
- [#13037](https://github.com/apache/superset/pull/13037) feat: add autocopy functionality to CopyToClipboard (#10328) (@michael-s-molina)
- [#13031](https://github.com/apache/superset/pull/13031) feat(filters-set): basic implementation for managing user filter sets (@simcha90)
- [#13150](https://github.com/apache/superset/pull/13150) feat(alerts): apply SQL limit to all alerts (@dpgaspar)
- [#13116](https://github.com/apache/superset/pull/13116) feat(helm): Helm template for Celery beat (for reporting and alerting) (@Yann-J)
- [#13114](https://github.com/apache/superset/pull/13114) feat: Added annotations and loadBalancerIP option in helm service.yaml (@cheunhong)
- [#13148](https://github.com/apache/superset/pull/13148) feat(native-filters): enable filter indicator and make datasource optional (@simcha90)
- [#12978](https://github.com/apache/superset/pull/12978) feat(dashboard): API to get a dashboard's charts (@suddjian)
- [#13105](https://github.com/apache/superset/pull/13105) feat: first step native support Trino (@dungdm93)
- [#13058](https://github.com/apache/superset/pull/13058) feat: add sort_by_metric for charts with single metric (@maloun96)
- [#13035](https://github.com/apache/superset/pull/13035) feat(dashboard_rbac): add support for related roles (@amitmiran137)
- [#13108](https://github.com/apache/superset/pull/13108) feat(native-filters): hide filterBar and toggle icon when in editMode (@amitmiran137)
- [#13096](https://github.com/apache/superset/pull/13096) feat: Custom superset_config.py + secret envs (@Yann-J)
- [#13005](https://github.com/apache/superset/pull/13005) feat(native-filters): add storybook entry for select filter (@simcha90)
- [#12992](https://github.com/apache/superset/pull/12992) feat(native-filters): Time native filter (@simcha90)
- [#13056](https://github.com/apache/superset/pull/13056) feat: Force pod restart on config changes (@Yann-J)
- [#12662](https://github.com/apache/superset/pull/12662) feat(cross-filters): add cross filters (@simcha90)
- [#12918](https://github.com/apache/superset/pull/12918) feat(style): hide dashboard header by url parameter (@simcha90)
- [#12602](https://github.com/apache/superset/pull/12602) feat(db engines): add support for Opendistro Elasticsearch (AWS ES) (@dpgaspar)
- [#12996](https://github.com/apache/superset/pull/12996) feat: Save datapanel state in local storage (@kgabryje)
- [#12865](https://github.com/apache/superset/pull/12865) feat(dashboard_rbac): dashboards API support for roles create/update + roles validation (@amitmiran137)
- [#12782](https://github.com/apache/superset/pull/12782) feat: reset metrics on dataset change (@pkdotson)
- [#12875](https://github.com/apache/superset/pull/12875) feat(dashboard_rbac): dashboard_view access enforcement (@amitmiran137)
- [#12887](https://github.com/apache/superset/pull/12887) feat(time-table): add row limit control for timeseries table (@maloun96)
- [#12909](https://github.com/apache/superset/pull/12909) feat: clear search on dataset change (@pkdotson)
- [#12840](https://github.com/apache/superset/pull/12840) feat: add separate endpoint to fetch function names for autocomplete (@betodealmeida)
- [#12858](https://github.com/apache/superset/pull/12858) feat(style-theme): add support for custom superset themes (@simcha90)
- [#12199](https://github.com/apache/superset/pull/12199) feat(native-filters): Add defaultValue for Native filters modal (@simcha90)
- [#12663](https://github.com/apache/superset/pull/12663) feat: request ids on API related endpoints (@dpgaspar)
- [#12716](https://github.com/apache/superset/pull/12716) feat(native-filters): apply scoping of native filters to dashboard (@simcha90)
- [#12609](https://github.com/apache/superset/pull/12609) feat: default timepicker to last week when dataset is changed (@pkdotson)
- [#12740](https://github.com/apache/superset/pull/12740) feat: Adding option to set_database_uri CLI command (@craig-rueda)
- [#12635](https://github.com/apache/superset/pull/12635) feat: add decorator to guard public APIs (@betodealmeida)
- [#12581](https://github.com/apache/superset/pull/12581) feat(bigquery): implement custom minute time grains (@villebro)
- [#11720](https://github.com/apache/superset/pull/11720) feat(db-engine-specs): add support for Postgres root cert (@villebro)
- [#12415](https://github.com/apache/superset/pull/12415) feat: new Slack dashboard (@betodealmeida)
**Fixes**
- [#13735](https://github.com/apache/superset/pull/13735) fix: Properly escape special characters in CSV output (@benjreinhart)
- [#13461](https://github.com/apache/superset/pull/13461) fix: url shortener invalid input (@dpgaspar)
- [#13157](https://github.com/apache/superset/pull/13157) fix(alerts&reports): Alerts & Reports will use values from WEBDRIVER_WINDOW option (@iercan)
- [#13350](https://github.com/apache/superset/pull/13350) fix(celery): Reset DB connection pools for forked worker processes (@robdiciuccio)
- [#13300](https://github.com/apache/superset/pull/13300) fix: exception when saving dash (@amitmiran137)
- [#13284](https://github.com/apache/superset/pull/13284) fix(listview): preserve bulk selections when view mode is changed (@nytai)
- [#13289](https://github.com/apache/superset/pull/13289) fix(alerts): Handle None on results (@dpgaspar)
- [#12937](https://github.com/apache/superset/pull/12937) fix: chart keys in MultiLineViz (@rwspielman)
- [#13254](https://github.com/apache/superset/pull/13254) fix: style tweaks for inconsistent button spacing (@rusackas)
- [#13291](https://github.com/apache/superset/pull/13291) fix(home): missing key and invalid dates in Recents cards (@ktmud)
- [#12926](https://github.com/apache/superset/pull/12926) fix: add alert report timeout limits (@riahk)
- [#13283](https://github.com/apache/superset/pull/13283) fix(menu): links that result in 404s (@nytai)
- [#13245](https://github.com/apache/superset/pull/13245) fix: bulk select on card view (@lilykuang)
- [#13233](https://github.com/apache/superset/pull/13233) fix(viz): calendar heatmap granularity (@maloun96)
- [#13186](https://github.com/apache/superset/pull/13186) fix: SqlEditor_spec tests (@michael-s-molina)
- [#13222](https://github.com/apache/superset/pull/13222) fix(alert/report): alert modal loading dropdown options (@lilykuang)
- [#13122](https://github.com/apache/superset/pull/13122) fix: TimeTable average with nulls calculations (@pavlozt)
- [#13181](https://github.com/apache/superset/pull/13181) fix(explore): Fix downloading as image charts which use Mapbox (@kgabryje)
- [#13163](https://github.com/apache/superset/pull/13163) fix: Fixing pinot query generation for date format conversion from python datetime format to java simple date format (@fx19880617)
- [#13123](https://github.com/apache/superset/pull/13123) fix: add the untranslated text content of Chart page, Sql Editor page and some dashboard label in messages.pot (@cdmikechen)
- [#13211](https://github.com/apache/superset/pull/13211) fix(explore): Reset values in TextControl only when datasource changes (@kgabryje)
- [#13219](https://github.com/apache/superset/pull/13219) fix: Update display string when sqlalchemy doc config us changed (@hughhhh)
- [#13217](https://github.com/apache/superset/pull/13217) fix(native-filters): uncapitalize filter name (@amitmiran137)
- [#13160](https://github.com/apache/superset/pull/13160) fix: Grab datasets initially onMount (@hughhhh)
- [#13086](https://github.com/apache/superset/pull/13086) fix: accept null groupby in form data for timeseries table viz (@michellethomas)
- [#13173](https://github.com/apache/superset/pull/13173) fix(api): apply dashboard filter to get dash charts API (@dpgaspar)
- [#13178](https://github.com/apache/superset/pull/13178) fix(cross-filters): apply cross filters for all charts (@simcha90)
- [#13141](https://github.com/apache/superset/pull/13141) fix: handle lack of dynamic plugins (@suddjian)
- [#13153](https://github.com/apache/superset/pull/13153) fix: engines that don't support comments (@dpgaspar)
- [#12977](https://github.com/apache/superset/pull/12977) fix(alert/report): bulk select mode should be deactivated (@lilykuang)
- [#13180](https://github.com/apache/superset/pull/13180) fix(sqllab): menu link results in 404 (@nytai)
- [#13164](https://github.com/apache/superset/pull/13164) fix(native-filters): Apply range filter (@simcha90)
- [#13165](https://github.com/apache/superset/pull/13165) fix(native-filters): correct apply of native filter scopes (@simcha90)
- [#13154](https://github.com/apache/superset/pull/13154) fix(explore): Chart panel overflowing (@kgabryje)
- [#13120](https://github.com/apache/superset/pull/13120) fix: misspelling Erik Ritter (@etr2460)
- [#12955](https://github.com/apache/superset/pull/12955) fix(alert/report): add/edit modal issue (@lilykuang)
- [#13133](https://github.com/apache/superset/pull/13133) fix(explore): Certificate icon not displaying for certified metrics (@kgabryje)
- [#13147](https://github.com/apache/superset/pull/13147) fix(database): ensure pk_constraint is JSON serializable (@villebro)
- [#13138](https://github.com/apache/superset/pull/13138) fix(chart-data-api): support numeric temporal columns (@villebro)
- [#13090](https://github.com/apache/superset/pull/13090) fix(alerts): void query with numeric comparison (@dpgaspar)
- [#13109](https://github.com/apache/superset/pull/13109) fix(FilterBox): treat empty defaultValues as null (@ktmud)
- [#13094](https://github.com/apache/superset/pull/13094) fix: Fix switching viz type to and from Filter box (@kgabryje)
- [#13022](https://github.com/apache/superset/pull/13022) fix: Add some missing Chinese translation content, including superset-ui project (@cdmikechen)
- [#13000](https://github.com/apache/superset/pull/13000) fix(native-filters): set currentValue null when empty (@villebro)
- [#13061](https://github.com/apache/superset/pull/13061) fix: Update http error code from 400 to 403 for permission error (@duynguyenhoang)
- [#13029](https://github.com/apache/superset/pull/13029) fix(explore): Enable selecting an option not included in suggestions (@kgabryje)
- [#13076](https://github.com/apache/superset/pull/13076) fix: API tests, make them possible to run independently again (@dpgaspar)
- [#13051](https://github.com/apache/superset/pull/13051) fix: add config to disable dataset ownership on the old api (@dpgaspar)
- [#12931](https://github.com/apache/superset/pull/12931) fix: add required \* indicator to message content/notif method in alert/report modal (@riahk)
- [#13075](https://github.com/apache/superset/pull/13075) fix(ci): multiline regex in change detection (@villebro)
- [#13008](https://github.com/apache/superset/pull/13008) fix: Disabled state button transition time (@AAfghahi)
- [#13059](https://github.com/apache/superset/pull/13059) fix: sorting by saved metric (@villebro)
- [#13041](https://github.com/apache/superset/pull/13041) fix: timeout context manager on Windows (@betodealmeida)
- [#13042](https://github.com/apache/superset/pull/13042) fix: vertical scroll in query history (@betodealmeida)
- [#13026](https://github.com/apache/superset/pull/13026) fix: UI toast typo (@dpgaspar)
- [#13039](https://github.com/apache/superset/pull/13039) fix(build): black failing on master, add to required checks (@robdiciuccio)
- [#13024](https://github.com/apache/superset/pull/13024) fix: fix the untranslated text content of Dashboard page (@cdmikechen)
- [#13034](https://github.com/apache/superset/pull/13034) fix(ci): remove signature requirements for commits to master (@nytai)
- [#12999](https://github.com/apache/superset/pull/12999) fix: add alerts and report to default config (@dpgaspar)
- [#12945](https://github.com/apache/superset/pull/12945) fix: refresh dashboard list after bulk delete (@michael-s-molina)
- [#12923](https://github.com/apache/superset/pull/12923) fix: added text and changed margins (@AAfghahi)
- [#12966](https://github.com/apache/superset/pull/12966) fix: typo to apache/superset (@AAfghahi)
- [#12973](https://github.com/apache/superset/pull/12973) fix: SQL Lab editor height in Safari (@betodealmeida)
- [#12956](https://github.com/apache/superset/pull/12956) fix: SqlLab Run button fix (@AAfghahi)
- [#12953](https://github.com/apache/superset/pull/12953) fix: Detecting top scroll on Dashboard header (@kkucharc)
- [#12933](https://github.com/apache/superset/pull/12933) fix(viz): improve dtype inference logic (@villebro)
- [#12859](https://github.com/apache/superset/pull/12859) fix: Add inclusive and exclusive text for start date and end date (@maloun96)
- [#12930](https://github.com/apache/superset/pull/12930) fix(viz): bump table viz to fix ordering bug (@villebro)
- [#12906](https://github.com/apache/superset/pull/12906) fix: Config for dataset health check (@graceguo-supercat)
- [#12905](https://github.com/apache/superset/pull/12905) fix(chart): allow `null` for optional query object props (@ktmud)
- [#12898](https://github.com/apache/superset/pull/12898) fix: comment typo (@etr2460)
- [#12890](https://github.com/apache/superset/pull/12890) fix(explore): missing select when groupby without metrics (@villebro)
- [#12579](https://github.com/apache/superset/pull/12579) fix: Installing Superset Locally Using Docker Compose (@mephinet)
- [#12841](https://github.com/apache/superset/pull/12841) fix: correct title weights in UPDATING.md (@eschutho)
- [#12836](https://github.com/apache/superset/pull/12836) fix: remove explicit cursor closing for BQ (@betodealmeida)
- [#12625](https://github.com/apache/superset/pull/12625) fix(CI): properly configure cancel duplicates (@ktmud)
- [#12736](https://github.com/apache/superset/pull/12736) fix: Remove double tooltip from metric label (@kgabryje)
- [#12800](https://github.com/apache/superset/pull/12800) fix: rm grace period field for reports modal (@riahk)
- [#12821](https://github.com/apache/superset/pull/12821) fix: don't close cursor before closing connection (@betodealmeida)
- [#12811](https://github.com/apache/superset/pull/12811) fix(reports): handle exceptions properly in scope (@dpgaspar)
- [#12742](https://github.com/apache/superset/pull/12742) fix: Prevent dashboard with filter_values template cause incompatible indicator (@graceguo-supercat)
- [#12219](https://github.com/apache/superset/pull/12219) fix: tests errors and warnings - iteration 3 (#12212) (@michael-s-molina)
- [#12224](https://github.com/apache/superset/pull/12224) fix: tests errors and warnings - iteration 5 (#12212) (@michael-s-molina)
- [#12227](https://github.com/apache/superset/pull/12227) fix: tests errors and warnings - iteration 6 (#12212) (@michael-s-molina)
- [#12223](https://github.com/apache/superset/pull/12223) fix: tests errors and warnings - iteration 4 (#12212) (@michael-s-molina)
- [#12245](https://github.com/apache/superset/pull/12245) fix: tests errors and warnings - iteration 7 (#12212) (@michael-s-molina)
- [#12214](https://github.com/apache/superset/pull/12214) fix: test errors and warnings - iteration 2 (#12212) (@michael-s-molina)
- [#12706](https://github.com/apache/superset/pull/12706) fix: update latest tag action to use set-output (@eschutho)
- [#12658](https://github.com/apache/superset/pull/12658) fix(dashboard): top dropdown indicator in tab moved closer to the bottom edge (@kkucharc)
- [#12519](https://github.com/apache/superset/pull/12519) fix(native-filters): Reset column field for removed dataset (@agatapst)
- [#12524](https://github.com/apache/superset/pull/12524) fix(native-filters): Improve UI for long native filters names (@agatapst)
- [#12687](https://github.com/apache/superset/pull/12687) fix(native-filters): Show incompatible native filters indicator (@agatapst)
- [#12702](https://github.com/apache/superset/pull/12702) fix(load_examples): better fix for load_data (@betodealmeida)
- [#12692](https://github.com/apache/superset/pull/12692) fix: Adding gatsby remove serviceworker (@craig-rueda)
- [#12659](https://github.com/apache/superset/pull/12659) fix(explore): Error message not displayed correctly in Timeseries table chart (@kgabryje)
- [#12627](https://github.com/apache/superset/pull/12627) fix: Stabilize and deprecate legacy alerts module (@robdiciuccio)
- [#12638](https://github.com/apache/superset/pull/12638) fix(CI): remove duplicate hive and presto tests (@ktmud)
- [#12607](https://github.com/apache/superset/pull/12607) fix: save tabs when saving the query bug (@hughhhh)
- [#12240](https://github.com/apache/superset/pull/12240) fix: helm chart to use Bitnami chart (@liamnv)
- [#12567](https://github.com/apache/superset/pull/12567) fix: update helm chart repository (@palindrom615)
- [#12526](https://github.com/apache/superset/pull/12526) fix: ignore system files on import (@betodealmeida)
- [#12182](https://github.com/apache/superset/pull/12182) fix: Add Omnibar Feature Flag (@hughhhh)
- [#12252](https://github.com/apache/superset/pull/12252) fix: Displaying filter indicators (@agatapst)
- [#12360](https://github.com/apache/superset/pull/12360) fix: css templates modal cleanup: keep modal open on error, utilize useEffect (@riahk)
- [#12467](https://github.com/apache/superset/pull/12467) fix(alert/report): remove crontab guru link from add/edit modal (@lilykuang)
- [#12461](https://github.com/apache/superset/pull/12461) fix(releasing): svn dockerfile requirements path (@villebro)
- [#12412](https://github.com/apache/superset/pull/12412) fix: uneven list header padding (#12029) (@michael-s-molina)
- [#12432](https://github.com/apache/superset/pull/12432) fix(explore): fixed table header in chrome (@junlincc)
- [#12433](https://github.com/apache/superset/pull/12433) fix: update savedatasetmodal message (@hughhhh)
- [#12354](https://github.com/apache/superset/pull/12354) fix(api): prefix class names on events actions (@dpgaspar)
- [#12404](https://github.com/apache/superset/pull/12404) fix(explore): Prevent duplicated query by data table (@graceguo-supercat)
**Others**
- [#13777](https://github.com/apache/superset/pull/13777) docs: added release notes for 1.1 (@srinify)
- [#13588](https://github.com/apache/superset/pull/13588) chore: script for changelog (@lilykuang)
- [#13402](https://github.com/apache/superset/pull/13402) docs: add file for users to see status of feature flags (@eschutho)
- [#13431](https://github.com/apache/superset/pull/13431) chore: clean remaining old directed force graph code (@mayurnewase)
- [#12882](https://github.com/apache/superset/pull/12882) chore: bump pyarrow and pandas (@villebro)
- [#13304](https://github.com/apache/superset/pull/13304) test: change data-test-id to data-test in FlashProvider (@yardz)
- [#13171](https://github.com/apache/superset/pull/13171) docs: Connecting to Trino Databases (@dungdm93)
- [#12238](https://github.com/apache/superset/pull/12238) chore: update instructions for Pinot in connecting to databases (@pablo-tech)
- [#12920](https://github.com/apache/superset/pull/12920) refactor: Bootstrap to AntD - Collapse (@michael-s-molina)
- [#13292](https://github.com/apache/superset/pull/13292) test: replace data-test-id with data-test (@ktmud)
- [#13220](https://github.com/apache/superset/pull/13220) test: Switching FlashProvider to function component & creating tests (@yardz)
- [#13235](https://github.com/apache/superset/pull/13235) refactor: Move raise_for_dashboard_access to security manager (@bolkedebruin)
- [#13212](https://github.com/apache/superset/pull/13212) refactor(api): csrf token on the new REST API (@dpgaspar)
- [#12870](https://github.com/apache/superset/pull/12870) test: fix schedules tests (@kstrz)
- [#12864](https://github.com/apache/superset/pull/12864) test: reports/commands_tests (@kstrz)
- [#13241](https://github.com/apache/superset/pull/13241) test: add Tests and Storybook for AsyncAceEditor (@michael-s-molina)
- [#13268](https://github.com/apache/superset/pull/13268) refactor(native-filters): Refactor filters config modal module (@simcha90)
- [#13258](https://github.com/apache/superset/pull/13258) chore(viz): bump superset-ui 0.17.10 (@villebro)
- [#13260](https://github.com/apache/superset/pull/13260) ci: always execute tests on non-PRs (@villebro)
- [#12122](https://github.com/apache/superset/pull/12122) refactor: Bootstrap to AntD - Alert (@michael-s-molina)
- [#13215](https://github.com/apache/superset/pull/13215) chore: bump node.js to v14 (@kgabryje)
- [#13250](https://github.com/apache/superset/pull/13250) refactor: add frontend debounce constants (@ktmud)
- [#13213](https://github.com/apache/superset/pull/13213) test: Tests and Storybook entry for the ModalTrigger Component (@geido)
- [#13176](https://github.com/apache/superset/pull/13176) test: Tests and Storybook entry for the Popover component (@geido)
- [#12773](https://github.com/apache/superset/pull/12773) chore: Tab title to be empty when creating a new tab (@geido)
- [#13002](https://github.com/apache/superset/pull/13002) refactor: Bootstrap to AntD - DropdownButton (@michael-s-molina)
- [#13098](https://github.com/apache/superset/pull/13098) refactor: HighligthedSQL into functional component with Typescript (@AAfghahi)
- [#13143](https://github.com/apache/superset/pull/13143) chore: add non-dev docker-compose workflow (@nytai)
- [#13185](https://github.com/apache/superset/pull/13185) chore: use shillelagh instead of gsheetsdb (@betodealmeida)
- [#13201](https://github.com/apache/superset/pull/13201) docs: Fix typo in pyathena connection string (@ctSkennerton)
- [#13179](https://github.com/apache/superset/pull/13179) test: Adding test and storybook to "Loading" component. (@yardz)
- [#13184](https://github.com/apache/superset/pull/13184) test: creates storybook and tests for Tooltip component (@michael-s-molina)
- [#13136](https://github.com/apache/superset/pull/13136) test(coverage): ignore database migrations on coverage reports (@willbarrett)
- [#13142](https://github.com/apache/superset/pull/13142) refactor: remove deprecated field from frontend usage (@suddjian)
- [#13087](https://github.com/apache/superset/pull/13087) perf: add lazy loading along react-router routes and router links in menu (@nytai)
- [#13139](https://github.com/apache/superset/pull/13139) style(list view): table sort icon alignment (@nytai)
- [#13149](https://github.com/apache/superset/pull/13149) chore: change test environment to jsdom (@michael-s-molina)
- [#13100](https://github.com/apache/superset/pull/13100) chore: upgrade to npm 7 and superset-ui 0.17.9 (@ktmud)
- [#13113](https://github.com/apache/superset/pull/13113) build: add more files to .dockerignore (@ktmud)
- [#13021](https://github.com/apache/superset/pull/13021) refactor(native-filters): decouple params from filter config modal (first phase) (@simcha90)
- [#13079](https://github.com/apache/superset/pull/13079) test(frontend): improves react-testing-library configuration (@michael-s-molina)
- [#13083](https://github.com/apache/superset/pull/13083) docs: Added a note about the ! prefix for breaking changes to CONTRIBUTING.md (@garden-of-delete)
- [#13069](https://github.com/apache/superset/pull/13069) chore: lock down npm to v6 (@ktmud)
- [#13063](https://github.com/apache/superset/pull/13063) style: fix typo in documentation (@dbz10)
- [#12981](https://github.com/apache/superset/pull/12981) docs(changelog): add entries for 1.0.1 (@villebro)
- [#12982](https://github.com/apache/superset/pull/12982) ci: skip cypress if no code changes (@villebro)
- [#12970](https://github.com/apache/superset/pull/12970) chore: add cypress required checks for branch protection (@eschutho)
- [#13014](https://github.com/apache/superset/pull/13014) chore: updates storybook to version 6.1.17 (@michael-s-molina)
- [#13004](https://github.com/apache/superset/pull/13004) chore: Swap Slack Url 2 more places (@srinify)
- [#12889](https://github.com/apache/superset/pull/12889) refactor(native-filters): refactor code of native filters (@simcha90)
- [#12991](https://github.com/apache/superset/pull/12991) docs: typo fix in release notes (@iercan)
- [#12873](https://github.com/apache/superset/pull/12873) refactor: TemplateParamsEditor.jsx converted from class to functional component (@lyndsiWilliams)
- [#12806](https://github.com/apache/superset/pull/12806) refactor: speed up conversion from dataframe to list of records (@TColl)
- [#12980](https://github.com/apache/superset/pull/12980) chore: rename action to docker-build (@eschutho)
- [#12969](https://github.com/apache/superset/pull/12969) chore: add more required checks for branch protection (@eschutho)
- [#12974](https://github.com/apache/superset/pull/12974) chore: swap slack url on ASF docs (@srinify)
- [#12972](https://github.com/apache/superset/pull/12972) chore: cleanup no-op Cypress (chrome) job (@ktmud)
- [#12968](https://github.com/apache/superset/pull/12968) chore: change name of lint action (@eschutho)
- [#12967](https://github.com/apache/superset/pull/12967) chore: remove example token to avoid confusion (@ktmud)
- [#12928](https://github.com/apache/superset/pull/12928) chore: add more required checks (@eschutho)
- [#12583](https://github.com/apache/superset/pull/12583) ci: conditionally skip python and frontend tests (@villebro)
- [#12180](https://github.com/apache/superset/pull/12180) test: Added some Cypress tests for Native Filters (@adam-stasiak)
- [#12936](https://github.com/apache/superset/pull/12936) test: fix table chart sort order E2E tests (@ktmud)
- [#12921](https://github.com/apache/superset/pull/12921) chore: rename duplicate build jobs (@eschutho)
- [#12885](https://github.com/apache/superset/pull/12885) test: speedup celery tests (@kstrz)
- [#12901](https://github.com/apache/superset/pull/12901) build(deps): Bump jinja2 to 2.11.3 (@robdiciuccio)
- [#12848](https://github.com/apache/superset/pull/12848) chore(dashboard_rbac): remove overlapping security tests (@amitmiran137)
- [#12894](https://github.com/apache/superset/pull/12894) chore: remove SIP-38 feature flag (@villebro)
- [#12694](https://github.com/apache/superset/pull/12694) chore: add required review on master (@eschutho)
- [#12738](https://github.com/apache/superset/pull/12738) refactor: Bootstrap to AntD - Radio (@michael-s-molina)
- [#12869](https://github.com/apache/superset/pull/12869) refactor: dbapi exception mapping for dbapi's (@dpgaspar)
- [#12884](https://github.com/apache/superset/pull/12884) chore(lint): fix pre-commit error (@villebro)
- [#12857](https://github.com/apache/superset/pull/12857) refactor(color-schemes): refactor setting of color schemes (@simcha90)
- [#12774](https://github.com/apache/superset/pull/12774) refactor: Bootstrap to AntD - Label (@michael-s-molina)
- [#10771](https://github.com/apache/superset/pull/10771) [Helm] Automate datasource import (@ejianu)
- [#12610](https://github.com/apache/superset/pull/12610) build: Skip loading example data from configs in CI (@robdiciuccio)
- [#12832](https://github.com/apache/superset/pull/12832) refactor: Bootstrap to AntD - Button (@michael-s-molina)
- [#12854](https://github.com/apache/superset/pull/12854) chore: bump superset-ui packages to v0.17.2 and v0.17.3 (@ktmud)
- [#12846](https://github.com/apache/superset/pull/12846) chore: Slight formatting fixes in exploring-data.mdx (@neilsmiller)
- [#12812](https://github.com/apache/superset/pull/12812) chore(native-filters): Connect indicator magnifier with Filter Bar (@agatapst)
- [#12828](https://github.com/apache/superset/pull/12828) chore: update capitalization guideline (@ktmud)
- [#12831](https://github.com/apache/superset/pull/12831) docs: fix config comment (@zsellami)
- [#12778](https://github.com/apache/superset/pull/12778) chore: Added documentation for 1.0 flags (@srinify)
- [#12743](https://github.com/apache/superset/pull/12743) docs: wrong port name in NOTES.txt (@maddyobrienjones)
- [#12816](https://github.com/apache/superset/pull/12816) docs: add Cape Crypto to users list (@leocape)
- [#12833](https://github.com/apache/superset/pull/12833) docs: fix broken link to spark. (@pr-lawrence)
- [#12772](https://github.com/apache/superset/pull/12772) refactor: change Windows new tab shortcut to ctrl + q (@lyndsiWilliams)
- [#10270](https://github.com/apache/superset/pull/10270) refactor: migrate table chart to new API (@ktmud)
- [#12815](https://github.com/apache/superset/pull/12815) chore: Upgrade react-dnd to 11.1.3 (@kgabryje)
- [#12710](https://github.com/apache/superset/pull/12710) docs: Add support for Hologres (@TimothyDing)
- [#12818](https://github.com/apache/superset/pull/12818) docs: add A3Data to users list (@neylsoncrepalde)
- [#12795](https://github.com/apache/superset/pull/12795) refactor: Updated tooltip help text in edit database > SQL Lab settings (@lyndsiWilliams)
- [#12813](https://github.com/apache/superset/pull/12813) chore: adding feature flags v1 documentation in Release Notes (@srinify)
- [#12748](https://github.com/apache/superset/pull/12748) chore(docs): update tox testing run to relevant python env (@amitmiran137)
- [#12754](https://github.com/apache/superset/pull/12754) chore: add breaking change to title regex (@eschutho)
- [#12749](https://github.com/apache/superset/pull/12749) docs: Adding design guidelines to CONTRIBUTING.md (@mihir174)
- [#12792](https://github.com/apache/superset/pull/12792) docs: fix 1.0.0 README images (v2) (@dpgaspar)
- [#12781](https://github.com/apache/superset/pull/12781) docs: 1.0.0 release notes update: media + feature flags (@garden-of-delete)
- [#12777](https://github.com/apache/superset/pull/12777) docs: update changelog for 1.0.0 (@eschutho)
- [#12626](https://github.com/apache/superset/pull/12626) docs: Updates to Superset Site for 1.0 (@srinify)
- [#12655](https://github.com/apache/superset/pull/12655) test(native-filters): scoping tree in native filters modal (@simcha90)
- [#12605](https://github.com/apache/superset/pull/12605) chore: upgrade Cypress to 6.2.1 (@ktmud)
- [#12218](https://github.com/apache/superset/pull/12218) refactor(explore): Enhance Dataset and Control panel Collapse components (@geido)
- [#12739](https://github.com/apache/superset/pull/12739) docs: Fixed typo on line 348 (@lyndsiWilliams)
- [#12693](https://github.com/apache/superset/pull/12693) docs: Remove gatsby-plugin-offline (@robdiciuccio)
- [#12615](https://github.com/apache/superset/pull/12615) test: oracle engine spec (@kstrz)
- [#12520](https://github.com/apache/superset/pull/12520) test: hive db engine spec (@kstrz)
- [#12737](https://github.com/apache/superset/pull/12737) chore: Replace Expired Join Slack Community URL With New One (@srinify)
- [#12718](https://github.com/apache/superset/pull/12718) docs: link fix in CONTRIBUTING.md (@ayanginet)
- [#12709](https://github.com/apache/superset/pull/12709) ci: use git submodules for (securely) using third party Github Actions (@TobKed)
- [#12678](https://github.com/apache/superset/pull/12678) chore: add a note about using Draft PR's importance (@amitmiran137)
- [#12673](https://github.com/apache/superset/pull/12673) docs(db engines): Updade DB2 connection prefix (@cabo40)
- [#12682](https://github.com/apache/superset/pull/12682) docs: updates updating.md with 1.0 (@dpgaspar)
- [#12455](https://github.com/apache/superset/pull/12455) chore: apply capitalization guidelines - iteration 9 (#12343) (@michael-s-molina)
- [#12666](https://github.com/apache/superset/pull/12666) chore: skip CI on draft PR (@amitmiran137)
- [#12594](https://github.com/apache/superset/pull/12594) test: presto engine spec tests (@kstrz)
- [#12539](https://github.com/apache/superset/pull/12539) test(hana): add test_convert_dttm (@kstrz)
- [#12633](https://github.com/apache/superset/pull/12633) docs(release): add some improvements from 1.0.0 release round (@villebro)
- [#12616](https://github.com/apache/superset/pull/12616) test: sqlite db engine spec (@kstrz)
- [#12642](https://github.com/apache/superset/pull/12642) docs: fix redirect from bad find/replace (@mistercrunch)
- [#12637](https://github.com/apache/superset/pull/12637) docs: README.md navigation changes for 1.0.0 (@garden-of-delete)
- [#12617](https://github.com/apache/superset/pull/12617) refactor: rename DbColumnType to GenericDataType (@ktmud)
- [#12171](https://github.com/apache/superset/pull/12171) refactor: Sync Scoping tree with Forms data (@simcha90)
- [#12413](https://github.com/apache/superset/pull/12413) chore(chart): Save modal select placeholder value (@nikolagigic)
- [#12591](https://github.com/apache/superset/pull/12591) docs(release): add vote thread to result template (@villebro)
- [#12570](https://github.com/apache/superset/pull/12570) refactor: extract to method is_user_admin (@amitmiran137)
- [#12571](https://github.com/apache/superset/pull/12571) chore: update contribution guide (@amitmiran137)
- [#12511](https://github.com/apache/superset/pull/12511) docs : release notes 1.0 (@garden-of-delete)
- [#12563](https://github.com/apache/superset/pull/12563) chore: upgrade CI runner to Ubuntu 20.04 (@ktmud)
- [#12534](https://github.com/apache/superset/pull/12534) build(cypress): Add Cypress parallelization with obfuscated record key (@robdiciuccio)
- [#12490](https://github.com/apache/superset/pull/12490) test: /postgres engine spec test coverage (@kstrz)
- [#12548](https://github.com/apache/superset/pull/12548) test: mysql engine spec (@kstrz)
- [#12510](https://github.com/apache/superset/pull/12510) build: fix emotion theme errors when npm link @superset-ui/core (@ktmud)
- [#12523](https://github.com/apache/superset/pull/12523) ci(cypress): disable failing test (@villebro)
- [#12405](https://github.com/apache/superset/pull/12405) chore: remove duplicate DashboardFilter class and change imports accordingly (@amitmiran137)
- [#12420](https://github.com/apache/superset/pull/12420) chore: Add owner field to the alerts list (@bkyryliuk)
- [#12394](https://github.com/apache/superset/pull/12394) build: add cancel-workflow-runs action locally (@ktmud)
- [#12267](https://github.com/apache/superset/pull/12267) docs: fix styles and add algolia search classes (@pkdotson)
- [#12020](https://github.com/apache/superset/pull/12020) build(deps): bump ini from 1.3.5 to 1.3.8 in /docs (@dependabot[bot])
- [#12232](https://github.com/apache/superset/pull/12232) build(deps): bump urijs from 1.19.1 to 1.19.4 in /superset-frontend (@dependabot[bot])
- [#11869](https://github.com/apache/superset/pull/11869) docs: reword and cleanup docs for local dev server (@ktmud)
### 1.0.1 (Tue Feb 2 09:24:40 2021 +0000)
- [#12872](https://github.com/apache/superset/pull/12872) feat(release): add github token to changelog script (#12872) (@dpgaspar)
- [#12886](https://github.com/apache/superset/pull/12886) fix: allow users to reset their passwords (#12886) (@dpgaspar)
+248 -16
View File
@@ -39,9 +39,14 @@ little bit helps, and credit will always be given.
- [Protocol](#protocol)
- [Authoring](#authoring)
- [Reviewing](#reviewing)
- [Test Environments](#test-environments)
- [Merging](#merging)
- [Post-merge Responsibility](#post-merge-responsibility)
- [Design Guidelines](#design-guidelines)
- [Capitalization guidelines](#capitalization-guidelines)
- [Sentence case](#sentence-case)
- [How to refer to UI elements](#how-to-refer-to-ui-elements)
- [\*\*Exceptions to sentence case:](#exceptions-to-sentence-case)
- [Managing Issues and PRs](#managing-issues-and-prs)
- [Reporting a Security Vulnerability](#reporting-a-security-vulnerability)
- [Revert Guidelines](#revert-guidelines)
@@ -76,6 +81,7 @@ little bit helps, and credit will always be given.
- [Translating](#translating)
- [Enabling language selection](#enabling-language-selection)
- [Extracting new strings for translation](#extracting-new-strings-for-translation)
- [Updating language files](#updating-language-files)
- [Creating a new language dictionary](#creating-a-new-language-dictionary)
- [Tips](#tips)
- [Adding a new datasource](#adding-a-new-datasource)
@@ -222,6 +228,7 @@ Finally, never submit a PR that will put master branch in broken state. If the P
- `fix(chart-api): cached-indicator always shows value is cached`
- Add prefix `[WIP]` to title if not ready for review (WIP = work-in-progress). We recommend creating a PR with `[WIP]` first and remove it once you have passed CI test and read through your code changes at least once.
- If you believe your PR contributes a potentially breaking change, put a `!` after the semantic prefix but before the colon in the PR title, like so: `feat!: Added foo functionality to bar`
- **Screenshots/GIFs:** Changes to user interface require before/after screenshots, or GIF for interactions
- Recommended capture tools ([Kap](https://getkap.co/), [LICEcap](https://www.cockos.com/licecap/), [Skitch](https://download.cnet.com/Skitch/3000-13455_4-189876.html))
- If no screenshot is provided, the committers will mark the PR with `need:screenshot` label and will not review until screenshot is provided.
@@ -242,6 +249,20 @@ Finally, never submit a PR that will put master branch in broken state. If the P
- If you are asked to update your pull request with some changes there's no need to create a new one. Push your changes to the same branch.
- The committers reserve the right to reject any PR and in some cases may request the author to file an issue.
#### Test Environments
- Members of the Apache GitHub org can launch an ephemeral test environment directly on a pull request by creating a comment containing (only) the command `/testenv up`.
- Note that org membership must be public in order for this validation to function properly.
- Feature flags may be set for a test environment by specifying the flag name (prefixed with `FEATURE_`) and value after the command.
- Format: `/testenv up FEATURE_<feature flag name>=true|false`
- Example: `/testenv up FEATURE_DASHBOARD_NATIVE_FILTERS=true`
- Multiple feature flags may be set in single command, separated by whitespace
- A comment will be created by the workflow script with the address and login information for the ephemeral environment.
- Test environments may be created once the Docker build CI workflow for the PR has completed successfully.
- Test environments do not currently update automatically when new commits are added to a pull request.
- Test environments do not currently support async workers, though this is planned.
- Running test environments will be shutdown upon closing the pull request.
#### Merging
- At least one approval is required for merging a PR.
@@ -258,9 +279,11 @@ Finally, never submit a PR that will put master branch in broken state. If the P
### Capitalization guidelines
#### Sentence case
Use sentence-case capitalization for everything in the UI (except these **).
Use sentence-case capitalization for everything in the UI (except these \*\*).
Sentence case is predominantly lowercase. Capitalize only the initial character of the first word, and other words that require capitalization, like:
- **Proper nouns.** Objects in the product _are not_ considered proper nouns e.g. dashboards, charts, saved queries etc. Proprietary feature names eg. SQL Lab, Preset Manager _are_ considered proper nouns
- **Acronyms** (e.g. CSS, HTML)
- When referring to **UI labels that are themselves capitalized** from sentence case (e.g. page titles - Dashboards page, Charts page, Saved queries page, etc.)
@@ -271,10 +294,12 @@ Title case: "A Dog Takes a Walk in Paris"
Sentence case: "A dog takes a walk in Paris"
**Why sentence case?**
- Its generally accepted as the quickest to read
- Its the easiest form to distinguish between common and proper nouns
#### How to refer to UI elements
When writing about a UI element, use the same capitalization as used in the UI.
For example, if an input field is labeled “Name” then you refer to this as the “Name input field”. Similarly, if a button has the label “Save” in it, then it is correct to refer to the “Save button”.
@@ -292,7 +317,7 @@ Often a product page will have the same title as the objects it contains. In thi
- Queries that you save will appear on the Saved queries page
- Create custom queries in SQL Lab then create dashboards
#### **Exceptions to sentence case:
#### \*\*Exceptions to sentence case:
- Input labels, buttons and UI tabs are all caps
- User input values (e.g. column names, SQL Lab tab names) should be in their original case
@@ -333,6 +358,8 @@ If the PR passes CI tests and does not have any `need:` labels, it is ready for
If an issue/PR has been inactive for >=30 days, it will be closed. If it does not have any status label, add `inactive`.
When creating a PR, if you're aiming to have it included in a specific release, please tag it with the version label. For example, to have a PR considered for inclusion in Superset 1.1 use the label `v1.1`.
## Reporting a Security Vulnerability
Please report security vulnerabilities to private@superset.apache.org.
@@ -415,13 +442,29 @@ superset db upgrade
# Create default roles and permissions
superset init
# Load some data to play with
superset load_examples
# Load some data to play with (you must create an Admin user with the username `admin` for this command to work)
superset load-examples
# Start the Flask dev web server from inside your virtualenv.
# Note that your page may not have css at this point.
# See instructions below how to build the front-end assets.
FLASK_ENV=development superset run -p 8088 --with-threads --reload --debugger
Or you can install via our Makefile
```bash
# Create a virtual environment and activate it (recommended)
$ python3 -m venv venv # setup a python3 virtualenv
$ source venv/bin/activate
# install pip packages + pre-commit
$ make install
# Install superset pip packages and setup env only
$ make superset
# Setup pre-commit only
$ make pre-commit
```
**Note: the FLASK_APP env var should not need to be set, as it's currently controlled
@@ -463,7 +506,7 @@ Frontend assets (TypeScript, JavaScript, CSS, and images) must be compiled in or
##### nvm and node
First, be sure you are using recent versions of NodeJS and npm. We recommend using [nvm](https://github.com/nvm-sh/nvm) to manage your node environment:
First, be sure you are using recent versions of Node.js and npm. We recommend using [nvm](https://github.com/nvm-sh/nvm) to manage your node environment:
```bash
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.0/install.sh | bash
@@ -473,8 +516,19 @@ nvm install
nvm use
```
Or if you use the default macOS starting with Catalina shell `zsh`, try:
```zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.0/install.sh)"
```
For those interested, you may also try out [avn](https://github.com/nvm-sh/nvm#deeper-shell-integration) to automatically switch to the node version that is required to run Superset frontend.
We have upgraded our `package-lock.json` to use `lockfileversion: 2` from npm 7, so please make sure you have installed npm 7, too:
```bash
npm install -g npm@7
```
#### Install dependencies
Install third-party dependencies listed in `package.json` via:
@@ -497,7 +551,7 @@ There are three types of assets you can build:
#### Webpack dev server
The dev server by default starts at `http://localhost:9000` and proxies the backend requests to `http://localhost:8080`. It's possible to change these settings:
The dev server by default starts at `http://localhost:9000` and proxies the backend requests to `http://localhost:8088`. It's possible to change these settings:
```bash
# Start the dev server at http://localhost:9000
@@ -554,6 +608,8 @@ export enum FeatureFlag {
those specified under FEATURE_FLAGS in `superset_config.py`. For example, `DEFAULT_FEATURE_FLAGS = { 'FOO': True, 'BAR': False }` in `superset/config.py` and `FEATURE_FLAGS = { 'BAR': True, 'BAZ': True }` in `superset_config.py` will result
in combined feature flags of `{ 'FOO': True, 'BAR': True, 'BAZ': True }`.
The current status of the usability of each flag (stable vs testing, etc) can be found in `RESOURCES/FEATURE_FLAGS.md`.
## Git Hooks
Superset uses Git pre-commit hooks courtesy of [pre-commit](https://pre-commit.com/). To install run the following:
@@ -563,12 +619,19 @@ pip3 install -r requirements/integration.txt
pre-commit install
```
A series of checks will now run when you make a git commit.
Alternatively it is possible to run pre-commit via tox:
```bash
tox -e pre-commit
```
Or by running pre-commit manually:
```bash
pre-commit run --all-files
```
## Linting
Lint the project with:
@@ -577,15 +640,17 @@ Lint the project with:
# for python
tox -e pylint
Alternatively, you can use pre-commit (mentioned above) for python linting
The Python code is auto-formatted using [Black](https://github.com/python/black) which
is configured as a pre-commit hook. There are also numerous [editor integrations](https://black.readthedocs.io/en/stable/editor_integration.html)
# for frontend
cd superset-frontend
npm ci
npm run lint
```
The Python code is auto-formatted using [Black](https://github.com/python/black) which
is configured as a pre-commit hook. There are also numerous [editor integrations](https://black.readthedocs.io/en/stable/editor_integration.html).
## Conventions
### Python
@@ -671,6 +736,14 @@ Note that the test environment uses a temporary directory for defining the
SQLite databases which will be cleared each time before the group of test
commands are invoked.
There is also a utility script included in the Superset codebase to run python tests. The [readme can be
found here](https://github.com/apache/superset/tree/master/scripts/tests)
To run all tests for example, run this script from the root directory:
```bash
scripts/tests/run.sh
```
### Frontend Testing
We use [Jest](https://jestjs.io/) and [Enzyme](https://airbnb.io/enzyme/) to test TypeScript/JavaScript. Tests can be run with:
@@ -697,7 +770,7 @@ export ENABLE_REACT_CRUD_VIEWS=true
export CYPRESS_BASE_URL="http://localhost:8081"
superset db upgrade
superset load_test_users
superset load_examples --load-test-data
superset load-examples --load-test-data
superset init
superset run --port 8081
```
@@ -752,6 +825,130 @@ npm install
npm run cypress open
```
### Debugging Server App
Follow these instructions to debug the Flask app running inside a docker container.
First add the following to the ./docker-compose.yaml file
```diff
superset:
env_file: docker/.env
image: *superset-image
container_name: superset_app
command: ["/app/docker/docker-bootstrap.sh", "app"]
restart: unless-stopped
+ cap_add:
+ - SYS_PTRACE
ports:
- 8088:8088
+ - 5678:5678
user: "root"
depends_on: *superset-depends-on
volumes: *superset-volumes
environment:
CYPRESS_CONFIG: "${CYPRESS_CONFIG}"
```
Start Superset as usual
```bash
docker-compose up
```
Install the required libraries and packages to the docker container
Enter the superset_app container
```bash
docker exec -it superset_app /bin/bash
root@39ce8cf9d6ab:/app#
```
Run the following commands inside the container
```bash
apt update
apt install -y gdb
apt install -y net-tools
pip install debugpy
```
Find the PID for the Flask process. Make sure to use the first PID. The Flask app will re-spawn a sub-process everytime you change any of the python code. So it's important to use the first PID.
```bash
ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 14:09 ? 00:00:00 bash /app/docker/docker-bootstrap.sh app
root 6 1 4 14:09 ? 00:00:04 /usr/local/bin/python /usr/bin/flask run -p 8088 --with-threads --reload --debugger --host=0.0.0.0
root 10 6 7 14:09 ? 00:00:07 /usr/local/bin/python /usr/bin/flask run -p 8088 --with-threads --reload --debugger --host=0.0.0.0
```
Inject debugpy into the running Flask process. In this case PID 6.
```bash
python3 -m debugpy --listen 0.0.0.0:5678 --pid 6
```
Verify that debugpy is listening on port 5678
```bash
netstat -tunap
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:5678 0.0.0.0:* LISTEN 462/python
tcp 0 0 0.0.0.0:8088 0.0.0.0:* LISTEN 6/python
```
You are now ready to attach a debugger to the process. Using VSCode you can configure a launch configuration file .vscode/launch.json like so.
```
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach to Superset App in Docker Container",
"type": "python",
"request": "attach",
"connect": {
"host": "127.0.0.1",
"port": 5678
},
"pathMappings": [
{
"localRoot": "${workspaceFolder}",
"remoteRoot": "/app"
}
]
},
]
}
```
VSCode will not stop on breakpoints right away. We've attached to PID 6 however it does not yet know of any sub-processes. In order to "wakeup" the debugger you need to modify a python file. This will trigger Flask to reload the code and create a new sub-process. This new sub-process will be detected by VSCode and breakpoints will be activated.
### Debugging Server App in Kubernetes Environment
To debug Flask running in POD inside kubernetes cluster. You'll need to make sure the pod runs as root and is granted the SYS_TRACE capability.These settings should not be used in production environments.
```
securityContext:
capabilities:
add: ["SYS_PTRACE"]
```
See (set capabilities for a container)[https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-capabilities-for-a-container] for more details.
Once the pod is running as root and has the SYS_PTRACE capability it will be able to debug the Flask app.
You can follow the same instructions as in the docker-compose. Enter the pod and install the required library and packages; gdb, netstat and debugpy.
Often in a kuernetes environment nodes are not addressable from ouside the cluster. VSCode will thus be unable to remotely connect to port 5678 on a kubernetes node. In order to do this you need to create a tunnel that port forwards 5678 to your local machine.
```
kubectl port-forward pod/superset-<some random id> 5678:5678
```
You can now launch your VSCode debugger with the same config as above. VSCode will connect to to 127.0.0.1:5678 which is forwarded by kubectl to your remote kubernetes POD.
### Storybook
Superset includes a [Storybook](https://storybook.js.org/) to preview the layout/styling of various Superset components, and variations thereof. To open and view the Storybook:
@@ -836,7 +1033,7 @@ To convert all PO files to formatted JSON files you can use the `po2json.sh` scr
```
If you get errors running `po2json`, you might be running the Ubuntu package with the same
name, rather than the NodeJS package (they have a different format for the arguments). If
name, rather than the Node.js package (they have a different format for the arguments). If
there is a conflict, you may need to update your `PATH` environment variable or fully qualify
the executable path (e.g. `/usr/local/bin/po2json` instead of `po2json`).
If you get a lot of `[null,***]` in `messages.json`, just delete all the `null,`.
@@ -894,6 +1091,9 @@ yarn build
Then use `npm link` to create symlinks of the plugins/superset-ui packages you want to edit in `superset-frontend/node_modules`:
```bash
# Since npm 7, you have to install plugin dependencies separately, too
cd ../../superset-ui/plugins/[PLUGIN NAME] && npm install --legacy-peer-deps
cd superset/superset-frontend
npm link ../../superset-ui/plugins/[PLUGIN NAME]
@@ -937,7 +1137,7 @@ Submissions will be considered for submission (or removal) on a case-by-case bas
1. Generate the migration file
```bash
superset db migrate -m 'add_metadata_column_to_annotation_model.py'
superset db migrate -m 'add_metadata_column_to_annotation_model'
```
This will generate a file in `migrations/version/{SHA}_this_will_be_in_the_migration_filename.py`.
@@ -982,7 +1182,7 @@ Submissions will be considered for submission (or removal) on a case-by-case bas
When two DB migrations collide, you'll get an error message like this one:
```
```text
alembic.util.exc.CommandError: Multiple head revisions are present for
given argument 'head'; please specify a specific target
revision, '<branchname>@head' to narrow to a specific head,
@@ -997,15 +1197,46 @@ To fix it:
superset db heads
```
This should list two or more migration hashes.
This should list two or more migration hashes. E.g.
1. Create a new merge migration
```bash
1412ec1e5a7b (head)
67da9ef1ef9c (head)
```
2. Pick one of them as the parent revision, open the script for the other revision
and update `Revises` and `down_revision` to the new parent revision. E.g.:
```diff
--- a/67da9ef1ef9c_add_hide_left_bar_to_tabstate.py
+++ b/67da9ef1ef9c_add_hide_left_bar_to_tabstate.py
@@ -17,14 +17,14 @@
"""add hide_left_bar to tabstate
Revision ID: 67da9ef1ef9c
-Revises: c501b7c653a3
+Revises: 1412ec1e5a7b
Create Date: 2021-02-22 11:22:10.156942
"""
# revision identifiers, used by Alembic.
revision = "67da9ef1ef9c"
-down_revision = "c501b7c653a3"
+down_revision = "1412ec1e5a7b"
import sqlalchemy as sa
from alembic import op
```
Alternatively you may also run `superset db merge` to create a migration script
just for merging the heads.
```bash
superset db merge {HASH1} {HASH2}
```
1. Upgrade the DB to the new checkpoint
3. Upgrade the DB to the new checkpoint
```bash
superset db upgrade
@@ -1063,6 +1294,7 @@ The following configuration settings are available for async queries (see config
- `GLOBAL_ASYNC_QUERIES_REDIS_STREAM_LIMIT_FIREHOSE` - the maximum number of events for all users (FIFO eviction)
- `GLOBAL_ASYNC_QUERIES_JWT_COOKIE_NAME` - the async query feature uses a [JWT](https://tools.ietf.org/html/rfc7519) cookie for authentication, this setting is the cookie's name
- `GLOBAL_ASYNC_QUERIES_JWT_COOKIE_SECURE` - JWT cookie secure option
- `GLOBAL_ASYNC_QUERIES_JWT_COOKIE_DOMAIN` - JWT cookie domain option ([see docs for set_cookie](https://tedboy.github.io/flask/interface_api.response_object.html#flask.Response.set_cookie))
- `GLOBAL_ASYNC_QUERIES_JWT_SECRET` - JWT's use a secret key to sign and validate the contents. This value should be at least 32 bytes and have sufficient randomness for proper security
- `GLOBAL_ASYNC_QUERIES_TRANSPORT` - currently the only available option is (HTTP) `polling`, but support for a WebSocket will be added in future versions
- `GLOBAL_ASYNC_QUERIES_POLLING_DELAY` - the time (in ms) between polling requests
+37 -2
View File
@@ -45,7 +45,10 @@ RUN cd /app \
######################################################################
# Node stage to deal with static asset construction
######################################################################
FROM node:12 AS superset-node
FROM node:14 AS superset-node
ARG NPM_VER=7
RUN npm install -g npm@${NPM_VER}
ARG NPM_BUILD_CMD="build"
ENV BUILD_CMD=${NPM_BUILD_CMD}
@@ -79,7 +82,7 @@ ENV LANG=C.UTF-8 \
FLASK_APP="superset.app:create_app()" \
PYTHONPATH="/app/pythonpath" \
SUPERSET_HOME="/app/superset_home" \
SUPERSET_PORT=8080
SUPERSET_PORT=8088
RUN useradd --user-group --no-create-home --no-log-init --shell /bin/bash superset \
&& mkdir -p ${SUPERSET_HOME} ${PYTHONPATH} \
@@ -87,6 +90,7 @@ RUN useradd --user-group --no-create-home --no-log-init --shell /bin/bash supers
&& apt-get install -y --no-install-recommends \
build-essential \
default-libmysqlclient-dev \
libsasl2-modules-gssapi-mit \
libpq-dev \
&& rm -rf /var/lib/apt/lists/*
@@ -119,12 +123,43 @@ ENTRYPOINT ["/usr/bin/docker-entrypoint.sh"]
# Dev image...
######################################################################
FROM lean AS dev
ARG GECKODRIVER_VERSION=v0.28.0
ARG FIREFOX_VERSION=88.0
COPY ./requirements/*.txt ./docker/requirements-*.txt/ /app/requirements/
USER root
RUN apt-get update -y \
&& apt-get install -y --no-install-recommends libnss3 libdbus-glib-1-2 libgtk-3-0 libx11-xcb1
# Install GeckoDriver WebDriver
RUN wget https://github.com/mozilla/geckodriver/releases/download/${GECKODRIVER_VERSION}/geckodriver-${GECKODRIVER_VERSION}-linux64.tar.gz -O /tmp/geckodriver.tar.gz && \
tar xvfz /tmp/geckodriver.tar.gz -C /tmp && \
mv /tmp/geckodriver /usr/local/bin/geckodriver && \
rm /tmp/geckodriver.tar.gz
# Install Firefox
RUN wget https://download-installer.cdn.mozilla.net/pub/firefox/releases/${FIREFOX_VERSION}/linux-x86_64/en-US/firefox-${FIREFOX_VERSION}.tar.bz2 -O /opt/firefox.tar.bz2 && \
tar xvf /opt/firefox.tar.bz2 -C /opt && \
ln -s /opt/firefox/firefox /usr/local/bin/firefox
# Cache everything for dev purposes...
RUN cd /app \
&& pip install --no-cache -r requirements/docker.txt \
&& pip install --no-cache -r requirements/requirements-local.txt || true
USER superset
######################################################################
# CI image...
######################################################################
FROM lean AS ci
COPY --chown=superset ./docker/docker-bootstrap.sh /app/docker/
COPY --chown=superset ./docker/docker-init.sh /app/docker/
COPY --chown=superset ./docker/docker-ci.sh /app/docker/
RUN chmod a+x /app/docker/*.sh
CMD /app/docker/docker-ci.sh
+49
View File
@@ -0,0 +1,49 @@
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
.PHONY: install superset venv pre-commit
install: superset pre-commit
superset:
# Install external dependencies
pip install -r requirements/local.txt
# Install Superset in editable (development) mode
pip install -e .
# Create an admin user in your metadata database
superset fab create-admin
# Initialize the database
superset db upgrade
# Create default roles and permissions
superset init
# Load some data to play with
superset load-examples
venv:
# Create a virtual environment and activate it (recommended)
python3 -m venv venv # setup a python3 virtualenv
source venv/bin/activate
pre-commit:
# setup pre commit dependencies
pip3 install -r requirements/integration.txt
pre-commit install
+73 -78
View File
@@ -17,11 +17,10 @@ specific language governing permissions and limitations
under the License.
-->
Superset
=========
# Superset
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/apache/superset)
[![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/apache/superset?sort=semver)](https://github.com/apache/superset/tree/latest)
[![Build Status](https://github.com/apache/superset/workflows/Python/badge.svg)](https://github.com/apache/superset/actions)
[![PyPI version](https://badge.fury.io/py/apache-superset.svg)](https://badge.fury.io/py/apache-superset)
[![Coverage Status](https://codecov.io/github/apache/superset/coverage.svg?branch=master)](https://codecov.io/github/apache/superset)
@@ -31,7 +30,7 @@ Superset
[![Dependencies Status](https://david-dm.org/apache/superset/status.svg?path=superset-frontend)](https://david-dm.org/apache/superset?path=superset-frontend)
<img
src="https://github.com/apache/superset/raw/master/superset-frontend/branding/superset-logo-horiz-apache.png"
src="https://github.com/apache/superset/raw/master/superset-frontend/src/assets/branding/superset-logo-horiz-apache.png"
alt="Superset"
width="500"
/>
@@ -45,55 +44,53 @@ A modern, enterprise-ready business intelligence web application.
[**Get Involved**](#get-involved) |
[**Contributor Guide**](#contributor-guide) |
[**Resources**](#resources) |
[**Organizations Using Superset**](INTHEWILD.md)
[**Organizations Using Superset**](RESOURCES/INTHEWILD.md)
## Screenshots & Gifs
**Gallery**
<kbd><a href="https://superset.apache.org/gallery"><img title="Gallery" src="https://raw.githubusercontent.com/apache/superset/master/superset-frontend/images/screenshots/gallery.jpg"></a></kbd><br/>
<kbd><a href="https://superset.apache.org/gallery"><img title="Gallery" src="superset-frontend/images/screenshots/gallery.jpg"/></a></kbd><br/>
**View Dashboards**
<kbd><img title="View Dashboards" src="https://raw.githubusercontent.com/apache/superset/master/superset-frontend/images/screenshots/slack_dash.jpg"></kbd><br/>
<kbd><img title="View Dashboards" src="superset-frontend/images/screenshots/slack_dash.jpg"/></kbd><br/>
**Slice & dice your data**
<kbd><img title="Slice & dice your data" src="https://raw.githubusercontent.com/apache/superset/master/superset-frontend/images/screenshots/explore.jpg"></kbd><br/>
<kbd><img title="Slice & dice your data" src="superset-frontend/images/screenshots/explore.jpg"/></kbd><br/>
**Query and visualize your data with SQL Lab**
<kbd><img title="SQL Lab" src="https://raw.githubusercontent.com/apache/superset/master/superset-frontend/images/screenshots/sql_lab.jpg"></kbd><br/>
<kbd><img title="SQL Lab" src="superset-frontend/images/screenshots/sql_lab.jpg"/></kbd><br/>
**Visualize geospatial data with deck.gl**
<kbd><img title="Geospatial" src="https://raw.githubusercontent.com/apache/superset/master/superset-frontend/images/screenshots/geospatial_dash.jpg"></kbd><br/>
<kbd><img title="Geospatial" src="superset-frontend/images/screenshots/geospatial_dash.jpg"/></kbd><br/>
**Choose from a wide array of visualizations**
<kbd><img title="Visualizations" src="https://raw.githubusercontent.com/apache/superset/master/superset-frontend/images/screenshots/explore_visualizations.jpg"></kbd><br/>
<kbd><img title="Visualizations" src="superset-frontend/images/screenshots/explore_visualizations.jpg"/></kbd><br/>
## Why Superset?
Superset provides:
* An intuitive interface for visualizing datasets and
crafting interactive dashboards
* A wide array of beautiful visualizations to showcase your data
* Code-free visualization builder to extract and present datasets
* A world-class SQL IDE for preparing data for visualization, including a rich metadata browser
* A lightweight semantic layer which empowers data analysts to quickly define custom dimensions and metrics
* Out-of-the-box support for most SQL-speaking databases
* Seamless, in-memory asynchronous caching and queries
* An extensible security model that allows configuration of very intricate rules on
on who can access which product features and datasets.
* Integration with major
authentication backends (database, OpenID, LDAP, OAuth, REMOTE_USER, etc)
* The ability to add custom visualization plugins
* An API for programmatic customization
* A cloud-native archiecture designed from the ground up for scale
- An intuitive interface for visualizing datasets and
crafting interactive dashboards
- A wide array of beautiful visualizations to showcase your data
- Code-free visualization builder to extract and present datasets
- A world-class SQL IDE for preparing data for visualization, including a rich metadata browser
- A lightweight semantic layer which empowers data analysts to quickly define custom dimensions and metrics
- Out-of-the-box support for most SQL-speaking databases
- Seamless, in-memory asynchronous caching and queries
- An extensible security model that allows configuration of very intricate rules
on who can access which product features and datasets.
- Integration with major
authentication backends (database, OpenID, LDAP, OAuth, REMOTE_USER, etc)
- The ability to add custom visualization plugins
- An API for programmatic customization
- A cloud-native architecture designed from the ground up for scale
## Supported Databases
@@ -102,26 +99,27 @@ Superset can query data from any SQL-speaking datastore or data engine (e.g. Pre
Here are some of the major database solutions that are supported:
<p align="center">
<img src="https://raw.githubusercontent.com/apache/superset/master/superset-frontend/images/redshift.png" alt="redshift" border="0" width="106" height="41"/>
<img src="https://raw.githubusercontent.com/apache/superset/master/superset-frontend/images/google-biquery.png" alt="google-biquery" border="0" width="114" height="43"/>
<img src="https://raw.githubusercontent.com/apache/superset/master/superset-frontend/images/snowflake.png" alt="snowflake" border="0" width="152" height="46"/>
<img src="https://raw.githubusercontent.com/apache/superset/master/superset-frontend/images/presto.png" alt="presto" border="0" width="152" height="46"/>
<img src="https://raw.githubusercontent.com/apache/superset/master/superset-frontend/images/druid.png" alt="druid" border="0" width="135" height="37" />
<img src="https://raw.githubusercontent.com/apache/superset/master/superset-frontend/images/postgresql.png" alt="postgresql" border="0" width="132" height="81" />
<img src="https://raw.githubusercontent.com/apache/superset/master/superset-frontend/images/mysql.png" alt="mysql" border="0" width="119" height="62" />
<img src="https://raw.githubusercontent.com/apache/superset/master/superset-frontend/images/mssql-server.png" alt="mssql-server" border="0" width="93" height="74" />
<img src="https://raw.githubusercontent.com/apache/superset/master/superset-frontend/images/db2.png" alt="db2" border="0" width="62" height="62" />
<img src="https://raw.githubusercontent.com/apache/superset/master/superset-frontend/images/sqlite.png" alt="sqlite" border="0" width="102" height="45" />
<img src="https://raw.githubusercontent.com/apache/superset/master/superset-frontend/images/sybase.png" alt="sybase" border="0" width="128" height="47" />
<img src="https://raw.githubusercontent.com/apache/superset/master/superset-frontend/images/mariadb.png" alt="mariadb" border="0" width="83" height="63" />
<img src="https://raw.githubusercontent.com/apache/superset/master/superset-frontend/images/vertica.png" alt="vertica" border="0" width="128" height="40" />
<img src="https://raw.githubusercontent.com/apache/superset/master/superset-frontend/images/oracle.png" alt="oracle" border="0" width="121" height="66" />
<img src="https://raw.githubusercontent.com/apache/superset/master/superset-frontend/images/firebird.png" alt="firebird" border="0" width="86" height="56" />
<img src="https://raw.githubusercontent.com/apache/superset/master/superset-frontend/images/greenplum.png" alt="greenplum" border="0" width="140" height="45" />
<img src="https://raw.githubusercontent.com/apache/superset/master/superset-frontend/images/clickhouse.png" alt="clickhouse" border="0" width="133" height="34" />
<img src="https://raw.githubusercontent.com/apache/superset/master/superset-frontend/images/exasol.png" alt="exasol" border="0" width="106" height="59" />
<img src="https://raw.githubusercontent.com/apache/superset/master/superset-frontend/images/monet-db.png" alt="monet-db" border="0" width="106" height="46" />
<img src="https://raw.githubusercontent.com/apache/superset/master/superset-frontend/images/apache-kylin.png" alt="apache-kylin" border="0" width="56" height="64"/>
<img src="superset-frontend/images/redshift.png" alt="redshift" border="0" width="106" height="41"/>
<img src="superset-frontend/images/google-biquery.png" alt="google-biquery" border="0" width="114" height="43"/>
<img src="superset-frontend/images/snowflake.png" alt="snowflake" border="0" width="152" height="46"/>
<img src="superset-frontend/images/trino.png" alt="trino" border="0" width="46" height="46"/>
<img src="superset-frontend/images/presto.png" alt="presto" border="0" width="152" height="46"/>
<img src="superset-frontend/images/druid.png" alt="druid" border="0" width="135" height="37" />
<img src="superset-frontend/images/postgresql.png" alt="postgresql" border="0" width="132" height="81" />
<img src="superset-frontend/images/mysql.png" alt="mysql" border="0" width="119" height="62" />
<img src="superset-frontend/images/mssql-server.png" alt="mssql-server" border="0" width="93" height="74" />
<img src="superset-frontend/images/db2.png" alt="db2" border="0" width="62" height="62" />
<img src="superset-frontend/images/sqlite.png" alt="sqlite" border="0" width="102" height="45" />
<img src="superset-frontend/images/sybase.png" alt="sybase" border="0" width="128" height="47" />
<img src="superset-frontend/images/mariadb.png" alt="mariadb" border="0" width="83" height="63" />
<img src="superset-frontend/images/vertica.png" alt="vertica" border="0" width="128" height="40" />
<img src="superset-frontend/images/oracle.png" alt="oracle" border="0" width="121" height="66" />
<img src="superset-frontend/images/firebird.png" alt="firebird" border="0" width="86" height="56" />
<img src="superset-frontend/images/greenplum.png" alt="greenplum" border="0" width="140" height="45" />
<img src="superset-frontend/images/clickhouse.png" alt="clickhouse" border="0" width="133" height="34" />
<img src="superset-frontend/images/exasol.png" alt="exasol" border="0" width="106" height="59" />
<img src="superset-frontend/images/monet-db.png" alt="monet-db" border="0" width="106" height="46" />
<img src="superset-frontend/images/apache-kylin.png" alt="apache-kylin" border="0" width="56" height="64"/>
<img src="superset-frontend/images/hologres.png" alt="hologres" border="0" width="71" height="64"/>
</p>
@@ -130,18 +128,16 @@ Here are some of the major database solutions that are supported:
Want to add support for your datastore or data engine? Read more [here](https://superset.apache.org/docs/frequently-asked-questions#does-superset-work-with-insert-database-engine-here) about the technical requirements.
## Installation and Configuration
[Extended documentation for Superset](https://superset.apache.org/docs/installation/installing-superset-using-docker-compose)
## Get Involved
* Ask and answer questions on [StackOverflow](https://stackoverflow.com/questions/tagged/apache-superset) using the **apache-superset** tag
* [Join our community's Slack](https://join.slack.com/t/apache-superset/shared_invite/zt-l5f5e0av-fyYu8tlfdqbMdz_sPLwUqQ)
and please read our [Slack Community Guidelines](CODE_OF_CONDUCT.md#slack-community-guidelines)
* [Join our dev@superset.apache.org Mailing list](https://lists.apache.org/list.html?dev@superset.apache.org)
- Ask and answer questions on [StackOverflow](https://stackoverflow.com/questions/tagged/apache-superset) using the **apache-superset** tag
- [Join our community's Slack](https://join.slack.com/t/apache-superset/shared_invite/zt-l5f5e0av-fyYu8tlfdqbMdz_sPLwUqQ)
and please read our [Slack Community Guidelines](https://github.com/apache/superset/blob/master/CODE_OF_CONDUCT.md#slack-community-guidelines)
- [Join our dev@superset.apache.org Mailing list](https://lists.apache.org/list.html?dev@superset.apache.org)
## Contributor Guide
@@ -150,29 +146,28 @@ Interested in contributing? Check out our
to find resources around contributing along with a detailed guide on
how to set up a development environment.
## Resources
* Superset 1.0
* [Superset 1.0 Milestone](https://superset.apache.org/docs/version-one)
* [Superset 1.0 Release Notes](https://github.com/apache/superset/tree/master/RELEASING/release-notes-1-0)
* [Presentation on Superset 1.0 Public Roadmap](https://docs.google.com/presentation/d/1FGgyI8tLWLUPSQ5eEno78bylLfobj9O2W4yoUoFYHH8/edit#slide=id.g9c182b81b9_1_0)
* [Public Superset Roadmap](https://github.com/apache-superset/superset-roadmap/projects/1)
* Superset 101 -- Getting Started Guide (From [Preset Blog](https://preset.io/blog/))
* [Installing Apache Superset Locally](https://preset.io/blog/2020-05-11-getting-started-installing-superset/)
* [Installing Database Drivers](https://preset.io/blog/2020-05-18-install-db-drivers/)
* [Connect Superset To Google Sheets](https://preset.io/blog/2020-06-01-connect-superset-google-sheets/)
* [Create Your First Chart](https://preset.io/blog/2020-06-08-first-chart/)
* [Create Time Series Charts](https://preset.io/blog/2020-06-26-timeseries-chart/)
* [Documentation for End-Users (by Preset)](https://docs.preset.io/)
* [Docker image](https://hub.docker.com/r/apache/superset)
* [Recordings of Community Events](https://www.youtube.com/channel/UCMuwrvBsg_jjI2gLcm04R0g)
* [May 2020: Virtual Meetup. Topics: 0.36 Overview, Committers Self-Intro, Roadmap](https://www.youtube.com/watch?v=tXGDmqjmcTs&t=20s)
* [July 2020: Virtual Meetup. Topics: Visualization Plugins, 0.37 Preview, Demo](https://www.youtube.com/watch?v=f6up5x_iRbI)
* [November 2020: Virtual Meetup. Topics: Superset 1.0 & the Roadmap](https://www.youtube.com/watch?v=GwtWRUSEjk4)
* [November 2020: Live Demo. Topic: Superset Semantic Layer](https://www.youtube.com/watch?v=8VL4ZPLFUYI)
* [December 2020: Live Demo. Topic: Annotations](https://www.youtube.com/watch?v=Yk6bKgphj1Q)
* Custom Visualizations
* [Building Custom Viz Plugins](https://superset.apache.org/docs/installation/building-custom-viz-plugins)
* [Managing and Deploying Custom Viz Plugins](https://medium.com/nmc-techblog/apache-superset-manage-custom-viz-plugins-in-production-9fde1a708e55)
* [Superset API](https://superset.apache.org/docs/rest-api)
- Superset 1.0
- [Superset 1.0 Milestone](https://superset.apache.org/docs/version-one)
- [Superset 1.0 Release Notes](https://github.com/apache/superset/tree/master/RELEASING/release-notes-1-0)
- [Presentation on Superset 1.0 Public Roadmap](https://docs.google.com/presentation/d/1FGgyI8tLWLUPSQ5eEno78bylLfobj9O2W4yoUoFYHH8/edit#slide=id.g9c182b81b9_1_0)
- [Public Superset Roadmap](https://github.com/apache-superset/superset-roadmap/projects/1)
- Superset 101 -- Getting Started Guide (From [Preset Blog](https://preset.io/blog/))
- [Installing Apache Superset Locally](https://preset.io/blog/2020-05-11-getting-started-installing-superset/)
- [Installing Database Drivers](https://preset.io/blog/2020-05-18-install-db-drivers/)
- [Connect Superset To Google Sheets](https://preset.io/blog/2020-06-01-connect-superset-google-sheets/)
- [Create Your First Chart](https://preset.io/blog/2020-06-08-first-chart/)
- [Create Time Series Charts](https://preset.io/blog/2020-06-26-timeseries-chart/)
- [Documentation for End-Users (by Preset)](https://docs.preset.io/)
- [Docker image](https://hub.docker.com/r/apache/superset)
- [Recordings of Community Events](https://www.youtube.com/channel/UCMuwrvBsg_jjI2gLcm04R0g)
- [May 2020: Virtual Meetup. Topics: 0.36 Overview, Committers Self-Intro, Roadmap](https://www.youtube.com/watch?v=tXGDmqjmcTs&t=20s)
- [July 2020: Virtual Meetup. Topics: Visualization Plugins, 0.37 Preview, Demo](https://www.youtube.com/watch?v=f6up5x_iRbI)
- [November 2020: Virtual Meetup. Topics: Superset 1.0 & the Roadmap](https://www.youtube.com/watch?v=GwtWRUSEjk4)
- [November 2020: Live Demo. Topic: Superset Semantic Layer](https://www.youtube.com/watch?v=8VL4ZPLFUYI)
- [December 2020: Live Demo. Topic: Annotations](https://www.youtube.com/watch?v=Yk6bKgphj1Q)
- Custom Visualizations
- [Building Custom Viz Plugins](https://superset.apache.org/docs/installation/building-custom-viz-plugins)
- [Managing and Deploying Custom Viz Plugins](https://medium.com/nmc-techblog/apache-superset-manage-custom-viz-plugins-in-production-9fde1a708e55)
- [Superset API](https://superset.apache.org/docs/rest-api)
+6
View File
@@ -126,6 +126,12 @@ Example:
python changelog.py --previous_version 0.37 --current_version 0.38 changelog
```
You can get a list of pull requests with labels started with blocking, risk, hold, revert and security by using the parameter `--risk`.
Example:
```bash
python changelog.py --previous_version 0.37 --current_version 0.38 changelog --access_token {GITHUB_TOKEN} --risk
```
The script will checkout both branches and compare all the PR's, copy the output and paste it on the `CHANGELOG.md`
Then, in `UPDATING.md`, a file that contains a list of notifications around
+112 -11
View File
@@ -26,12 +26,14 @@ from typing import Any, Dict, Iterator, List, Optional, Union
import click
try:
from github import BadCredentialsException, Github, PullRequest
from github import BadCredentialsException, Github, PullRequest, Repository
except ModuleNotFoundError:
print("PyGithub is a required package for this script")
exit(1)
SUPERSET_REPO = "apache/superset"
SUPERSET_PULL_REQUEST_TYPES = r"^(fix|feat|chore|refactor|docs|build|ci|/gmi)"
SUPERSET_RISKY_LABELS = r"^(blocking|risk|hold|revert|security vulnerability)"
@dataclass
@@ -65,15 +67,22 @@ class GitChangeLog:
"""
def __init__(
self, version: str, logs: List[GitLog], access_token: Optional[str] = None
self,
version: str,
logs: List[GitLog],
access_token: Optional[str] = None,
risk: Optional[bool] = False,
) -> None:
self._version = version
self._logs = logs
self._pr_logs_with_details: Dict[int, Dict[str, Any]] = {}
self._github_login_cache: Dict[str, Optional[str]] = {}
self._github_prs: Dict[int, Any] = {}
self._wait = 10
github_token = access_token or os.environ.get("GITHUB_TOKEN")
self._github = Github(github_token)
self._superset_repo = ""
self._show_risk = risk
self._superset_repo: Repository = None
def _fetch_github_pr(self, pr_number: int) -> PullRequest:
"""
@@ -81,6 +90,11 @@ class GitChangeLog:
"""
try:
github_repo = self._github.get_repo(SUPERSET_REPO)
self._superset_repo = github_repo
pull_request = self._github_prs.get(pr_number)
if not pull_request:
pull_request = github_repo.get_pull(pr_number)
self._github_prs[pr_number] = pull_request
except BadCredentialsException as ex:
print(
f"Bad credentials to github provided"
@@ -88,7 +102,7 @@ class GitChangeLog:
)
sys.exit(1)
return github_repo.get_pull(pr_number)
return pull_request
def _get_github_login(self, git_log: GitLog) -> Optional[str]:
"""
@@ -108,21 +122,102 @@ class GitChangeLog:
self._github_login_cache[author_name] = github_login
return github_login
def _has_commit_migrations(self, git_sha: str) -> bool:
commit = self._superset_repo.get_commit(sha=git_sha)
return any(
"superset/migrations/versions/" in file.filename for file in commit.files
)
def _get_pull_request_details(self, git_log: GitLog) -> Dict[str, Any]:
pr_number = git_log.pr_number
if pr_number:
detail = self._pr_logs_with_details.get(pr_number)
if detail:
return detail
pr_info = self._fetch_github_pr(pr_number)
has_migrations = self._has_commit_migrations(git_log.sha)
title = pr_info.title if pr_info else git_log.message
pr_type = re.match(SUPERSET_PULL_REQUEST_TYPES, title)
if pr_type:
pr_type = pr_type.group().strip('"')
labels = (" | ").join([label.name for label in pr_info.labels])
is_risky = self._is_risk_pull_request(pr_info.labels)
detail = {
"id": pr_number,
"has_migrations": has_migrations,
"labels": labels,
"title": title,
"type": pr_type,
"is_risky": is_risky or has_migrations,
}
if pr_number:
self._pr_logs_with_details[pr_number] = detail
return detail
def _is_risk_pull_request(self, labels: List[Any]) -> bool:
for label in labels:
risk_label = re.match(SUPERSET_RISKY_LABELS, label.name)
if risk_label is not None:
return True
return False
def _get_changelog_version_head(self) -> str:
return f"### {self._version} ({self._logs[0].time})"
def _parse_change_log(
self, changelog: Dict[str, str], pr_info: Dict[str, str], github_login: str,
):
formatted_pr = (
f"- [#{pr_info.get('id')}]"
f"(https://github.com/{SUPERSET_REPO}/pull/{pr_info.get('id')}) "
f"{pr_info.get('title')} (@{github_login})\n"
)
if pr_info.get("has_migrations"):
changelog["Database Migrations"] += formatted_pr
elif pr_info.get("type") == "fix":
changelog["Fixes"] += formatted_pr
elif pr_info.get("type") == "feat":
changelog["Features"] += formatted_pr
else:
changelog["Others"] += formatted_pr
def __repr__(self) -> str:
result = f"\n{self._get_changelog_version_head()}\n"
changelog = {
"Database Migrations": "\n",
"Features": "\n",
"Fixes": "\n",
"Others": "\n",
}
for i, log in enumerate(self._logs):
github_login = self._get_github_login(log)
pr_info = self._get_pull_request_details(log)
if not github_login:
github_login = log.author
result = result + (
f"- [#{log.pr_number}]"
f"(https://github.com/{SUPERSET_REPO}/pull/{log.pr_number}) "
f"{log.message} (@{github_login})\n"
)
if self._show_risk:
if pr_info.get("is_risky"):
result += (
f"- [#{log.pr_number}]"
f"(https://github.com/{SUPERSET_REPO}/pull/{log.pr_number}) "
f"{pr_info.get('title')} (@{github_login}) "
f"{pr_info.get('labels')} \n"
)
else:
self._parse_change_log(changelog, pr_info, github_login)
print(f"\r {i}/{len(self._logs)}", end="", flush=True)
if self._show_risk:
return result
for key in changelog:
result += f"**{key}** {changelog[key]}\n"
return result
def __iter__(self) -> Iterator[Dict[str, Any]]:
@@ -269,14 +364,20 @@ def compare(base_parameters: BaseParameters) -> None:
help="The github access token,"
" if not provided will try to fetch from GITHUB_TOKEN env var",
)
@click.option("--risk", is_flag=True, help="show all pull requests with risky labels")
@click.pass_obj
def change_log(base_parameters: BaseParameters, csv: str, access_token: str) -> None:
def change_log(
base_parameters: BaseParameters, csv: str, access_token: str, risk: bool
) -> None:
""" Outputs a changelog (by PR) """
previous_logs = base_parameters.previous_logs
current_logs = base_parameters.current_logs
previous_diff_logs = previous_logs.diff(current_logs)
logs = GitChangeLog(
current_logs.git_ref, previous_diff_logs[::-1], access_token=access_token
current_logs.git_ref,
previous_diff_logs[::-1],
access_token=access_token,
risk=risk,
)
if csv:
with open(csv, "w") as csv_file:
+114
View File
@@ -0,0 +1,114 @@
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
# Release Notes for Superset 1.1.0
Superset 1.1.0 continues to build on the [1.0](https://github.com/apache/superset/blob/master/RELEASING/release-notes-1-0/README.md) release with big improvements to user experience, security, dashboard level access, and database connectivity.
- [**User Experience**](#user-experience)
- [**Dashboard Level Security**](#dashboard-level-security)
- [**Database Connectivity**](#database-connectivity)
- [**PR Highlights**](#pr-highlights)
- [**Breaking Changes and Full Changelog**](#breaking-changes-and-full-changelog)
# User Experience
In general, the quality, usability, and aesthetics of the Superset user experience continues to develop in the direction of [SIP-34](https://github.com/apache/superset/issues/8976) and more tests have been added to ui components to ensure usability is maintained.
The migration to Apache ECharts continues with the addition of a [new force-directed graph](https://github.com/apache/superset/pull/13111).
![Force Directed Graph](media/force_directed_graph.jpg)
The ECharts library included with Superset was also bumped to 5.0.2, which includes some [fixes to pie charts.](https://github.com/apache/superset/pull/13052) The overall improvement of chart options and quality can be expected to continue in future releases. New 'sort by' controls have also been [added](https://github.com/apache/superset/pull/13049) to [many charts](https://github.com/apache/superset/pull/13057).
The dashboard native filter feature, [while still behind a feature flag in this release,](https://github.com/apache/superset/blob/master/RELEASING/release-notes-1-0/README.md#feature-flags) has been improved and is ready to test out.
![Native Filter](media/native_filters.jpg)
Since the 1.0 release, we have seen a surge of support from the community around updating Superset's [documentation](https://superset.apache.org/docs/intro) and adding more tests to the UI. Thanks to all who contributed in this area. This is what open-source software is all about!
# Dashboard Level Security
Dashboard providers in an organization with many subgroups need the ability manage user access to dashboards and different levels of permissions (read, write, granter, owner). Improving dashboard level access was proposed (and approved) in [SIP-51](https://github.com/apache/superset/issues/10408).
![SIP 51](media/sip_51.jpg)
In 1.1, some key steps were taken towards the vision laid out in SIP-51. **Note that this functionality is still hidden behind feature flags and is an active area of development.** You can view a list of relevant PR's in [PR Highlights](#pr-highlights)
# Database Connectivity
Superset is only as good as the databases it can query. This release saw the expanded support of existing databases and foundational support for new databases.
- [Opendistro](https://github.com/apache/superset/pull/12602)
- [Trino](https://github.com/apache/superset/pull/13105)
- [CrateDB](https://github.com/apache/superset/pull/13152/files)
- [Apache Pinot](https://github.com/apache/superset/pull/13163)
- [Presto](https://github.com/apache/superset/pull/13214)
- [BigQuery](https://github.com/apache/superset/pull/12581)
- [Postgres](https://github.com/apache/superset/pull/11720)
- [Google Sheets](https://github.com/apache/superset/pull/13185)
- [Athena](https://github.com/apache/superset/pull/13201)
# PR Highlights
**Progress On Dashboard Native Filters**
- feat(chart-data): add rowcount, timegrain and column result types (#[13271](https://github.com/apache/superset/pull/13271))
- feat(native-filters): enable filter indicator and make datasource optional (#[13148](https://github.com/apache/superset/pull/13148))
- feat(native-filters): hide filterBar and toggle icon when in editMode (#[13108](https://github.com/apache/superset/pull/13108))
- feat(native-filters): add storybook entry for select filter (#[13005](https://github.com/apache/superset/pull/13005))
- feat(native-filters): Time native filter (#[12992](https://github.com/apache/superset/pull/12992))
- feat(native-filters): Add defaultValue for Native filters modal (#[12199](https://github.com/apache/superset/pull/12199))
- feat(native-filters): apply scoping of native filters to dashboard (#[12716](https://github.com/apache/superset/pull/12716))
**Progress On Dashboard Level Access**
- feat(dashboard-rbac): dashboard lists (#[12680](https://github.com/apache/superset/pull/12680))
- feat(dashboard-rbac): add support for related roles (#[13035](https://github.com/apache/superset/pull/13035))
- feat(dashboard-rbac): dashboards API support for roles create/update + roles validation (#[12865](https://github.com/apache/superset/pull/12865))
- feat(dashboard-rbac): `dashboard_view` access enforcement (#[12875](https://github.com/apache/superset/pull/12875))
**Improvements to Explore**
- feat: Add sort by metric for charts with multiple metrics (#[13057](https://github.com/apache/superset/pull/13057))
- feat: add sort_by_metric for charts with single metric (#[13058](https://github.com/apache/superset/pull/13058))
- feat: Add sort by for dist bar chart (#[13049](https://github.com/apache/superset/pull/13049))
- feat: reset metrics on dataset change (#[12782](https://github.com/apache/superset/pull/12782))
- feat: clear search on dataset change (#[12909](https://github.com/apache/superset/pull/12909))
- feat: default timepicker to last week when dataset is changed (#[12609](https://github.com/apache/superset/pull/12609))
**Improvements to Developer Experience**
- chore: add non-dev docker-compose workflow (#[13143](https://github.com/apache/superset/pull/13143))
- feat(style-theme): add support for custom superset themes (#[12858](https://github.com/apache/superset/pull/12858))
- feat: Move SQLAlchemy url reference to config (#[13182](https://github.com/apache/superset/pull/13182))
- feat(helm): Evaluate configOverrides as templates (#[13130](https://github.com/apache/superset/pull/13130))
- feat(helm): Helm template for Celery beat (for reporting and alerting) (#[13116](https://github.com/apache/superset/pull/13116))
- feat: Custom superset_config.py + secret envs (#[13096](https://github.com/apache/superset/pull/13096))
- feat: Force pod restart on config changes (#[13056](https://github.com/apache/superset/pull/13056))
- feat: add separate endpoint to fetch function names for autocomplete (#[12840](https://github.com/apache/superset/pull/12840))
- feat: request ids on API related endpoints (#[12663](https://github.com/apache/superset/pull/12663))
- feat: Adding option to `set_database_uri` CLI command (#[12740](https://github.com/apache/superset/pull/12740))
- feat: add decorator to guard public APIs (#[12635](https://github.com/apache/superset/pull/12635))
## Breaking Changes and Full Changelog
- To see the complete changelog in this release, head to [CHANGELOG.MD](https://github.com/apache/superset/blob/master/CHANGELOG.md).
- You can find a list of backwards incompatible changes [here](https://github.com/apache/superset/blob/3d103e66fcaee42a6b4a42b2638e13d5e2208c3b/UPDATING.md).
Binary file not shown.

After

Width:  |  Height:  |  Size: 329 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 312 KiB

+65
View File
@@ -0,0 +1,65 @@
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
# Superset Feature Flags
This is a list of the current Superset optional features. See config.py for default values. These features can be turned on/off by setting your preferred values in superset_config.py to True/False respectively
## In Development
These features are considered **unfinished** and should only be used on development environments.
- CLIENT_CACHE
- DASHBOARD_CACHE
- DASHBOARD_NATIVE_FILTERS_SET
- DASHBOARD_RBAC
- DISABLE_DATASET_SOURCE_EDIT
- ENABLE_EXPLORE_JSON_CSRF_PROTECTION
- KV_STORE
- PRESTO_EXPAND_DATA
- REMOVE_SLICE_LEVEL_LABEL_COLORS
- SHARE_QUERIES_VIA_KV_STORE
- TAGGING_SYSTEM
## In Testing
These features are **finished** but currently being tested. They are usable, but may still contain some bugs.
- ALERT_REPORTS: [(docs)](https://superset.apache.org/docs/installation/alerts-reports)
- DYNAMIC_PLUGINS: [(docs)](https://superset.apache.org/docs/installation/running-on-kubernetes)
- DASHBOARD_NATIVE_FILTERS
- GLOBAL_ASYNC_QUERIES [(docs)](https://github.com/apache/superset/blob/master/CONTRIBUTING.md#async-chart-queries)
- OMNIBAR
- VERSIONED_EXPORT
## Stable
These features flags are **safe for production** and have been tested.
- DASHBOARD_CROSS_FILTERS
- ESCAPE_MARKDOWN_HTML
- ENABLE_TEMPLATE_PROCESSING
- LISTVIEWS_DEFAULT_CARD_VIEW
- ROW_LEVEL_SECURITY
- SCHEDULED_QUERIES [(docs)](https://superset.apache.org/docs/installation/alerts-reports)
- SQL_VALIDATORS_BY_ENGINE [(docs)](https://superset.apache.org/docs/installation/sql-templating)
- SQLLAB_BACKEND_PERSISTENCE
- THUMBNAILS [(docs)](https://superset.apache.org/docs/installation/cache)
## Deprecated Flags
These features flags currently default to True and **will be removed in a future major release**. For this current release you can turn them off by setting your config to False, but it is advised to remove or set these flags in your local configuration to **True** so that you do not experience any unexpected changes in a future release.
- ALLOW_DASHBOARD_DOMAIN_SHARDING
- DISPLAY_MARKDOWN_HTML
- ENABLE_REACT_CRUD_VIEWS
+40 -3
View File
@@ -22,11 +22,48 @@ under the License.
This file documents any backwards-incompatible changes in Superset and
assists people when migrating to a new version.
## Next
### Breaking Changes
### Potential Downtime
## 1.2.0
### Deprecations
- [13440](https://github.com/apache/superset/pull/13440): Dashboard/Charts reports and old Alerts is deprecated. The following config keys are deprecated:
- ENABLE_ALERTS
- SCHEDULED_EMAIL_DEBUG_MODE
- EMAIL_REPORTS_CRON_RESOLUTION
- EMAIL_ASYNC_TIME_LIMIT_SEC
- EMAIL_REPORT_BCC_ADDRESS
- EMAIL_REPORTS_USER
### Other
- [13772](https://github.com/apache/superset/pull/13772): Row level security (RLS) is now enabled by default. To activate the feature, please run `superset init` to expose the RLS menus to Admin users.
- [13980](https://github.com/apache/superset/pull/13980): Data health checks no longer use the metadata database as an interim cache. Though non-breaking, deployments which implement complex logic should likely memoize the callback function. Refer to documentation in the confg.py file for more detail.
- [14255](https://github.com/apache/superset/pull/14255): The default `CSV_TO_HIVE_UPLOAD_DIRECTORY_FUNC` callable logic has been updated to leverage the specified database and schema to ensure the upload S3 key prefix is unique. Previously tables generated via upload from CSV with the same name but differ schema and/or cluster would use the same S3 key prefix. Note this change does not impact previously imported tables.
## 1.1.0
### Breaking Changes
- This is the first release since we adopted semantic versioning ([SIP-57](https://github.com/apache/superset/issues/12566)). There are no breaking changes in 1.1.0 since this is a minor release.
### Potential Downtime
- [13111](https://github.com/apache/superset/pull/13111) has a database migration that replaces `directed_force` charts with newer `graph_chart` charts based on Apache ECharts.
- [13216](https://github.com/apache/superset/pull/13216) adds a UUID column to models that are missing it. The original migration script that added the column would incorrectly complete when the column couldn't be added, resulting in a broken schema. The script is optimized for MySQL and Postgres, so depending on the database and the number of objects this migration might take considerable time.
- [12960](https://github.com/apache/superset/pull/12960) populates the granularity parameter in existing charts. Depending on the number of charts without a `granularity` or `granularity_sqla param` this might take considerable time.
- [13052](https://github.com/apache/superset/pull/13052) updates the label in existing pie charts, setting `label_type` from `pie_label_type`. Depending on the number of pie charts this might take considerable time.
- [12680](https://github.com/apache/superset/pull/12680) creates a new table, `dashboard_roles`, for role based dashboard level access.
- [12552](https://github.com/apache/superset/pull/12552) updates charts that have the time range defined using "until" and "since". Depending on the number of charts this might take considerable time.
### Deprecations
- [12552](https://github.com/apache/superset/pull/12552) removes the use of unclear time offsets, eg, "30 days". An error message is displayed if the user doesn't specify "ago" or "later", instructing the user of the correct format.
- [12627](https://github.com/apache/superset/pull/12627) deprecates the legacy alerts module.
### Other
- [shillelagh](https://github.com/betodealmeida/shillelagh/) is now the recommended module to connect Superset to Google Spreadsheets since it's more robust and has extensive test coverage. You should uninstall the `gsheetsdb` module and install the `shillelagh` module in its place. Shillelagh is a drop-in replacement, so no modifications are needed to be done on existing queries, datasets, or charts.
## 1.0.0
### Breaking Changes
+90
View File
@@ -0,0 +1,90 @@
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
x-superset-image: &superset-image apache/superset:latest-dev
x-superset-depends-on: &superset-depends-on
- db
- redis
x-superset-volumes: &superset-volumes
# /app/pythonpath_docker will be appended to the PYTHONPATH in the final container
- ./docker:/app/docker
- superset_home:/app/superset_home
version: "3.7"
services:
redis:
image: redis:latest
container_name: superset_cache
restart: unless-stopped
volumes:
- redis:/data
db:
env_file: docker/.env
image: postgres:10
container_name: superset_db
restart: unless-stopped
volumes:
- db_home:/var/lib/postgresql/data
superset:
env_file: docker/.env-non-dev
image: *superset-image
container_name: superset_app
command: ["/app/docker/docker-bootstrap.sh", "app-gunicorn"]
user: "root"
restart: unless-stopped
ports:
- 8088:8088
depends_on: *superset-depends-on
volumes: *superset-volumes
superset-init:
image: *superset-image
container_name: superset_init
command: ["/app/docker/docker-init.sh"]
env_file: docker/.env-non-dev
depends_on: *superset-depends-on
user: "root"
volumes: *superset-volumes
superset-worker:
image: *superset-image
container_name: superset_worker
command: ["/app/docker/docker-bootstrap.sh", "worker"]
env_file: docker/.env-non-dev
restart: unless-stopped
depends_on: *superset-depends-on
user: "root"
volumes: *superset-volumes
superset-worker-beat:
image: *superset-image
container_name: superset_worker_beat
command: ["/app/docker/docker-bootstrap.sh", "beat"]
env_file: docker/.env-non-dev
restart: unless-stopped
depends_on: *superset-depends-on
user: "root"
volumes: *superset-volumes
volumes:
superset_home:
external: false
db_home:
external: false
redis:
external: false
+12 -2
View File
@@ -29,7 +29,7 @@ x-superset-volumes: &superset-volumes
version: "3.7"
services:
redis:
image: redis:3.2
image: redis:latest
container_name: superset_cache
restart: unless-stopped
ports:
@@ -73,7 +73,7 @@ services:
CYPRESS_CONFIG: "${CYPRESS_CONFIG}"
superset-node:
image: node:12
image: node:14
container_name: superset_node
command: ["/app/docker/docker-frontend.sh"]
env_file: docker/.env
@@ -90,6 +90,16 @@ services:
user: "root"
volumes: *superset-volumes
superset-worker-beat:
image: *superset-image
container_name: superset_worker_beat
command: ["/app/docker/docker-bootstrap.sh", "beat"]
env_file: docker/.env
restart: unless-stopped
depends_on: *superset-depends-on
user: "root"
volumes: *superset-volumes
superset-tests-worker:
image: *superset-image
container_name: superset_tests_worker
+1
View File
@@ -43,3 +43,4 @@ FLASK_ENV=development
SUPERSET_ENV=development
SUPERSET_LOAD_EXAMPLES=yes
CYPRESS_CONFIG=false
SUPERSET_PORT=8088
+46
View File
@@ -0,0 +1,46 @@
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
COMPOSE_PROJECT_NAME=superset
# database configurations (do not modify)
DATABASE_DB=superset
DATABASE_HOST=db
DATABASE_PASSWORD=superset
DATABASE_USER=superset
# database engine specific environment variables
# change the below if you prefers another database engine
DATABASE_PORT=5432
DATABASE_DIALECT=postgresql
POSTGRES_DB=superset
POSTGRES_USER=superset
POSTGRES_PASSWORD=superset
#MYSQL_DATABASE=superset
#MYSQL_USER=superset
#MYSQL_PASSWORD=superset
#MYSQL_RANDOM_ROOT_PASSWORD=yes
# Add the mapped in /app/pythonpath_docker which allows devs to override stuff
PYTHONPATH=/app/pythonpath:/app/docker/pythonpath_dev
REDIS_HOST=redis
REDIS_PORT=6379
FLASK_ENV=production
SUPERSET_ENV=production
SUPERSET_LOAD_EXAMPLES=yes
CYPRESS_CONFIG=false
SUPERSET_PORT=8088
+6
View File
@@ -39,7 +39,13 @@ fi
if [[ "${1}" == "worker" ]]; then
echo "Starting Celery worker..."
celery worker --app=superset.tasks.celery_app:app -Ofair -l INFO
elif [[ "${1}" == "beat" ]]; then
echo "Starting Celery beat..."
celery beat --app=superset.tasks.celery_app:app --pidfile /tmp/celerybeat.pid -l INFO
elif [[ "${1}" == "app" ]]; then
echo "Starting web app..."
flask run -p 8088 --with-threads --reload --debugger --host=0.0.0.0
elif [[ "${1}" == "app-gunicorn" ]]; then
echo "Starting web app..."
/app/docker/docker-entrypoint.sh
fi
+35
View File
@@ -0,0 +1,35 @@
#!/usr/bin/env bash
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
/app/docker/docker-init.sh
# TODO: copy config overrides from ENV vars
# TODO: run celery in detached state
# start up the web server
gunicorn \
--bind "0.0.0.0:${SUPERSET_PORT}" \
--access-logfile '-' \
--error-logfile '-' \
--workers 1 \
--worker-class gthread \
--threads 8 \
--timeout 60 \
--limit-request-line 0 \
--limit-request-field_size 0 \
"${FLASK_APP}"
+24 -5
View File
@@ -20,11 +20,12 @@
# development environments. Also note that superset_config_docker.py is imported
# as a final step as a means to override "defaults" configured here
#
import logging
import os
from datetime import timedelta
from cachelib.file import FileSystemCache
from celery.schedules import crontab
logger = logging.getLogger()
@@ -63,20 +64,38 @@ SQLALCHEMY_DATABASE_URI = "%s://%s:%s@%s:%s/%s" % (
REDIS_HOST = get_env_variable("REDIS_HOST")
REDIS_PORT = get_env_variable("REDIS_PORT")
REDIS_CELERY_DB = get_env_variable("REDIS_CELERY_DB", 0)
REDIS_RESULTS_DB = get_env_variable("REDIS_CELERY_DB", 1)
REDIS_RESULTS_DB = get_env_variable("REDIS_RESULTS_DB", 1)
RESULTS_BACKEND = FileSystemCache("/app/superset_home/sqllab")
class CeleryConfig(object):
BROKER_URL = f"redis://{REDIS_HOST}:{REDIS_PORT}/{REDIS_CELERY_DB}"
CELERY_IMPORTS = ("superset.sql_lab",)
CELERY_IMPORTS = ("superset.sql_lab", "superset.tasks")
CELERY_RESULT_BACKEND = f"redis://{REDIS_HOST}:{REDIS_PORT}/{REDIS_RESULTS_DB}"
CELERY_ANNOTATIONS = {"tasks.add": {"rate_limit": "10/s"}}
CELERY_TASK_PROTOCOL = 1
CELERYD_LOG_LEVEL = "DEBUG"
CELERYD_PREFETCH_MULTIPLIER = 1
CELERY_ACKS_LATE = False
CELERYBEAT_SCHEDULE = {
"reports.scheduler": {
"task": "reports.scheduler",
"schedule": crontab(minute="*", hour="*"),
},
"reports.prune_log": {
"task": "reports.prune_log",
"schedule": crontab(minute=10, hour=0),
},
}
CELERY_CONFIG = CeleryConfig
FEATURE_FLAGS = {"ALERT_REPORTS": True}
ALERT_REPORTS_NOTIFICATION_DRY_RUN = True
WEBDRIVER_BASEURL = "http://superset:8088/"
# The base URL for the email report hyperlinks.
WEBDRIVER_BASEURL_USER_FRIENDLY = WEBDRIVER_BASEURL
SQLLAB_CTAS_NO_LIMIT = True
#
+1
View File
@@ -0,0 +1 @@
v12
+4 -2
View File
@@ -23,7 +23,6 @@ Here's the source to the documentation hosted at
The site runs on the Gatsby framework and uses docz for it's
`Documentation` subsection.
## Getting Started
```bash
@@ -35,7 +34,10 @@ npm run start
## To Publish
To publish, the static site that Gatsby generates needs to be pushed
Github Actions CI automatically publishes the site after changes are
merged to master.
To manually publish, the static site that Gatsby generates needs to be pushed
to the `asf-site` branch on the
[apache/superset-site](https://github.com/apache/superset-site/)
repository. No need to PR here, simply `git push`.
+5
View File
@@ -664,4 +664,9 @@ exports.createPages = ({ actions }) => {
toPath: '/docs/miscellaneous/issue-codes#issue-1005',
isPermanent: true,
});
createRedirect({
fromPath: '/docs/installation/email-reports',
toPath: '/docs/installation/alerts-reports',
isPermanent: true,
});
};
+8 -16
View File
@@ -1133,6 +1133,7 @@ The following configuration settings are available for async queries (see config
- ``GLOBAL_ASYNC_QUERIES_REDIS_STREAM_LIMIT_FIREHOSE`` - the maximum number of events for all users (FIFO eviction)
- ``GLOBAL_ASYNC_QUERIES_JWT_COOKIE_NAME`` - the async query feature uses a `JWT <https://tools.ietf.org/html/rfc7519>`_ cookie for authentication, this setting is the cookie's name
- ``GLOBAL_ASYNC_QUERIES_JWT_COOKIE_SECURE`` - JWT cookie secure option
- ``GLOBAL_ASYNC_QUERIES_JWT_COOKIE_DOMAIN`` - JWT cookie domain option (`see docs for set_cookie <https://tedboy.github.io/flask/interface_api.response_object.html#flask.Response.set_cookie>`
- ``GLOBAL_ASYNC_QUERIES_JWT_SECRET`` - JWT's use a secret key to sign and validate the contents. This value should be at least 32 bytes and have sufficient randomness for proper security
- ``GLOBAL_ASYNC_QUERIES_TRANSPORT`` - currently the only available option is (HTTP) `polling`, but support for a WebSocket will be added in future versions
- ``GLOBAL_ASYNC_QUERIES_POLLING_DELAY`` - the time (in ms) between polling requests
@@ -1207,7 +1208,7 @@ To render dashboards you need to install a local browser on your superset instan
* `geckodriver <https://github.com/mozilla/geckodriver>`_ and Firefox is preferred
* `chromedriver <http://chromedriver.chromium.org/>`_ is a good option too
You need to adjust the ``EMAIL_REPORTS_WEBDRIVER`` accordingly in your configuration.
You need to adjust the ``WEBDRIVER_TYPE`` accordingly in your configuration.
You also need to specify on behalf of which username to render the dashboards. In general
dashboards and charts are not accessible to unauthorized requests, that is why the
@@ -1487,13 +1488,14 @@ Install Superset with helm in Kubernetes
----------------------------------------
You can install Superset into Kubernetes with Helm <https://helm.sh/>. The chart is
located in ``install/helm``.
located in the ``helm`` directory.
To install Superset into your Kubernetes:
To install Superset in your Kubernetes cluster with Helm 3, run:
.. code-block:: bash
helm upgrade --install superset ./install/helm/superset
helm dep install ./helm/superset
helm upgrade --install superset ./helm/superset
Note that the above command will install Superset into ``default`` namespace of your Kubernetes cluster.
@@ -1569,23 +1571,13 @@ You can enable or disable features with flag from ``superset_config.py``:
.. code-block:: python
DEFAULT_FEATURE_FLAGS = {
FEATURE_FLAGS = {
'CLIENT_CACHE': False,
'ENABLE_EXPLORE_JSON_CSRF_PROTECTION': False,
'PRESTO_EXPAND_DATA': False,
}
Here is a list of flags and descriptions:
* ENABLE_EXPLORE_JSON_CSRF_PROTECTION
* For some security concerns, you may need to enforce CSRF protection on all query request to explore_json endpoint. In Superset, we use `flask-csrf <https://sjl.bitbucket.io/flask-csrf/>`_ add csrf protection for all POST requests, but this protection doesn't apply to GET method.
* When ENABLE_EXPLORE_JSON_CSRF_PROTECTION is set to true, your users cannot make GET request to explore_json. The default value for this feature False (current behavior), explore_json accepts both GET and POST request. See `PR 7935 <https://github.com/apache/superset/pull/7935>`_ for more details.
* PRESTO_EXPAND_DATA
* When this feature is enabled, nested types in Presto will be expanded into extra columns and/or arrays. This is experimental, and doesn't work with all nested types.
A current list of feature flags can be found in `RESOURCES/FEATURE_FLAGS.md`
SIP-15
+137 -56
View File
@@ -8629,23 +8629,23 @@
"integrity": "sha512-8wucrMsmXxeBxaM3TPg+YiwIJwPd1IZMudOj1XytmkP3UPXRagMhO9vo4nzzbSWeq91N1zhfUhJW2u9/MVhPxw=="
},
"elliptic": {
"version": "6.5.3",
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz",
"integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==",
"version": "6.5.4",
"resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
"integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
"requires": {
"bn.js": "^4.4.0",
"brorand": "^1.0.1",
"bn.js": "^4.11.9",
"brorand": "^1.1.0",
"hash.js": "^1.0.0",
"hmac-drbg": "^1.0.0",
"inherits": "^2.0.1",
"minimalistic-assert": "^1.0.0",
"minimalistic-crypto-utils": "^1.0.0"
"hmac-drbg": "^1.0.1",
"inherits": "^2.0.4",
"minimalistic-assert": "^1.0.1",
"minimalistic-crypto-utils": "^1.0.1"
},
"dependencies": {
"bn.js": {
"version": "4.11.9",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz",
"integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw=="
"version": "4.12.0",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
"integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
}
}
},
@@ -8696,39 +8696,6 @@
"once": "^1.4.0"
}
},
"engine.io": {
"version": "3.4.2",
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.4.2.tgz",
"integrity": "sha512-b4Q85dFkGw+TqgytGPrGgACRUhsdKc9S9ErRAXpPGy/CXKs4tYoHDkvIRdsseAF7NjfVwjRFIn6KTnbw7LwJZg==",
"requires": {
"accepts": "~1.3.4",
"base64id": "2.0.0",
"cookie": "0.3.1",
"debug": "~4.1.0",
"engine.io-parser": "~2.2.0",
"ws": "^7.1.2"
},
"dependencies": {
"cookie": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
"integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
},
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
"requires": {
"ms": "^2.1.1"
}
},
"ws": {
"version": "7.3.1",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.3.1.tgz",
"integrity": "sha512-D3RuNkynyHmEJIpD2qrgVkc9DQ23OrN/moAwZX4L8DfvszsJxpjQuUq3LMx6HoYji9fbIOBY18XWBsAux1ZZUA=="
}
}
},
"engine.io-client": {
"version": "3.4.4",
"resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.4.tgz",
@@ -22587,18 +22554,23 @@
}
},
"socket.io": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.3.0.tgz",
"integrity": "sha512-2A892lrj0GcgR/9Qk81EaY2gYhCBxurV0PfmmESO6p27QPrUK1J3zdns+5QPqvUYK2q657nSj0guoIil9+7eFg==",
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.4.1.tgz",
"integrity": "sha512-Si18v0mMXGAqLqCVpTxBa8MGqriHGQh8ccEOhmsmNS3thNCGBwO8WGrwMibANsWtQQ5NStdZwHqZR3naJVFc3w==",
"requires": {
"debug": "~4.1.0",
"engine.io": "~3.4.0",
"engine.io": "~3.5.0",
"has-binary2": "~1.0.2",
"socket.io-adapter": "~1.1.0",
"socket.io-client": "2.3.0",
"socket.io-client": "2.4.0",
"socket.io-parser": "~3.4.0"
},
"dependencies": {
"cookie": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
"integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA=="
},
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
@@ -22606,6 +22578,115 @@
"requires": {
"ms": "^2.1.1"
}
},
"engine.io": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.5.0.tgz",
"integrity": "sha512-21HlvPUKaitDGE4GXNtQ7PLP0Sz4aWLddMPw2VTyFz1FVZqu/kZsJUO8WNpKuE/OCL7nkfRaOui2ZCJloGznGA==",
"requires": {
"accepts": "~1.3.4",
"base64id": "2.0.0",
"cookie": "~0.4.1",
"debug": "~4.1.0",
"engine.io-parser": "~2.2.0",
"ws": "~7.4.2"
}
},
"engine.io-client": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.1.tgz",
"integrity": "sha512-oVu9kBkGbcggulyVF0kz6BV3ganqUeqXvD79WOFKa+11oK692w1NyFkuEj4xrkFRpZhn92QOqTk4RQq5LiBXbQ==",
"requires": {
"component-emitter": "~1.3.0",
"component-inherit": "0.0.3",
"debug": "~3.1.0",
"engine.io-parser": "~2.2.0",
"has-cors": "1.1.0",
"indexof": "0.0.1",
"parseqs": "0.0.6",
"parseuri": "0.0.6",
"ws": "~7.4.2",
"xmlhttprequest-ssl": "~1.5.4",
"yeast": "0.1.2"
},
"dependencies": {
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"requires": {
"ms": "2.0.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}
}
},
"isarray": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz",
"integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4="
},
"parseqs": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz",
"integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w=="
},
"parseuri": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz",
"integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow=="
},
"socket.io-client": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.4.0.tgz",
"integrity": "sha512-M6xhnKQHuuZd4Ba9vltCLT9oa+YvTsP8j9NcEiLElfIg8KeYPyhWOes6x4t+LTAC8enQbE/995AdTem2uNyKKQ==",
"requires": {
"backo2": "1.0.2",
"component-bind": "1.0.0",
"component-emitter": "~1.3.0",
"debug": "~3.1.0",
"engine.io-client": "~3.5.0",
"has-binary2": "~1.0.2",
"indexof": "0.0.1",
"parseqs": "0.0.6",
"parseuri": "0.0.6",
"socket.io-parser": "~3.3.0",
"to-array": "0.1.4"
},
"dependencies": {
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"requires": {
"ms": "2.0.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"socket.io-parser": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.2.tgz",
"integrity": "sha512-FJvDBuOALxdCI9qwRrO/Rfp9yfndRtc1jSgVgV8FDraihmSP/MLGD5PEuJrNfjALvcQ+vMDM/33AWOYP/JSjDg==",
"requires": {
"component-emitter": "~1.3.0",
"debug": "~3.1.0",
"isarray": "2.0.1"
}
}
}
},
"ws": {
"version": "7.4.4",
"resolved": "https://registry.npmjs.org/ws/-/ws-7.4.4.tgz",
"integrity": "sha512-Qm8k8ojNQIMx7S+Zp8u/uHOx7Qazv3Yv4q68MiWWWOJhiwG5W3x7iqmRtJo8xxrciZUY4vRxUTJCKuRnF28ZZw=="
}
}
},
@@ -23876,9 +23957,9 @@
}
},
"three": {
"version": "0.68.87",
"resolved": "https://registry.npmjs.org/three/-/three-0.68.87.tgz",
"integrity": "sha1-UNgklPHEHjgT1wzEG4fSJiBYc4A="
"version": "0.125.0",
"resolved": "https://registry.npmjs.org/three/-/three-0.125.0.tgz",
"integrity": "sha512-qL36qUGsPQ/Ofo/RZdXwHwM7A8wzUSAIyawtjIebJSPvounUQeneSqxI0aBY2iwKpseGy+RUtj3C5f/z4poyXw=="
},
"through": {
"version": "2.3.8",
@@ -25936,9 +26017,9 @@
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
},
"y18n": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
"integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w=="
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
"integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ=="
},
"yaeti": {
"version": "0.0.6",
+1 -1
View File
@@ -39,7 +39,7 @@
"react-helmet": "^6.1.0",
"swagger-ui-react": "^3.36.2",
"theme-ui": "^0.3.1",
"three": "^0.68.0"
"three": "^0.125.0"
},
"devDependencies": {
"eslint-config-airbnb": "^18.2.1",
+1 -1
View File
@@ -155,7 +155,7 @@ can optionally specify a custom formatter. Eg:
return [{"Cost": f"US$ {cost:.2f}"}]
DEFAULT_FEATURE_FLAGS = {
FEATURE_FLAGS = {
"ESTIMATE_QUERY_COST": True,
"QUERY_COST_FORMATTERS_BY_ENGINE": {"presto": presto_query_cost_formatter},
}
+1 -1
View File
@@ -137,7 +137,7 @@ export default class MainMenu extends React.Component {
const { visible } = this.state;
return (
<Layout.Header css={headerStyle}>
<a href="https://superset.apache.org">
<a href="/">
<img height="50" css={logoStyle} src={logoSvg} alt="logo" />
</a>
<MenuItems toggleDrawer={this.toggleDrawer} mode="horizontal" />
+1 -1
View File
@@ -105,7 +105,7 @@ const LayoutFooter = () => (
{new Date().getFullYear()}
,
<a href="http://www.apache.org/" target="_blank" rel="noreferrer">
&nbsp;The Apache Software Fountation
&nbsp;The Apache Software Foundation
</a>
, &nbsp;Licensed under the Apache
<a
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

+1 -1
View File
@@ -51,7 +51,7 @@ const links = [
'join our monthly virtual meetups and register for any upcoming events',
],
[
'https://github.com/apache/superset/blob/master/INTHEWILD.md',
'https://github.com/apache/superset/blob/master/RESOURCES/INTHEWILD.md',
'Organizations',
'a list of some of the organizations using Superset in production',
],
@@ -31,5 +31,5 @@ You can also use [PyAthena library](https://pypi.org/project/PyAthena/) (no Java
following connection string:
```
awsathena+rest://{aws_access_key_id}:{aws_secret_access_key}@athena.{region_name}.amazonaws.com/{
awsathena+rest://{aws_access_key_id}:{aws_secret_access_key}@athena.{region_name}.amazonaws.com/{schema_name}?s3_staging_dir={s3_staging_dir}&...
```
@@ -8,11 +8,38 @@ version: 1
## Clickhouse
To use Clickhouse with Superset, you will need to add the following Python libraries:
```
clickhouse-driver==0.2.0
clickhouse-sqlalchemy==0.1.6
```
If running Superset using Docker Compose, add the following to your `./docker/requirements-local.txt` file:
```
clickhouse-driver>=0.2.0
clickhouse-sqlalchemy>=0.1.6
```
The recommended connector library for Clickhouse is
[sqlalchemy-clickhouse](https://github.com/cloudflare/sqlalchemy-clickhouse).
The expected connection string is formatted as follows:
```
clickhouse://{username}:{password}@{hostname}:{port}/{database}
clickhouse+native://<user>:<password>@<host>:<port>/<database>[?options…]clickhouse://{username}:{password}@{hostname}:{port}/{database}
```
Here's a concrete example of a real connection string:
```
clickhouse+native://demo:demo@github.demo.trial.altinity.cloud/default?secure=true
```
If you're using Clickhouse locally on your computer, you can get away with using a native protocol URL that
uses the default user without a password (and doesn't encrypt the connection):
```
clickhouse+native://localhost/default
```
@@ -0,0 +1,25 @@
---
name: CrateDB
menu: Connecting to Databases
route: /docs/databases/cratedb
index: 30
version: 1
---
## CrateDB
The recommended connector library for CrateDB is
[crate](https://pypi.org/project/crate/).
You need to install the extras as well for this library.
We recommend adding something like the following
text to your requirements file:
```
crate[sqlalchemy]==0.26.0
```
The expected connection string is formatted as follows:
```
crate://crate@127.0.0.1:4200
```
@@ -0,0 +1,24 @@
---
name: Firebird
menu: Connecting to Databases
route: /docs/databases/firebird
index: 30
version: 1
---
## Firebird
The recommended connector library for Firebird is [sqlalchemy-firebird](https://pypi.org/project/sqlalchemy-firebird/).
Superset has been tested on `sqlalchemy-firebird>=0.7.0, <0.8`.
The recommended connection string is:
```
firebird+fdb://{username}:{password}@{host}:{port}//{path_to_db_file}
```
Here's a connection string example of Superset connecting to a local Firebird database:
```
firebird+fdb://SYSDBA:masterkey@192.168.86.38:3050//Library/Frameworks/Firebird.framework/Versions/A/Resources/examples/empbuild/employee.fdb
```
@@ -46,7 +46,7 @@ The resulting file should have this structure:
"auth_uri": "...",
"token_uri": "...",
"auth_provider_x509_cert_url": "...",
"client_x509_cert_url": "...",
"client_x509_cert_url": "..."
}
}
```
@@ -10,8 +10,8 @@ version: 1
Google Sheets has a very limited
[SQL API](https://developers.google.com/chart/interactive/docs/querylanguage). The recommended
connector library for Google Sheets is [gsheetsdb](https://github.com/betodealmeida/gsheets-db-api).
connector library for Google Sheets is [shillelagh](https://github.com/betodealmeida/shillelagh).
There are a few steps involved in connecting Superset to Google Sheets. This
[tutorial](https://preset.io/blog/2020-06-01-connect-superset-google-sheets/) has the most upto date
[tutorial](https://preset.io/blog/2020-06-01-connect-superset-google-sheets/) has the most up to date
instructions on setting up this connection.
@@ -8,13 +8,16 @@ version: 1
## Install Database Drivers
Superset requires a Python DB-API database driver and a SQLAlchemy dialect to be installed for each datastore you want to connect to.
Superset requires a Python DB-API database driver and a SQLAlchemy
dialect to be installed for each datastore you want to connect to.
You can read more [here](/docs/databases/dockeradddrivers) about how to install new database drivers into your Superset configuration.
You can read more [here](/docs/databases/dockeradddrivers) about how to
install new database drivers into your Superset configuration.
### Supported Databases and Dependencies
Superset does not ship bundled with connectivity to databases, except for SQLite, which is part of the Python standard library. Youll need to install the required packages for the database you want to use as your metadata database as well as the packages needed to connect to the databases you want to access through Superset.
Superset does not ship bundled with connectivity to databases, except for SQLite,
which is part of the Python standard library. Youll need to install the required packages for the database you want to use as your metadata database as well as the packages needed to connect to the databases you want to access through Superset.
A list of some of the recommended packages.
@@ -27,22 +30,23 @@ A list of some of the recommended packages.
|[Apache Hive](/docs/databases/hive)|```pip install pyhive```|```hive://hive@{hostname}:{port}/{database}```|
|[Apache Impala](/docs/databases/impala)|```pip install impala```|```impala://{hostname}:{port}/{database}```|
|[Apache Kylin](/docs/databases/kylin)|```pip install kylinpy```|```kylin://<username>:<password>@<hostname>:<port>/<project>?<param1>=<value1>&<param2>=<value2>```|
|[Apache Pinot](/docs/databases/pinot)|```pip install pinotdb```|```pinot+http://CONTROLLER:5436/ query?server=http://CONTROLLER:5983/```|
|[Apache Pinot](/docs/databases/pinot)|```pip install pinotdb```|```pinot://BROKER:5436/query?server=http://CONTROLLER:5983/```|
|[Apache Solr](/docs/databases/solr)|```pip install sqlalchemy-solr```|```solr://{username}:{password}@{hostname}:{port}/{server_path}/{collection}```
|[Apache Spark SQL](/docs/databases/spark-sql)|```pip install pyhive```|```hive://hive@{hostname}:{port}/{database}```
|[Azure MS SQL](/docs/databases/sql-server)|```pip install pymssql``` |```mssql+pymssql://UserName@presetSQL:TestPassword@presetSQL.database.windows.net:1433/TestSchema```
|[Big Query](/docs/databases/bigquery)|```pip install pybigquery```|```bigquery://{project_id}```|
|[ClickHouse](/docs/databases/clickhouse)|```pip install sqlalchemy-clickhouse```|```clickhouse://{username}:{password}@{hostname}:{port}/{database}```|
|[ClickHouse](/docs/databases/clickhouse)|```pip install clickhouse-driver==0.2.0 && pip install clickhouse-sqlalchemy==0.1.6```|```clickhouse+native://{username}:{password}@{hostname}:{port}/{database}```|
|[CockroachDB](/docs/databases/cockroachdb)|```pip install cockroachdb```|```cockroachdb://root@{hostname}:{port}/{database}?sslmode=disable```|
|[Dremio](/docs/databases/dremio)|```pip install sqlalchemy_dremio```|```dremio://user:pwd@host:31010/```|
|[Elasticsearch](/docs/databases/elasticsearch)|```pip install elasticsearch-dbapi```|```elasticsearch+http://{user}:{password}@{host}:9200/```|
|[Exasol](/docs/databases/exasol)|```pip install sqlalchemy-exasol```|```exa+pyodbc://{username}:{password}@{hostname}:{port}/my_schema?CONNECTIONLCALL=en_US.UTF-8&driver=EXAODBC```|
|[Google Sheets](/docs/databases/google-sheets)|```pip install gsheetsdb```|```gsheets://```|
|[Google Sheets](/docs/databases/google-sheets)|```pip install shillelagh[gsheetsapi]```|```gsheets://```|
|[Hologres](/docs/databases/hologres)|```pip install psycopg2```|```postgresql+psycopg2://<UserName>:<DBPassword>@<Database Host>/<Database Name>```|
|[IBM Db2](/docs/databases/ibm-db2)|```pip install ibm_db_sa```|```db2+ibm_db://```|
|[MySQL](/docs/databases/mysql)|```pip install mysqlclient```|```mysql://<UserName>:<DBPassword>@<Database Host>/<Database Name>```|
|[Oracle](/docs/databases/oracle)|```pip install cx_Oracle```|```oracle://```|
|[PostgreSQL](/docs/databases/postgresql)|```pip install psycopg2```|```postgresql://<UserName>:<DBPassword>@<Database Host>/<Database Name>```|
|[Trino](/docs/databases/trino)|```pip install sqlalchemy-trino```|```trino://{username}:{password}@{hostname}:{port}/{catalog}```|
|[Presto](/docs/databases/presto)|```pip install pyhive```|```presto://```|
|[SAP Hana](/docs/databases/hana)|```pip install hdbcli sqlalchemy-hana or pip install apache-superset[hana]```|```hana://{username}:{password}@{host}:{port}```|
|[Snowflake](/docs/databases/snowflake)|```pip install snowflake-sqlalchemy```|```snowflake://{user}:{password}@{account}.{region}/{database}?role={role}&warehouse={warehouse}```|
@@ -8,21 +8,16 @@ version: 1
## MySQL
The recommended connector library for MySQL is [mysqlclient](https://pypi.org/project/mysqlclient/).
The recommended connector library for MySQL is [mysql-connector-python](https://pypi.org/project/mysql-connector-python/).
Set up the Connection String using the following settings:
Here's the connection string:
User Name: UserName
Password: DBPassword
Database Host:
- For Localhost or docker running Linux: localhost or 127.0.0.1
```
mysql+mysqlconnector://{username}:{password}@{host}/{database}
```
Host:
- For Localhost or Docker running Linux: `localhost` or `127.0.0.1`
- For On Prem: IP address or Host name
- For AWS Endpoint
- For Docker running in OSX: docker.for.mac.host.internal
Database Name: Database Name
Port: default 3306
Connection String
```
mysql://<UserName>:<DBPassword>@<Database Host>/<Database Name>
```
- For Docker running in OSX: `docker.for.mac.host.internal`
Port: `3306` by default
@@ -25,15 +25,18 @@ Postgres sample connection parameters:
The connection string looks like:
```
postgresql+psycopg2://{username}:{password}@{host}:{port}/{database}
postgresql://{username}:{password}@{host}:{port}/{database}
```
Extra parameters:
You can require SSL by adding `?sslmode=require` at the end:
```
?sslmode=require
postgresql://{username}:{password}@{host}:{port}/{database}?sslmode=require
```
You can read about the other SSL modes that Postgres supports in
[Table 31-1 from this documentation](https://www.postgresql.org/docs/9.1/libpq-ssl.html).
More information about PostgreSQL connection options can be found in the
[SQLAlchemy docs](https://docs.sqlalchemy.org/en/13/dialects/postgresql.html#module-sqlalchemy.dialects.postgresql.psycopg2)
and the
@@ -13,12 +13,25 @@ The [pyhive](https://pypi.org/project/PyHive/) library is the recommended way to
The expected connection string is formatted as follows:
```
hive://hive@{hostname}:{port}/{database}
presto://{hostname}:{port}/{database}
```
You can pass in a username and password as well:
```
presto://{username}:{password}@{hostname}:{port}/{database}
```
Here is an example connection string with values:
```
presto://datascientist:securepassword@presto.example.com:8080/hive
```
By default Superset assumes the most recent version of Presto is being used when querying the
datasource. If youre using an older version of Presto, you can configure it in the extra parameter:
```
{
"version": "0.123"
@@ -0,0 +1,17 @@
---
name: Rockset
menu: Connecting to Databases
route: /docs/databases/rockset
index: 29
version: 1
---
## Rockset
The connection string for Rockset is:
```
rockset://apikey:{your-apikey}@api.rs2.usw2.rockset.com/
```
For more complete instructions, we recommend the [Rockset documentation](https://docs.rockset.com/apache-superset/).
@@ -1,5 +1,5 @@
---
name: SQL Server
name: Microsoft SQL Server
menu: Connecting to Databases
route: /docs/databases/sql-server
index: 24
@@ -13,5 +13,5 @@ The recommended connector library for SQL Server is [pymssql](https://github.com
The connection string for SQL Server looks like this:
```
mssql+pymssql://UserName@DB:Password@DB_Host:1433/TestSchema
mssql+pymssql://<Username>:<Password>@<Host>:<Port-default:1433>/<Database Name>/?Encrypt=yes
```
@@ -0,0 +1,27 @@
---
name: Trino
menu: Connecting to Databases
route: /docs/databases/trino
index: 28
version: 1
---
## Trino
Supported trino version 352 and higher
The [sqlalchemy-trino](https://pypi.org/project/sqlalchemy-trino/) library is the recommended way to connect to Trino through SQLAlchemy.
The expected connection string is formatted as follows:
```
trino://{username}:{password}@{hostname}:{port}/{catalog}
```
If you are running trino with docker on local machine please use the following connection URL
```
trino://trino@host.docker.internal:8080
```
Reference:
[Trino-Superset-Podcast](https://trino.io/episodes/12.html)
+33 -65
View File
@@ -6,89 +6,57 @@ index: 1
version: 1
---
## Country Map Tools
## The Country Map Visualization
This tool is used in slices for visualization number or string by region, province or department of
your countries. So, if you want to use tools, you need ISO 3166-2 code of region, province or
department.
The Country Map visualization allows you to plot lightweight choropleth maps of
your countries by province, states, or other subdivision types. It does not rely
on any third-party map services but would require you to provide the
[ISO-3166-2](https://en.wikipedia.org/wiki/ISO_3166-2) codes of your country's
top-level subdivisions. Comparing to a province or state's full names, the ISO
code is less ambiguous and is unique to all regions in the world.
ISO 3166-2 is part of the ISO 3166 standard published by the International Organization for
Standardization (ISO), and defines codes for identifying the principal subdivisions (e.g., provinces
or states) of all countries coded in ISO 3166-1
## Included Maps
The purpose of ISO 3166-2 is to establish an international standard of short and unique alphanumeric
codes to represent the relevant administrative divisions and dependent territories of all countries
in a more convenient and less ambiguous form than their full names. Each complete ISO 3166-2 code
consists of two parts, separated by a hyphen:
The first part is the ISO 3166-1 alpha-2 code of the country; The second part is a string of up to
three alphanumeric characters, which is usually obtained from national sources and stems from coding
systems already in use in the country concerned, but may also be developed by the ISO itself.
We can apply these concepts to specify the state of Texas in the country of United States:
```
US-TX
```
### Included Codes
The ISO codes for the following countries are included in Superset:
The Country Maps visualization already ships with the maps for the following countries:
- Belgium
- Brazil
- Bulgaria
- Canada
- China
- Egypt
- France
- Germany
- India
- Iran
- Italy
- Japan
- Korea
- Liechtenstein
- Morocco
- Myanmar
- Netherlands
- Portugal
- Russia
- Singapore
- Spain
- Switzerland
- United Kingdom
- Syria
- Thailand
- Timorleste
- UK
- Ukraine
- Uruguay
- USA
- Zambia
### Adding New Countries
## Adding a New Country
To add a new country in country map tools, you need to follow the following steps:
To add a new country to the list, you'd have to edit files in
[@superset-ui/legacy-plugin-chart-country-map](https://github.com/apache-superset/superset-ui/tree/master/plugins/legacy-plugin-chart-country-map).
- You need shapefiles which contain data of your map. You can get this file on this site:
https://www.diva-gis.org/gdata
- You need to add ISO 3166-2 with column name ISO for all record in your file. Its important
because its a norm for mapping your data with geojson file
- You need to convert shapefile to geojson file. This action can make with ogr2ogr tools:
https://www.gdal.org/ogr2ogr.html
- Put your geojson file in next folder : superset-frontend/src/visualizations/CountryMap/countries
with the next name : nameofyourcountries.geojson
- You can to reduce size of geojson file on this site: https://mapshaper.org/
- Go in file `superset-frontend/src/explore/controls.jsx`
- Add your country in component select_country. Here's an example:
```
type: 'SelectControl',
label: 'Country Name Type',
default: 'France',
choices: [
'Belgium',
'Brazil',
'China',
'Egypt',
'France',
'Germany',
'Italy',
'Japan',
'Korea',
'Morocco',
'Netherlands',
'Russia',
'Singapore',
'Spain',
'Uk',
'Usa',
].map(s => [s, s]),
description: 'The name of country that Superset should display',
},
```
1. Generate a new GeoJSON file for your country following the guide in [this Jupyter notebook](https://github.com/apache-superset/superset-ui/blob/master/plugins/legacy-plugin-chart-country-map/scripts/Country%20Map%20GeoJSON%20Generator.ipynb).
2. Edit the countries list in [legacy-plugin-chart-country-map/src/countries.js](https://github.com/apache-superset/superset-ui/blob/master/plugins/legacy-plugin-chart-country-map/src/countries.js).
3. Ping one of the Superset committers to get the `@superset-ui/legacy-plugin-chart-country-map` package published, or
publish it under another name yourself.
4. Update npm dependencies in `superset-frontend/package.json` to install the updated plugin package.
@@ -84,3 +84,102 @@ Your query was not submitted to the database because it's missing one or more
parameters. You should define all the parameters referenced in the query in a
valid JSON document. Check that the parameters are spelled correctly and that
the document has a valid syntax.
## Issue 1007
```
The hostname provided can't be resolved.
```
The hostname provided when adding a new database is invalid and cannot be
resolved. Please check that there are no typos in the hostname.
## Issue 1008
```
The port is closed.
```
The port provided when adding a new database is not open. Please check that
the port number is correct, and that the database is running and listening on
that port.
## Issue 1009
```
The host might be down, and cannot be reached on the provided port.
```
The host provided when adding a new database doesn't seem to be up.
Additionally, it cannot be reached on the provided port. Please check that
there are no firewall rules preventing access to the host.
## Issue 1010
```
Superset encountered an error while running a command.
```
Something unexpected happened, and Superset encountered an error while
running a command. Please reach out to your administrator.
## Issue 1011
```
Superset encountered an unexpected error.
```
Something unexpected happened in the Superset backend. Please reach out
to your administrator.
## Issue 1012
```
The username provided when connecting to a database is not valid.
```
The user provided a username that doesn't exist in the database. Please check
that the username is typed correctly and exists in the database.
## Issue 1013
```
The password provided when connecting to a database is not valid.
```
The user provided a password that is incorrect. Please check that the
password is typed correctly.
## Issue 1014
```
Either the username or the password used are incorrect.
```
Either the username provided does not exist or the password was written incorrectly. Please
check that the username and password were typed correctly.
## Issue 1015
```
Either the database is spelled incorrectly or does not exist.
```
Either the database was written incorrectly or it does not exist. Check that it was typed correctly.
## Issue 1016
```
The schema was deleted or renamed in the database.
```
The schema was either removed or renamed. Check that the schema is typed correctly and exists.
## Issue 1017
```
The user doesn't have the proper permissions to connect to the database
```
We were unable to connect to your database. Please confirm that your service account has the Viewer and Job User roles on the project.
@@ -66,7 +66,7 @@ If you are seeing timeouts (504 Gateway Time-out) when loading dashboard or expl
probably behind gateway or proxy server (such as Nginx). If it did not receive a timely response
from Superset server (which is processing long queries), these web servers will send 504 status code
to clients directly. Superset has a client-side timeout limit to address this issue. If query didnt
come back within clint-side timeout (60 seconds by default), Superset will display warning message
come back within client-side timeout (60 seconds by default), Superset will display warning message
to avoid gateway timeout message. If you have a longer gateway timeout limit, you can change the
timeout settings in **superset_config.py**:
@@ -0,0 +1,458 @@
---
name: Alerts and Reports
menu: Installation and Configuration
route: /docs/installation/alerts-reports
index: 10
version: 2
---
## Alerts and Reports
(version 1.0.1 and above)
Users can configure automated alerts and reports to send dashboards or charts to an email recipient or Slack channel.
- Alerts are sent when a SQL condition is reached
- Reports are sent on a schedule
Alerts and reports are disabled by default. To turn them on, you need to do some setup, described here.
### Requirements
#### Commons
##### In your `superset_config.py`
- `"ALERT_REPORTS"` feature flag must be turned to True.
- `CELERYBEAT_SCHEDULE` in CeleryConfig must contain schedule for `reports.scheduler`.
- At least one of those must be configured, depending on what you want to use:
- emails: `SMTP_*` settings
- Slack messages: `SLACK_API_TOKEN`
##### In your `Dockerfile`
- You must install a headless browser, for taking screenshots of the charts and dashboards. Only Firefox and Chrome are currently supported.
> If you choose Chrome, you must also change the value of `WEBDRIVER_TYPE` to `"chrome"` in your `superset_config.py`.
#### Slack integration
To send alerts and reports to Slack channels, you need to create a new Slack Application on your workspace.
1. Connect to your Slack workspace, then head to <https://api.slack.com/apps>.
2. Create a new app.
3. Go to "OAuth & Permissions" section, and give the following scopes to your app:
- `incoming-webhook`
- `files:write`
4. At the top of the "OAuth and Permissions" section, click "install to workspace".
5. Select a default channel for your app and continue.
(You can post to any channel by inviting your Superset app into that channel).
6. The app should now be installed in your workspace, and a "Bot User OAuth Access Token" should have been created. Copy that token in the `SLACK_API_TOKEN` variable of your `superset_config.py`.
7. Restart the service (or run `superset init`) to pull in the new configuration.
Note: when you configure an alert or a report, the Slack channel list take channel names without the leading '#' e.g. use `alerts` instead of `#alerts`.
#### Kubernetes specific
- You must have a `celery beat` pod running. If you're using the chart included in the GitHub repository under [helm/superset](https://github.com/apache/superset/tree/master/helm/superset), you need to put `supersetCeleryBeat.enabled = true` in your values override.
- You can see the dedicated docs about [Kubernetes installation](/docs/installation/running-on-kubernetes) for more generic details.
#### Docker-compose specific
##### You must have in your`docker-compose.yaml`
- a redis message broker
- PostgreSQL DB instead of SQLlite
- one or more `celery worker`
- a single `celery beat`
### Detailed config
The following configurations need to be added to the `superset_config.py` file. This file is loaded when the image runs, and any configurations in it will override the default configurations found in the `config.py`.
You can find documentation about each field in the default `config.py` in the GitHub repository under [superset/config.py](https://github.com/apache/superset/blob/master/superset/config.py).
You need to replace default values with your custom Redis, Slack and/or SMTP config.
In the `CeleryConfig`, only the `CELERYBEAT_SCHEDULE` is relative to this feature, the rest of the `CeleryConfig` can be changed for your needs.
```python
from celery.schedules import crontab
FEATURE_FLAGS = {
"ALERT_REPORTS": True
}
REDIS_HOST = "redis-superset"
REDIS_PORT = "6379"
class CeleryConfig:
BROKER_URL = 'redis://%s:%s/0' % (REDIS_HOST, REDIS_PORT)
CELERY_IMPORTS = ('superset.sql_lab', "superset.tasks", "superset.tasks.thumbnails", )
CELERY_RESULT_BACKEND = 'redis://%s:%s/0' % (REDIS_HOST, REDIS_PORT)
CELERYD_PREFETCH_MULTIPLIER = 10
CELERY_ACKS_LATE = True
CELERY_ANNOTATIONS = {
'sql_lab.get_sql_results': {
'rate_limit': '100/s',
},
'email_reports.send': {
'rate_limit': '1/s',
'time_limit': 600,
'soft_time_limit': 600,
'ignore_result': True,
},
}
CELERYBEAT_SCHEDULE = {
'reports.scheduler': {
'task': 'reports.scheduler',
'schedule': crontab(minute='*', hour='*'),
},
'reports.prune_log': {
'task': 'reports.prune_log',
'schedule': crontab(minute=0, hour=0),
},
}
CELERY_CONFIG = CeleryConfig
SCREENSHOT_LOCATE_WAIT = 100
SCREENSHOT_LOAD_WAIT = 600
# Slack configuration
SLACK_API_TOKEN = "xoxb-"
# Email configuration
SMTP_HOST = "smtp.sendgrid.net" #change to your host
SMTP_STARTTLS = True
SMTP_SSL = False
SMTP_USER = "your_user"
SMTP_PORT = 2525 # your port eg. 587
SMTP_PASSWORD = "your_password"
SMTP_MAIL_FROM = "noreply@youremail.com"
# WebDriver configuration
# If you use Firefox, you can stick with default values
# If you use Chrome, then add the following WEBDRIVER_TYPE and WEBDRIVER_OPTION_ARGS
WEBDRIVER_TYPE = "chrome"
WEBDRIVER_OPTION_ARGS = [
"--force-device-scale-factor=2.0",
"--high-dpi-support=2.0",
"--headless",
"--disable-gpu",
"--disable-dev-shm-usage",
"--no-sandbox",
"--disable-setuid-sandbox",
"--disable-extensions",
]
# This is for internal use, you can keep http
WEBDRIVER_BASEURL="http://superset:8088"
# This is the link sent to the recipient, change to your domain eg. https://superset.mydomain.com
WEBDRIVER_BASEURL_USER_FRIENDLY="http://localhost:8088"
```
### Custom Dockerfile
A webdriver (and headless browser) is needed to capture screenshots of the charts and dashboards which are then sent to the recipient. As the base superset image does not have a webdriver installed, we need to extend it and install the webdriver.
#### Using Firefox
```docker
FROM apache/superset:1.0.1
USER root
RUN apt-get update && \
apt-get install --no-install-recommends -y firefox-esr
ENV GECKODRIVER_VERSION=0.29.0
RUN wget -q https://github.com/mozilla/geckodriver/releases/download/v${GECKODRIVER_VERSION}/geckodriver-v${GECKODRIVER_VERSION}-linux64.tar.gz && \
tar -x geckodriver -zf geckodriver-v${GECKODRIVER_VERSION}-linux64.tar.gz -O > /usr/bin/geckodriver && \
chmod 755 /usr/bin/geckodriver && \
rm geckodriver-v${GECKODRIVER_VERSION}-linux64.tar.gz
RUN pip install --no-cache gevent psycopg2 redis
USER superset
```
#### Using Chrome
```docker
FROM apache/superset:1.0.1
USER root
RUN apt-get update && \
wget -q https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb && \
apt-get install -y --no-install-recommends ./google-chrome-stable_current_amd64.deb && \
rm -f google-chrome-stable_current_amd64.deb
RUN export CHROMEDRIVER_VERSION=$(curl --silent https://chromedriver.storage.googleapis.com/LATEST_RELEASE_88) && \
wget -q https://chromedriver.storage.googleapis.com/${CHROMEDRIVER_VERSION}/chromedriver_linux64.zip && \
unzip chromedriver_linux64.zip -d /usr/bin && \
chmod 755 /usr/bin/chromedriver && \
rm -f chromedriver_linux64.zip
RUN pip install --no-cache gevent psycopg2 redis
USER superset
```
>Don't forget to set `WEBDRIVER_TYPE` and `WEBDRIVER_OPTION_ARGS` in your config if you use Chrome.
### Summary of steps to turn on alerts and reporting:
Using the templates below,
1. Create a new directory and create the Dockerfile
2. Build the extended image using the Dockerfile
3. Create the `docker-compose.yaml` file in the same directory
4. Create a new subdirectory called `config`
5. Create the `superset_config.py` file in the `config` subdirectory
6. Run the image using `docker-compose up` in the same directory as the `docker-compose.py` file
7. In a new terminal window, upgrade the DB by running `docker exec -it superset-1.0.1-extended superset db upgrade`
8. Then run `docker exec -it superset-1.0.1-extended superset init`
9. Then setup your admin user if need be, `docker exec -it superset-1.0.1-extended superset fab create-admin`
10. Finally, restart the running instance - `CTRL-C`, then `docker-compose up`
(note: v 1.0.1 is current at time of writing, you can change the version number to the latest version if a newer version is available)
### Docker compose
The docker compose file lists the services that will be used when running the image. The specific services needed for alerts and reporting are outlined below.
#### Redis message broker
To ferry requests between the celery worker and the Superset instance, we use a message broker. This template uses Redis.
#### Replacing SQLite with Postgres
While it might be possible to use SQLite for alerts and reporting, it is highly recommended using a more production ready DB for Superset in general. Our template uses Postgres.
#### Celery worker
The worker will process the tasks that need to be performed when an alert or report is fired.
#### Celery beat
The beat is the scheduler that tells the worker when to perform its tasks. This schedule is defined when you create the alert or report.
#### Full `docker-compose.yaml` configuration
The Redis, Postgres, Celery worker and Celery beat services are defined in the template:
Config for `docker-compose.yaml`:
```docker
version: '3.6'
services:
redis:
image: redis:6.0.9-buster
restart: on-failure
volumes:
- redis:/data
postgres:
image: postgres
restart: on-failure
environment:
POSTGRES_DB: superset
POSTGRES_PASSWORD: superset
POSTGRES_USER: superset
volumes:
- db:/var/lib/postgresql/data
worker:
image: superset-1.0.1-extended
restart: on-failure
healthcheck:
disable: true
depends_on:
- superset
- postgres
- redis
command: "celery worker --app=superset.tasks.celery_app:app --pool=gevent --concurrency=500"
volumes:
- ./config/:/app/pythonpath/
beat:
image: superset-1.0.1-extended
restart: on-failure
healthcheck:
disable: true
depends_on:
- superset
- postgres
- redis
command: "celery beat --app=superset.tasks.celery_app:app --pidfile /tmp/celerybeat.pid --schedule /tmp/celerybeat-schedule"
volumes:
- ./config/:/app/pythonpath/
superset:
image: superset-1.0.1-extended
restart: on-failure
environment:
- SUPERSET_PORT=8088
ports:
- "8088:8088"
depends_on:
- postgres
- redis
command: gunicorn --bind 0.0.0.0:8088 --access-logfile - --error-logfile - --workers 5 --worker-class gthread --threads 4 --timeout 200 --limit-request-line 4094 --limit-request-field_size 8190 superset.app:create_app()
volumes:
- ./config/:/app/pythonpath/
volumes:
db:
external: true
redis:
external: false
```
### Summary
With the extended image created by using the `Dockerfile`, and then running that image using `docker-compose.yaml`, plus the required configurations in the `superset_config.py` you should now have alerts and reporting working correctly.
- The above templates also work in a Docker swarm environment, you would just need to add `Deploy:` to the Superset, Redis and Postgres services along with your specific configs for your swarm
# Old Reports feature
## Scheduling and Emailing Reports
(version 0.38 and below)
### Email Reports
Email reports allow users to schedule email reports for:
- chart and dashboard visualization (attachment or inline)
- chart data (CSV attachment on inline table)
Enable email reports in your `superset_config.py` file:
```python
ENABLE_SCHEDULED_EMAIL_REPORTS = True
```
This flag enables some permissions that are stored in your database, so you'll want to run `superset init` again if you are running this in a dev environment.
Now you will find two new items in the navigation bar that allow you to schedule email reports:
- **Manage > Dashboard Emails**
- **Manage > Chart Email Schedules**
Schedules are defined in [crontab format](https://crontab.guru/) and each schedule can have a list
of recipients (all of them can receive a single mail, or separate mails). For audit purposes, all
outgoing mails can have a mandatory BCC.
In order get picked up you need to configure a celery worker and a celery beat (see section above
“Celery Tasks”). Your celery configuration also needs an entry `email_reports.schedule_hourly` for
`CELERYBEAT_SCHEDULE`.
To send emails you need to configure SMTP settings in your `superset_config.py` configuration file.
```python
EMAIL_NOTIFICATIONS = True
SMTP_HOST = "email-smtp.eu-west-1.amazonaws.com"
SMTP_STARTTLS = True
SMTP_SSL = False
SMTP_USER = "smtp_username"
SMTP_PORT = 25
SMTP_PASSWORD = os.environ.get("SMTP_PASSWORD")
SMTP_MAIL_FROM = "insights@komoot.com"
```
To render dashboards you need to install a local browser on your Superset instance:
- [geckodriver](https://github.com/mozilla/geckodriver) for Firefox
- [chromedriver](http://chromedriver.chromium.org/) for Chrome
You'll need to adjust the `WEBDRIVER_TYPE` accordingly in your configuration. You also need
to specify on behalf of which username to render the dashboards. In general dashboards and charts
are not accessible to unauthorized requests, that is why the worker needs to take over credentials
of an existing user to take a snapshot.
```python
THUMBNAIL_SELENIUM_USER = 'username_with_permission_to_access_dashboards'
```
**Important notes**
- Be mindful of the concurrency setting for celery (using `-c 4`). Selenium/webdriver instances can
consume a lot of CPU / memory on your servers.
- In some cases, if you notice a lot of leaked geckodriver processes, try running your celery
processes with `celery worker --pool=prefork --max-tasks-per-child=128 ...`
- It is recommended to run separate workers for the `sql_lab` and `email_reports` tasks. This can be
done using the `queue` field in `CELERY_ANNOTATIONS`.
- Adjust `WEBDRIVER_BASEURL` in your configuration file if celery workers cant access Superset via
its default value of `http://0.0.0.0:8080/`.
### Schedule Reports
You can optionally allow your users to schedule queries directly in SQL Lab. This is done by addding
extra metadata to saved queries, which are then picked up by an external scheduled (like
[Apache Airflow](https://airflow.apache.org/)).
To allow scheduled queries, add the following to your configuration file:
```python
FEATURE_FLAGS = {
# Configuration for scheduling queries from SQL Lab. This information is
# collected when the user clicks "Schedule query", and saved into the `extra`
# field of saved queries.
# See: https://github.com/mozilla-services/react-jsonschema-form
'SCHEDULED_QUERIES': {
'JSONSCHEMA': {
'title': 'Schedule',
'description': (
'In order to schedule a query, you need to specify when it '
'should start running, when it should stop running, and how '
'often it should run. You can also optionally specify '
'dependencies that should be met before the query is '
'executed. Please read the documentation for best practices '
'and more information on how to specify dependencies.'
),
'type': 'object',
'properties': {
'output_table': {
'type': 'string',
'title': 'Output table name',
},
'start_date': {
'type': 'string',
'title': 'Start date',
# date-time is parsed using the chrono library, see
# https://www.npmjs.com/package/chrono-node#usage
'format': 'date-time',
'default': 'tomorrow at 9am',
},
'end_date': {
'type': 'string',
'title': 'End date',
# date-time is parsed using the chrono library, see
# https://www.npmjs.com/package/chrono-node#usage
'format': 'date-time',
'default': '9am in 30 days',
},
'schedule_interval': {
'type': 'string',
'title': 'Schedule interval',
},
'dependencies': {
'type': 'array',
'title': 'Dependencies',
'items': {
'type': 'string',
},
},
},
},
'UISCHEMA': {
'schedule_interval': {
'ui:placeholder': '@daily, @weekly, etc.',
},
'dependencies': {
'ui:help': (
'Check the documentation for the correct format when '
'defining dependencies.'
),
},
},
'VALIDATION': [
# ensure that start_date <= end_date
{
'name': 'less_equal',
'arguments': ['start_date', 'end_date'],
'message': 'End date cannot be before start date',
# this is where the error message is shown
'container': 'end_date',
},
],
# link to the scheduler; this example links to an Airflow pipeline
# that uses the query id and the output table as its name
'linkback': (
'https://airflow.example.com/admin/airflow/tree?'
'dag_id=query_${id}_${extra_json.schedule_info.output_table}'
),
},
}
```
This feature flag is based on
[react-jsonschema-form](https://github.com/mozilla-services/react-jsonschema-form) and will add a
button called “Schedule Query” to SQL Lab. When the button is clicked, a modal will show up where
the user can add the metadata required for scheduling the query.
This information can then be retrieved from the endpoint `/savedqueryviewapi/api/read` and used to
schedule the queries that have `scheduled_queries` in their JSON metadata. For schedulers other than
Airflow, additional fields can be easily added to the configuration file above.
@@ -122,9 +122,9 @@ OAUTH_PROVIDERS = [
'token_key':'access_token', # Name of the token in the response of access_token_url
'icon':'fa-address-card', # Icon for the provider
'remote_app': {
'consumer_key':'myClientId', # Client Id (Identify Superset application)
'consumer_secret':'MySecret', # Secret for this Client Id (Identify Superset application)
'request_token_params':{
'client_id':'myClientId', # Client Id (Identify Superset application)
'client_secret':'MySecret', # Secret for this Client Id (Identify Superset application)
'client_kwargs':{
'scope': 'read' # Scope for the Authorization
},
'access_token_method':'POST', # HTTP Method to call access_token_url
@@ -185,24 +185,14 @@ functionalities in Superset, but will be only affected by a subset of users.
You can enable or disable features with flag from `superset_config.py`:
```python
DEFAULT_FEATURE_FLAGS = {
FEATURE_FLAGS = {
'CLIENT_CACHE': False,
'ENABLE_EXPLORE_JSON_CSRF_PROTECTION': False,
'PRESTO_EXPAND_DATA': False,
}
```
Here is a list of flags and descriptions:
- `ENABLE_EXPLORE_JSON_CSRF_PROTECTION`: For some security concerns, you may need to enforce CSRF
protection on all query request to the `explore_json` endpoint. When
`ENABLE_EXPLORE_JSON_CSRF_PROTECTION` is set to true, your users cannot make GET request to
`explore_json`. The default value for this feature is `False` and `explore_json` will accept both
GET and POST request. See [PR 7935](https://github.com/apache/superset/pull/7935) for
more details.
- `PRESTO_EXPAND_DATA`: When this feature is enabled, nested types in Presto will be expanded into
extra columns and / or arrays. This is experimental, and doesnt work with all nested types.
A current list of feature flags can be found in `RESOURCES/FEATURE_FLAGS.md`
### SIP 15
@@ -1,175 +0,0 @@
---
name: Scheduling and Emailing Reports
menu: Installation and Configuration
route: /docs/installation/email-reports
index: 10
version: 1
---
## Scheduling and Emailing Reports
### Email Reports
Email reports allow users to schedule email reports for:
- chart and dashboard visualization (attachment or inline)
- chart data (CSV attachment on inline table)
Enable email reports in your `superset_config.py` file:
```python
ENABLE_SCHEDULED_EMAIL_REPORTS = True
```
This flag enables some permissions that are stored in your database, so you'll want to run `superset init` again if you are running this in a dev environment.
Now you will find two new items in the navigation bar that allow you to schedule email reports:
- **Manage > Dashboard Emails**
- **Manage > Chart Email Schedules**
Schedules are defined in [crontab format](https://crontab.guru/) and each schedule can have a list
of recipients (all of them can receive a single mail, or separate mails). For audit purposes, all
outgoing mails can have a mandatory BCC.
In order get picked up you need to configure a celery worker and a celery beat (see section above
“Celery Tasks”). Your celery configuration also needs an entry `email_reports.schedule_hourly` for
`CELERYBEAT_SCHEDULE`.
To send emails you need to configure SMTP settings in your `superset_config.py` configuration file.
```python
EMAIL_NOTIFICATIONS = True
SMTP_HOST = "email-smtp.eu-west-1.amazonaws.com"
SMTP_STARTTLS = True
SMTP_SSL = False
SMTP_USER = "smtp_username"
SMTP_PORT = 25
SMTP_PASSWORD = os.environ.get("SMTP_PASSWORD")
SMTP_MAIL_FROM = "insights@komoot.com"
```
To render dashboards you need to install a local browser on your Superset instance:
- [geckodriver](https://github.com/mozilla/geckodriver) for Firefox
- [chromedriver](http://chromedriver.chromium.org/) for Chrome
You'll need to adjust the `EMAIL_REPORTS_WEBDRIVER` accordingly in your configuration. You also need
to specify on behalf of which username to render the dashboards. In general dashboards and charts
are not accessible to unauthorized requests, that is why the worker needs to take over credentials
of an existing user to take a snapshot.
```python
EMAIL_REPORTS_USER = 'username_with_permission_to_access_dashboards'
```
**Important notes**
- Be mindful of the concurrency setting for celery (using `-c 4`). Selenium/webdriver instances can
consume a lot of CPU / memory on your servers.
- In some cases, if you notice a lot of leaked geckodriver processes, try running your celery
processes with `celery worker --pool=prefork --max-tasks-per-child=128 ...`
- It is recommended to run separate workers for the `sql_lab` and `email_reports` tasks. This can be
done using the `queue` field in `CELERY_ANNOTATIONS`.
- Adjust `WEBDRIVER_BASEURL` in your configuration file if celery workers cant access Superset via
its default value of `http://0.0.0.0:8080/`.
### Schedule Reports
You can optionally allow your users to schedule queries directly in SQL Lab. This is done by addding
extra metadata to saved queries, which are then picked up by an external scheduled (like
[Apache Airflow](https://airflow.apache.org/)).
To allow scheduled queries, add the following to your configuration file:
```python
FEATURE_FLAGS = {
# Configuration for scheduling queries from SQL Lab. This information is
# collected when the user clicks "Schedule query", and saved into the `extra`
# field of saved queries.
# See: https://github.com/mozilla-services/react-jsonschema-form
'SCHEDULED_QUERIES': {
'JSONSCHEMA': {
'title': 'Schedule',
'description': (
'In order to schedule a query, you need to specify when it '
'should start running, when it should stop running, and how '
'often it should run. You can also optionally specify '
'dependencies that should be met before the query is '
'executed. Please read the documentation for best practices '
'and more information on how to specify dependencies.'
),
'type': 'object',
'properties': {
'output_table': {
'type': 'string',
'title': 'Output table name',
},
'start_date': {
'type': 'string',
'title': 'Start date',
# date-time is parsed using the chrono library, see
# https://www.npmjs.com/package/chrono-node#usage
'format': 'date-time',
'default': 'tomorrow at 9am',
},
'end_date': {
'type': 'string',
'title': 'End date',
# date-time is parsed using the chrono library, see
# https://www.npmjs.com/package/chrono-node#usage
'format': 'date-time',
'default': '9am in 30 days',
},
'schedule_interval': {
'type': 'string',
'title': 'Schedule interval',
},
'dependencies': {
'type': 'array',
'title': 'Dependencies',
'items': {
'type': 'string',
},
},
},
},
'UISCHEMA': {
'schedule_interval': {
'ui:placeholder': '@daily, @weekly, etc.',
},
'dependencies': {
'ui:help': (
'Check the documentation for the correct format when '
'defining dependencies.'
),
},
},
'VALIDATION': [
# ensure that start_date <= end_date
{
'name': 'less_equal',
'arguments': ['start_date', 'end_date'],
'message': 'End date cannot be before start date',
# this is where the error message is shown
'container': 'end_date',
},
],
# link to the scheduler; this example links to an Airflow pipeline
# that uses the query id and the output table as its name
'linkback': (
'https://airflow.example.com/admin/airflow/tree?'
'dag_id=query_${id}_${extra_json.schedule_info.output_table}'
),
},
}
```
This feature flag is based on
[react-jsonschema-form](https://github.com/mozilla-services/react-jsonschema-form) and will add a
button called “Schedule Query” to SQL Lab. When the button is clicked, a modal will show up where
the user can add the metadata required for scheduling the query.
This information can then be retrieved from the endpoint `/savedqueryviewapi/api/read` and used to
schedule the queries that have `scheduled_queries` in their JSON metadata. For schedulers other than
Airflow, additional fields can be easily added to the configuration file above.
+19 -12
View File
@@ -32,12 +32,13 @@ part of the base Docker installation on Linux, once you have a working engine, f
**Windows**
Superset is not officially supported on Windows unfortunately. The best option for Windows users to
Superset is not officially supported on Windows unfortunately. One option for Windows users to
try out Superset locally is to install an Ubuntu Desktop VM via
[VirtualBox](https://www.virtualbox.org/) and proceed with the Docker on Linux instructions inside
of that VM. We recommend assigning at least 8GB of RAM to the virtual machine as well as
provisioning a hard drive of at least 40GB, so that there will be enough space for both the OS and
all of the required dependencies.
all of the required dependencies. Docker Desktop [recently added support for Windows Subsystem for Linux (WSL) 2](https://docs.docker.com/docker-for-windows/wsl/), which may be another option.
### 2. Clone Superset's Github repository
@@ -59,21 +60,30 @@ Navigate to the folder you created in step 1:
$ cd superset
```
We recommend that you check out and run the code from the last tagged release:
```bash
$ git checkout latest
```
Then, run the following command:
```bash
$ docker-compose up
$ docker-compose -f docker-compose-non-dev.yml up
```
You should see a wall of logging output from the containers being launched on your machine. Once
this output slows, you should have a running instance of Superset on your local machine!
**Note:** This will bring up superset in a non-dev mode, changes to the codebase will not be reflected.
If you would like to run superset in dev mode to test local changes, simply replace the previous command with: `docker-compose up`,
and wait for the `superset_node` container to finish building the assets.
#### Configuring Docker Compose
The following is for users who want to configure how Superset starts up in Docker Compose; otherwise, you can skip to the next section.
You can configure the Docker Compose settings for dev and non-dev mode with `docker/.env` and `docker/.env-non-dev` respectively. These environment files set the environment for most containers in the Docker Compose setup, and some variables affect multiple containers and others only single ones.
One important variable is `SUPERSET_LOAD_EXAMPLES` which determines whether the `superset_init` container will load example data and visualizations into the database and Superset. Thiese examples are quite helpful for most people, but probably unnecessary for experienced users. The loading process can sometimes take a few minutes and a good amount of CPU, so you may want to disable it on a resource-constrained device.
**Note:** Users often want to connect to other databases from Superset. Currently, the easiest way to do this is to modify the `docker-compose-non-dev.yml` file and add your database as a service that the other services depend on (via `x-superset-depends-on`). Others have attempted to set `network_mode: host` on the Superset services, but these generally break the installation, because the configuration requires use of the Docker Compose DNS resolver for the service names. If you have a good solution for this, let us know!
### 4. Log in to Superset
Your local Superset instance also includes a Postgres server to store your data and is already
@@ -90,6 +100,3 @@ username: admin
```bash
password: admin
```
Congrats! You have successfully installed Superset! Click 'Next' to learn how to connect a database
driver.
@@ -50,21 +50,30 @@ We don't recommend using the system installed Python. Instead, first install the
[homebrew](https://brew.sh/) manager and then run the following commands:
```
brew install pkg-config libffi openssl python
env LDFLAGS="-L$(brew --prefix openssl)/lib" CFLAGS="-I$(brew --prefix openssl)/include" pip install cryptography==2.4.2
brew install readline pkg-config libffi openssl mysql postgres
```
You should install a recent version of Python (Superset uses 3.7.9). We'd recommend using a Python version manager like [pyenv](https://github.com/pyenv/pyenv) (and also [pyenv-virtualenv](https://github.com/pyenv/pyenv-virtualenv)).
Let's also make sure we have the latest version of `pip` and `setuptools`:
```
pip install --upgrade setuptools pip
```
Lastly, you may need to set LDFLAGS and CFLAGS for certain Python packages to properly build. You can export these variables with:
```
export LDFLAGS="-L$(brew --prefix openssl)/lib"
export CFLAGS="-I$(brew --prefix openssl)/include"
```
These will now be available when pip installing requirements.
### Python Virtual Environment
We highly recommend installing Superset inside of a virtual environment. Python ships with
`virtualenv` out of the box but you can install it using:
`virtualenv` out of the box. If you're using [pyenv](https://github.com/pyenv/pyenv), you can install [pyenv-virtualenv](https://github.com/pyenv/pyenv-virtualenv). Or you can install it with `pip`:
```
pip install virtualenv
@@ -79,6 +88,14 @@ python3 -m venv venv
. venv/bin/activate
```
Or with pyenv-virtualenv:
```
# Here we name the virtual env 'superset'
pyenv virtualenv superset
pyenv activate superset
```
Once you activated your virtual environment, all of the Python packages you install or uninstall
will be confined to this environment. You can exit the environment by running `deactivate` on the
command line.
@@ -120,12 +137,13 @@ locally by default at `localhost:8088`) and login using the username and passwor
### Installing Superset with Helm in Kubernetes
You can install Superset into Kubernetes with [Helm](https://helm.sh/). The chart is located in
`install/helm`.
the `helm/` directory.
To install Superset in Kubernetes, run:
To install Superset in your Kubernetes cluster with Helm 3, run:
```
helm upgrade --install superset ./install/helm/superset
helm dep up ./helm/superset
helm upgrade --install superset ./helm/superset
```
Note that the above command will install Superset into `default` namespace of your Kubernetes
@@ -0,0 +1,376 @@
---
name: Running on Kubernetes
menu: Installation and Configuration
route: /docs/installation/running-on-kubernetes
index: 12
version: 1
---
## Running on Kubernetes
Running on Kubernetes is supported with the provided [Helm](https://helm.sh/) chart found in the official [Superset helm repository](https://apache.github.io/superset/index.yaml).
### Prerequisites
* A Kubernetes cluster
* Helm installed
### Running
1. Add the Superset helm repository
```sh
helm repo add superset https://apache.github.io/superset
"superset" has been added to your repositories
```
1. View charts in repo
```sh
helm search repo superset
NAME CHART VERSION APP VERSION DESCRIPTION
superset/superset 0.1.1 1.0 Apache Superset is a modern, enterprise-ready b...
```
1. Configure your setting overrides
Just like any typical Helm chart, you'll need to craft a `values.yaml` file that would define/override any of the values exposed into the default [values.yaml](https://github.com/apache/superset/tree/master/helm/superset/values.yaml), or from any of the dependent charts it depends on:
* [bitnami/redis](https://artifacthub.io/packages/helm/bitnami/redis)
* [bitnami/postgresql](https://artifacthub.io/packages/helm/bitnami/postgresql)
More info down below on some important overrides you might need.
1. Install and run
```sh
helm upgrade --install --values my-values.yaml superset superset/superset
```
You should see various pods popping up, such as:
```sh
kubectl get pods
NAME READY STATUS RESTARTS AGE
superset-celerybeat-7cdcc9575f-k6xmc 1/1 Running 0 119s
superset-f5c9c667-dw9lp 1/1 Running 0 4m7s
superset-f5c9c667-fk8bk 1/1 Running 0 4m11s
superset-init-db-zlm9z 0/1 Completed 0 111s
superset-postgresql-0 1/1 Running 0 6d20h
superset-redis-master-0 1/1 Running 0 6d20h
superset-worker-75b48bbcc-jmmjr 1/1 Running 0 4m8s
superset-worker-75b48bbcc-qrq49 1/1 Running 0 4m12s
```
The exact list will depend on some of your specific configuration overrides but you should generally expect:
* N `superset-xxxx-yyyy` and `superset-worker-xxxx-yyyy` pods (depending on your `replicaCount` value)
* 1 `superset-postgresql-0` depending on your postgres settings
* 1 `superset-redis-master-0` depending on your redis settings
* 1 `superset-celerybeat-xxxx-yyyy` pod if you have `supersetCeleryBeat.enabled = true` in your values overrides
1. Access it
The chart will publish appropriate services to expose the Superset UI internally within your k8s cluster. To access it externally you will have to either:
* Configure the Service as a `LoadBalancer` or `NodePort`
* Set up an `Ingress` for it - the chart includes a definition, but will need to be tuned to your needs (hostname, tls, annotations etc...)
* Run `kubectl port-forward superset-xxxx-yyyy :8088` to directly tunnel one pod's port into your localhost
Depending how you configured external access, the URL will vary. Once you've identified the appropriate URL you can log in with:
* user: `admin`
* password: `admin`
### Important settings
#### Security settings
Default security settings and passwords are included but you __SHOULD__ override those with your own, in particular:
```yaml
postgresql:
postgresqlPassword: superset
```
#### Dependencies
You can specify pip packages to be installed before startup, e.g. to install extra database drivers:
```yaml
additionalRequirements:
- psycopg2
- redis
- elasticsearch-dbapi
- pymssql
- gsheetsdb
# Force verstion to work around https://github.com/betodealmeida/gsheets-db-api/issues/15
- moz-sql-parser==4.9.21002
# For OAuth
- Authlib
# For webdriver / reports
- gevent
```
__WARNING__: The list will replace the default one from the default `values.yaml` entirely, not _add_ to it...
#### superset_config.py
The default `superset_config.py` is fairly minimal and you will very likely need to extend it. This is done by specifying one or more key/value entries in `configOverrides`, e.g.:
```yaml
configOverrides:
my_override: |
# This will make sure the redirect_uri is properly computed, even with SSL offloading
ENABLE_PROXY_FIX = True
FEATURE_FLAGS = {
"DYNAMIC_PLUGINS": True
}
```
Those will be evaluated as Helm templates and therefore will be able to reference other `values.yaml` variables e.g. `{{ .Values.ingress.hosts[0] }}` will resolve to your ingress external domain.
The entire `superset_config.py` will be installed as a secret, so it is safe to pass sensitive parameters directly... however it might be more readable to use secret env variables for that.
Full python files can be provided by running `helm upgrade --install --values my-values.yaml --set-file configOverrides.oauth=set_oauth.py`
#### Environment Variables
Those can be passed as key/values either with `extraEnv` or `extraSecretEnv` if they're sensitive. They can then be referenced from `superset_config.py` using e.g. `os.environ.get("VAR")`.
```yaml
extraEnv:
SMTP_HOST: smtp.gmail.com
SMTP_USER: user@gmail.com
SMTP_PORT: "587"
SMTP_MAIL_FROM: user@gmail.com
extraSecretEnv:
SMTP_PASSWORD: xxxx
configOverrides:
smtp: |
import ast
SMTP_HOST = os.getenv("SMTP_HOST","localhost")
SMTP_STARTTLS = ast.literal_eval(os.getenv("SMTP_STARTTLS", "True"))
SMTP_SSL = ast.literal_eval(os.getenv("SMTP_SSL", "False"))
SMTP_USER = os.getenv("SMTP_USER","superset")
SMTP_PORT = os.getenv("SMTP_PORT",25)
SMTP_PASSWORD = os.getenv("SMTP_PASSWORD","superset")
```
#### System packages
If new system packages are required, they can be installed before application startup by overriding the container's `command`, e.g.:
```yaml
supersetWorker:
command:
- /bin/sh
- -c
- |
apt update
apt install -y somepackage
apt autoremove -yqq --purge
apt clean
# Run celery worker
. {{ .Values.configMountPath }}/superset_bootstrap.sh; celery --app=superset.tasks.celery_app:app worker
```
#### Data sources
Data source definitions can be automatically declared by providing key/value yaml definitions in `extraConfigs`:
```yaml
extraConfigs:
datasources-init.yaml: |
databases:
- allow_csv_upload: true
allow_ctas: true
allow_cvas: true
database_name: example-db
extra: "{\r\n \"metadata_params\": {},\r\n \"engine_params\": {},\r\n \"\
metadata_cache_timeout\": {},\r\n \"schemas_allowed_for_csv_upload\": []\r\n\
}"
sqlalchemy_uri: example://example-db.local
tables: []
```
Those will also be mounted as secrets and can include sensitive parameters.
### Configuration Examples
#### Setting up OAuth
```yaml
extraEnv:
AUTH_DOMAIN: example.com
extraSecretEnv:
GOOGLE_KEY: xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com
GOOGLE_SECRET: xxxxxxxxxxxxxxxxxxxxxxxx
configOverrides:
enable_oauth: |
# This will make sure the redirect_uri is properly computed, even with SSL offloading
ENABLE_PROXY_FIX = True
from flask_appbuilder.security.manager import (AUTH_OAUTH, AUTH_DB)
AUTH_TYPE = AUTH_OAUTH
OAUTH_PROVIDERS = [
{
"name": "google",
"icon": "fa-google",
"token_key": "access_token",
"remote_app": {
"client_id": os.getenv("GOOGLE_KEY"),
"client_secret": os.getenv("GOOGLE_SECRET"),
"api_base_url": "https://www.googleapis.com/oauth2/v2/",
"client_kwargs": {"scope": "email profile"},
"request_token_url": None,
"access_token_url": "https://accounts.google.com/o/oauth2/token",
"authorize_url": "https://accounts.google.com/o/oauth2/auth",
"authorize_params": {"hd": os.getenv("AUTH_DOMAIN", "")}
},
}
]
# Map Authlib roles to superset roles
AUTH_ROLE_ADMIN = 'Admin'
AUTH_ROLE_PUBLIC = 'Public'
# Will allow user self registration, allowing to create Flask users from Authorized User
AUTH_USER_REGISTRATION = True
# The default user self registration role
AUTH_USER_REGISTRATION_ROLE = "Admin"
```
#### Enable Alerts and Reports
For this, as per the [Alerts and Reports doc](/docs/installation/email-reports), you will need to:
##### Install a supported webdriver in the Celery worker
This is done either by using a custom image that has the webdriver pre-installed, or installing at startup time by overriding the `command`. Here's a working example for `chromedriver`:
```yaml
supersetWorker:
command:
- /bin/sh
- -c
- |
# Install chrome webdriver
# See https://github.com/apache/superset/blob/4fa3b6c7185629b87c27fc2c0e5435d458f7b73d/docs/src/pages/docs/installation/email_reports.mdx
apt update
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
apt install -y --no-install-recommends ./google-chrome-stable_current_amd64.deb
wget https://chromedriver.storage.googleapis.com/88.0.4324.96/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
chmod +x chromedriver
mv chromedriver /usr/bin
apt autoremove -yqq --purge
apt clean
rm -f google-chrome-stable_current_amd64.deb chromedriver_linux64.zip
# Run
. {{ .Values.configMountPath }}/superset_bootstrap.sh; celery --app=superset.tasks.celery_app:app worker
```
##### Run the Celery beat
This pod will trigger the scheduled tasks configured in the alerts and reports UI section:
```yaml
supersetCeleryBeat:
enabled: true
```
##### Configure the appropriate Celery jobs and SMTP/Slack settings
```yaml
extraEnv:
SMTP_HOST: smtp.gmail.com
SMTP_USER: user@gmail.com
SMTP_PORT: "587"
SMTP_MAIL_FROM: user@gmail.com
extraSecretEnv:
SLACK_API_TOKEN: xoxb-xxxx-yyyy
SMTP_PASSWORD: xxxx-yyyy
configOverrides:
feature_flags: |
import ast
FEATURE_FLAGS = {
"ALERT_REPORTS": True
}
SMTP_HOST = os.getenv("SMTP_HOST","localhost")
SMTP_STARTTLS = ast.literal_eval(os.getenv("SMTP_STARTTLS", "True"))
SMTP_SSL = ast.literal_eval(os.getenv("SMTP_SSL", "False"))
SMTP_USER = os.getenv("SMTP_USER","superset")
SMTP_PORT = os.getenv("SMTP_PORT",25)
SMTP_PASSWORD = os.getenv("SMTP_PASSWORD","superset")
SMTP_MAIL_FROM = os.getenv("SMTP_MAIL_FROM","superset@superset.com")
SLACK_API_TOKEN = os.getenv("SLACK_API_TOKEN",None)
celery_conf: |
from celery.schedules import crontab
class CeleryConfig(object):
BROKER_URL = f"redis://{env('REDIS_HOST')}:{env('REDIS_PORT')}/0"
CELERY_IMPORTS = ('superset.sql_lab', )
CELERY_RESULT_BACKEND = f"redis://{env('REDIS_HOST')}:{env('REDIS_PORT')}/0"
CELERY_ANNOTATIONS = {'tasks.add': {'rate_limit': '10/s'}}
CELERY_IMPORTS = ('superset.sql_lab', "superset.tasks", "superset.tasks.thumbnails", )
CELERY_ANNOTATIONS = {
'sql_lab.get_sql_results': {
'rate_limit': '100/s',
},
'email_reports.send': {
'rate_limit': '1/s',
'time_limit': 600,
'soft_time_limit': 600,
'ignore_result': True,
},
}
CELERYBEAT_SCHEDULE = {
'reports.scheduler': {
'task': 'reports.scheduler',
'schedule': crontab(minute='*', hour='*'),
},
'reports.prune_log': {
'task': 'reports.prune_log',
'schedule': crontab(minute=0, hour=0),
},
'cache-warmup-hourly': {
'task': 'cache-warmup',
'schedule': crontab(minute='*/30', hour='*'),
'kwargs': {
'strategy_name': 'top_n_dashboards',
'top_n': 10,
'since': '7 days ago',
},
}
}
CELERY_CONFIG = CeleryConfig
reports: |
EMAIL_PAGE_RENDER_WAIT = 60
WEBDRIVER_BASEURL = "http://{{ template "superset.fullname" . }}:{{ .Values.service.port }}/"
WEBDRIVER_BASEURL_USER_FRIENDLY = "https://www.example.com/"
WEBDRIVER_TYPE= "chrome"
WEBDRIVER_OPTION_ARGS = [
"--force-device-scale-factor=2.0",
"--high-dpi-support=2.0",
"--headless",
"--disable-gpu",
"--disable-dev-shm-usage",
# This is required because our process runs as root (in order to install pip packages)
"--no-sandbox",
"--disable-setuid-sandbox",
"--disable-extensions",
]
```
+5 -5
View File
@@ -15,10 +15,10 @@ Here are a **few different ways you can get started with Superset**:
- Download the [source from Apache Foundation's website](https://dist.apache.org/repos/dist/release/superset/1.0.0/)
- Download the latest Superset version from [Pypi here](https://pypi.org/project/apache-superset/)
- Setup Superset locally with one command
using [Docker Compose](docs/installation/installing-superset-using-docker-compose)
using [Docker Compose](installation/installing-superset-using-docker-compose)
- Download the [Docker image](https://hub.docker.com/r/apache/superset) from Dockerhub
- Install bleeding-edge master version of Superset
[from Github](https://github.com/apache/superset/tree/master/superset)
- Install the latest version of Superset
[from Github](https://github.com/apache/superset/tree/latest)
Superset provides:
@@ -33,7 +33,7 @@ Superset provides:
- Integration with major authentication backends (database, OpenID, LDAP, OAuth, REMOTE_USER, etc)
- The ability to add custom visualization plugins
- An API for programmatic customization
- A cloud-native archiecture designed from the ground up for scale
- A cloud-native architecture designed from the ground up for scale
Superset is cloud-native and designed to be highly available. It was designed to scale out to large,
distributed environments and works very well inside containers. While you can easily test drive
@@ -56,4 +56,4 @@ production environment inside Kubernetes and serves 600+ daily active users view
a day.
You can find a partial list of industries and companies embracing Superset
[on this page in GitHub](https://github.com/apache/superset/blob/master/INTHEWILD.md).
[on this page in GitHub](https://github.com/apache/superset/blob/master/RESOURCES/INTHEWILD.md).
+1 -1
View File
@@ -361,7 +361,7 @@ const Theme = () => {
title="Integrates with modern databases"
descr={`
Superset can connect to any SQL based datasource
through SQL Alchemy, including modern cloud native databases
through SQLAlchemy, including modern cloud native databases
and engines at petabyte scale.
`}
/>
+11 -1
View File
@@ -48,7 +48,7 @@ export const pmc = [
image: 'https://github.com/dpgaspar.png',
},
{
name: 'Erik Ritker',
name: 'Erik Ritter',
github: 'https://github.com/etr2460',
image: 'https://github.com/etr2460.png',
},
@@ -215,6 +215,16 @@ export const Databases = [
href: 'https://www.sqlite.org/index.html',
imgName: 'sqllite.png',
},
{
title: 'Trino',
href: 'https://trino.io/',
imgName: 'trino2.jpg',
},
{
title: 'Rockset',
href: 'https://rockset.com/',
imgName: 'rockset.png',
},
{
title: 'Vertica',
href: 'https://www.vertica.com/',
+14 -5
View File
@@ -14,12 +14,21 @@
# See the License for the specific language governing permissions and
# limitations under the License.
#
apiVersion: v1
apiVersion: v2
appVersion: "1.0"
description: Apache Superset is a modern, enterprise-ready business intelligence web application
name: superset
maintainers:
- name: Chuan-Yen Chiang
email: cychiang0823@gmail.com
url: https://github.com/cychiang
version: 0.1.0
- name: craig-rueda
email: craig@craigrueda.com
url: https://github.com/craig-rueda
version: 0.1.2
dependencies:
- name: postgresql
version: 10.2.0
repository: https://charts.bitnami.com/bitnami
condition: postgresql.enabled
- name: redis
version: 12.3.0
repository: https://charts.bitnami.com/bitnami
condition: redis.enabled
+1 -2
View File
@@ -31,7 +31,6 @@
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "superset.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ template "superset.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8088 to use your application"
kubectl port-forward $POD_NAME 8088:80
kubectl port-forward service/superset 8088:8088 --namespace {{ .Release.Namespace }}
{{- end }}
+11 -9
View File
@@ -49,13 +49,6 @@ Create chart name and version as used by the chart label.
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- define "superset-bootstrap" }}
#!/bin/sh
pip install {{ range .Values.additionalRequirements }}{{ . }} {{ end }}
{{ end -}}
{{- define "superset-config" }}
import os
from cachelib.redis import RedisCache
@@ -70,8 +63,8 @@ CACHE_CONFIG = {
'CACHE_KEY_PREFIX': 'superset_',
'CACHE_REDIS_HOST': env('REDIS_HOST'),
'CACHE_REDIS_PORT': env('REDIS_PORT'),
'CACHE_REDIS_DB': 1,
'CACHE_REDIS_URL': f"redis://{env('REDIS_HOST')}:{env('REDIS_PORT')}/1"
'CACHE_REDIS_PASSWORD': env('REDIS_PASSWORD'),
'CACHE_REDIS_DB': env('REDIS_DB', 1),
}
DATA_CACHE_CONFIG = CACHE_CONFIG
@@ -97,4 +90,13 @@ RESULTS_BACKEND = RedisCache(
port=env('REDIS_PORT'),
key_prefix='superset_results'
)
{{ if .Values.configOverrides }}
# Overrides
{{- range $key, $value := .Values.configOverrides }}
# {{ $key }}
{{ tpl $value $ }}
{{- end }}
{{- end }}
{{- end }}
@@ -27,6 +27,6 @@ metadata:
data:
{{- range $path, $config := .Values.extraConfigs }}
{{ $path }}: |
{{ tpl $config . | indent 4 -}}
{{- tpl $config $ | nindent 4 -}}
{{- end -}}
{{- end -}}
@@ -0,0 +1,103 @@
{{- if .Values.supersetCeleryBeat.enabled -}}
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ template "superset.fullname" . }}-celerybeat
labels:
app: {{ template "superset.name" . }}-celerybeat
chart: {{ template "superset.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
{{- if .Values.supersetCeleryBeat.deploymentAnnotations }}
annotations:
{{ toYaml .Values.supersetCeleryBeat.deploymentAnnotations | nindent 4 }}
{{- end }}
spec:
# This must be a singleton
replicas: 1
selector:
matchLabels:
app: {{ template "superset.name" . }}-celerybeat
release: {{ .Release.Name }}
template:
metadata:
annotations:
checksum/superset_config.py: {{ include "superset-config" . | sha256sum }}
checksum/connections: {{ .Values.supersetNode.connections | toYaml | sha256sum }}
checksum/extraConfigs: {{ .Values.extraConfigs | toYaml | sha256sum }}
checksum/extraSecrets: {{ .Values.extraSecrets | toYaml | sha256sum }}
checksum/extraSecretEnv: {{ .Values.extraSecretEnv | toYaml | sha256sum }}
checksum/configOverrides: {{ .Values.configOverrides | toYaml | sha256sum }}
{{ if .Values.supersetCeleryBeat.forceReload }}
# Optionally force the thing to reload
force-reload: {{ randAlphaNum 5 | quote }}
{{ end }}
{{- if .Values.supersetCeleryBeat.podAnnotations }}
{{ toYaml .Values.supersetCeleryBeat.podAnnotations | nindent 8 }}
{{- end }}
labels:
app: {{ template "superset.name" . }}-celerybeat
release: {{ .Release.Name }}
spec:
securityContext:
runAsUser: {{ .Values.runAsUser }}
{{- if .Values.supersetCeleryBeat.initContainers }}
initContainers:
{{- tpl (toYaml .Values.supersetCeleryBeat.initContainers) . | nindent 6 }}
{{- end }}
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
command: {{ tpl (toJson .Values.supersetCeleryBeat.command) . }}
env:
- name: "SUPERSET_PORT"
value: {{ .Values.service.port | quote}}
{{ if .Values.extraEnv }}
{{- range $key, $value := .Values.extraEnv }}
- name: {{ $key | quote}}
value: {{ $value | quote }}
{{- end }}
{{- end }}
envFrom:
- secretRef:
name: {{ tpl .Values.envFromSecret . | quote }}
volumeMounts:
- name: superset-config
mountPath: {{ .Values.configMountPath | quote }}
readOnly: true
resources:
{{ toYaml .Values.resources | indent 12 }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{ toYaml . | indent 8 }}
{{- end }}
volumes:
- name: superset-config
secret:
secretName: {{ tpl .Values.configFromSecret . }}
{{- end -}}
+16 -3
View File
@@ -23,6 +23,10 @@ metadata:
chart: {{ template "superset.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
{{- if .Values.supersetWorker.deploymentAnnotations }}
annotations:
{{ toYaml .Values.supersetWorker.deploymentAnnotations | nindent 4 }}
{{- end }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
@@ -31,17 +35,26 @@ spec:
release: {{ .Release.Name }}
template:
metadata:
{{ if .Values.supersetWorker.forceReload }}
annotations:
checksum/superset_config.py: {{ include "superset-config" . | sha256sum }}
checksum/connections: {{ .Values.supersetNode.connections | toYaml | sha256sum }}
checksum/extraConfigs: {{ .Values.extraConfigs | toYaml | sha256sum }}
checksum/extraSecrets: {{ .Values.extraSecrets | toYaml | sha256sum }}
checksum/extraSecretEnv: {{ .Values.extraSecretEnv | toYaml | sha256sum }}
checksum/configOverrides: {{ .Values.configOverrides | toYaml | sha256sum }}
{{ if .Values.supersetWorker.forceReload }}
# Optionally force the thing to reload
force-reload: {{ randAlphaNum 5 | quote }}
{{ end }}
{{ end }}
{{- if .Values.supersetWorker.podAnnotations }}
{{ toYaml .Values.supersetWorker.podAnnotations | nindent 8 }}
{{- end }}
labels:
app: {{ template "superset.name" . }}-worker
release: {{ .Release.Name }}
spec:
securityContext:
runAsUser: 0 # Needed in order to allow pip install to work in bootstrap
runAsUser: {{ .Values.runAsUser }}
{{- if .Values.supersetWorker.initContainers }}
initContainers:
{{- tpl (toYaml .Values.supersetWorker.initContainers) . | nindent 6 }}
+29 -3
View File
@@ -23,6 +23,10 @@ metadata:
chart: {{ template "superset.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
{{- if .Values.supersetNode.deploymentAnnotations }}
annotations:
{{ toYaml .Values.supersetNode.deploymentAnnotations | nindent 4 }}
{{- end }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
@@ -31,17 +35,29 @@ spec:
release: {{ .Release.Name }}
template:
metadata:
{{ if .Values.supersetNode.forceReload }}
annotations:
# Force reload on config changes
checksum/superset_config.py: {{ include "superset-config" . | sha256sum }}
checksum/superset_init.sh: {{ tpl .Values.init.initscript . | sha256sum }}
checksum/superset_bootstrap.sh: {{ tpl .Values.bootstrapScript . | sha256sum }}
checksum/connections: {{ .Values.supersetNode.connections | toYaml | sha256sum }}
checksum/extraConfigs: {{ .Values.extraConfigs | toYaml | sha256sum }}
checksum/extraSecrets: {{ .Values.extraSecrets | toYaml | sha256sum }}
checksum/extraSecretEnv: {{ .Values.extraSecretEnv | toYaml | sha256sum }}
checksum/configOverrides: {{ .Values.configOverrides | toYaml | sha256sum }}
{{- if .Values.supersetNode.forceReload }}
# Optionally force the thing to reload
force-reload: {{ randAlphaNum 5 | quote }}
{{ end }}
{{- end }}
{{- if .Values.supersetNode.podAnnotations }}
{{ toYaml .Values.supersetNode.podAnnotations | nindent 8 }}
{{- end }}
labels:
app: {{ template "superset.name" . }}
release: {{ .Release.Name }}
spec:
securityContext:
runAsUser: 0 # Needed in order to allow pip install to work in bootstrap
runAsUser: {{ .Values.runAsUser }}
{{- if .Values.supersetNode.initContainers }}
initContainers:
{{- tpl (toYaml .Values.supersetNode.initContainers) . | nindent 6 }}
@@ -67,6 +83,11 @@ spec:
- name: superset-config
mountPath: {{ .Values.configMountPath | quote }}
readOnly: true
{{- if .Values.extraConfigs }}
- name: superset-extra-config
mountPath: {{ .Values.extraConfigMountPath | quote }}
readOnly: true
{{- end }}
ports:
- name: http
containerPort: {{ .Values.service.port }}
@@ -89,3 +110,8 @@ spec:
- name: superset-config
secret:
secretName: {{ tpl .Values.configFromSecret . }}
{{- if .Values.extraConfigs }}
- name: superset-extra-config
configMap:
name: {{ template "superset.fullname" . }}-extra-config
{{- end }}
+3 -1
View File
@@ -28,7 +28,7 @@ spec:
name: {{ template "superset.name" . }}-init-db
spec:
securityContext:
runAsUser: 0 # Needed in order to allow pip install to work in bootstrap
runAsUser: {{ .Values.runAsUser }}
{{- if .Values.init.initContainers }}
initContainers:
{{- tpl (toYaml .Values.init.initContainers) . | nindent 6 }}
@@ -57,6 +57,8 @@ spec:
readOnly: true
{{- end }}
command: {{ tpl (toJson .Values.init.command) . }}
resources:
{{ toYaml .Values.init.resources | indent 10 }}
volumes:
- name: superset-config
secret:
+13 -8
View File
@@ -24,11 +24,16 @@ metadata:
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
type: Opaque
data:
REDIS_HOST: {{ tpl .Values.supersetNode.connections.redis_host . | b64enc | quote }}
REDIS_PORT: {{ .Values.supersetNode.connections.redis_port | b64enc | quote }}
DB_HOST: {{ tpl .Values.supersetNode.connections.db_host . | b64enc | quote }}
DB_PORT: {{ .Values.supersetNode.connections.db_port | b64enc | quote }}
DB_USER: {{ .Values.supersetNode.connections.db_user | b64enc | quote }}
DB_PASS: {{ .Values.supersetNode.connections.db_pass | b64enc | quote }}
DB_NAME: {{ .Values.supersetNode.connections.db_name | b64enc | quote }}
stringData:
REDIS_HOST: {{ tpl .Values.supersetNode.connections.redis_host . | quote }}
REDIS_PORT: {{ .Values.supersetNode.connections.redis_port | quote }}
DB_HOST: {{ tpl .Values.supersetNode.connections.db_host . | quote }}
DB_PORT: {{ .Values.supersetNode.connections.db_port | quote }}
DB_USER: {{ .Values.supersetNode.connections.db_user | quote }}
DB_PASS: {{ .Values.supersetNode.connections.db_pass | quote }}
DB_NAME: {{ .Values.supersetNode.connections.db_name | quote }}
{{- if .Values.extraSecretEnv }}
{{- range $key, $value := .Values.extraSecretEnv }}
{{ $key }}: {{ $value | quote }}
{{- end }}
{{- end }}
@@ -20,11 +20,21 @@ metadata:
name: {{ template "superset.fullname" . }}-config
labels:
app: {{ template "superset.fullname" . }}
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
chart: {{ template "superset.chart" . }}
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
type: Opaque
data:
superset_config.py: {{ include "superset-config" . | b64enc }}
superset_init.sh: {{ tpl .Values.init.initscript . | b64enc }}
superset_bootstrap.sh: {{ include "superset-bootstrap" . | b64enc }}
stringData:
superset_config.py: |
{{- include "superset-config" . | nindent 4 }}
superset_init.sh: |
{{- tpl .Values.init.initscript . | nindent 4 }}
superset_bootstrap.sh: |
{{- tpl .Values.bootstrapScript . | nindent 4 }}
{{- if .Values.extraSecrets }}
{{- range $path, $config := .Values.extraSecrets }}
{{ $path }}: |
{{- tpl $config $ | nindent 4 -}}
{{- end -}}
{{- end -}}
+7
View File
@@ -23,6 +23,10 @@ metadata:
chart: {{ template "superset.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
{{- with .Values.service.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
type: {{ .Values.service.type }}
ports:
@@ -33,3 +37,6 @@ spec:
selector:
app: {{ template "superset.name" . }}
release: {{ .Release.Name }}
{{- if .Values.service.loadBalancerIP }}
loadBalancerIP: {{ .Values.service.loadBalancerIP }}
{{- end }}
+110 -10
View File
@@ -21,11 +21,19 @@
replicaCount: 1
## These requirements are used to build a requirements file which is then applied on init
## of superset containers
additionalRequirements:
- "psycopg2==2.8.5"
- "redis==3.2.1"
# User ID directive. This user must have enough permissions to run the bootstrap script
# Runn containers as root is not recommended in production. Change this to another UID - e.g. 1000 to be more secure
runAsUser: 0
# Install additional packages and do any other bootstrap configuration in this script
# For production clusters it's recommended to build own image with this step done in CI
bootstrapScript: |
#!/bin/bash
apt-get update -y &&\
apt-get install -y --no-install-recommends nano &&\
rm -rf /var/lib/apt/lists/*
pip install psycopg2==2.8.5 redis==3.2.1
if [ ! -f ~/bootstrap ]; then echo "Running Superset with uid {{ .Values.runAsUser }}" > ~/bootstrap; fi
## The name of the secret which we will use to generate a superset_config.py file
## Note: this secret must have the key superset_config.py in it and can include other files as well
@@ -41,6 +49,13 @@ envFromSecret: '{{ template "superset.fullname" . }}-env'
##
extraEnv: {}
## Extra environment variables to pass as secrets
##
extraSecretEnv: {}
# MAPBOX_API_KEY: ...
# GOOGLE_KEY: ...
# GOOGLE_SECRET: ...
extraConfigs: {}
# datasources-init.yaml: |
# databases:
@@ -54,6 +69,34 @@ extraConfigs: {}
# sqlalchemy_uri: example://example-db.local
# tables: []
extraSecrets: {}
# A dictionary of overrides to append at the end of superset_config.py - the name does not matter
# WARNING: the order is not guaranteed
configOverrides: {}
# enable_oauth: |
# from flask_appbuilder.security.manager import AUTH_DB
# AUTH_TYPE = AUTH_OAUTH
# OAUTH_PROVIDERS = [
# {
# "name": "google",
# "icon": "fa-google",
# "token_key": "access_token",
# "remote_app": {
# "client_id": os.environ.get("GOOGLE_KEY"),
# "client_secret": os.environ.get("GOOGLE_SECRET"),
# "api_base_url": "https://www.googleapis.com/oauth2/v2/",
# "client_kwargs": {"scope": "email profile"},
# "request_token_url": None,
# "access_token_url": "https://accounts.google.com/o/oauth2/token",
# "authorize_url": "https://accounts.google.com/o/oauth2/auth",
# },
# }
# ]
configMountPath: "/app/pythonpath"
extraConfigMountPath: "/app/configs"
@@ -66,6 +109,9 @@ image:
service:
type: ClusterIP
port: 8088
annotations: {}
# cloud.google.com/load-balancer-type: "Internal"
loadBalancerIP: null
ingress:
enabled: false
@@ -117,6 +163,12 @@ supersetNode:
name: '{{ tpl .Values.envFromSecret . }}'
command: [ "/bin/sh", "-c", "until nc -zv $DB_HOST $DB_PORT -w1; do echo 'waiting for db'; sleep 1; done" ]
## Annotations to be added to supersetNode deployment
deploymentAnnotations: {}
## Annotations to be added to supersetNode pods
podAnnotations: {}
##
## Superset worker configuration
supersetWorker:
@@ -134,15 +186,62 @@ supersetWorker:
name: '{{ tpl .Values.envFromSecret . }}'
command: [ "/bin/sh", "-c", "until nc -zv $DB_HOST $DB_PORT -w1; do echo 'waiting for db'; sleep 1; done" ]
## Annotations to be added to supersetWorker deployment
deploymentAnnotations: {}
## Annotations to be added to supersetWorker pods
podAnnotations: {}
##
## Superset beat configuration (to trigger scheduled jobs like reports)
supersetCeleryBeat:
# This is only required if you intend to use alerts and reports
enabled: false
command:
- "/bin/sh"
- "-c"
- ". {{ .Values.configMountPath }}/superset_bootstrap.sh; celery beat --app=superset.tasks.celery_app:app --pidfile /tmp/celerybeat.pid --schedule /tmp/celerybeat-schedule"
forceReload: false # If true, forces deployment to reload on each upgrade
initContainers:
- name: wait-for-postgres
image: busybox:latest
imagePullPolicy: IfNotPresent
envFrom:
- secretRef:
name: '{{ tpl .Values.envFromSecret . }}'
command: [ "/bin/sh", "-c", "until nc -zv $DB_HOST $DB_PORT -w1; do echo 'waiting for db'; sleep 1; done" ]
## Annotations to be added to supersetCeleryBeat deployment
deploymentAnnotations: {}
## Annotations to be added to supersetCeleryBeat pods
podAnnotations: {}
##
## Init job configuration
init:
# Configure resources
# Warning: fab commant consumes a lot of ram and can
# cause the process to be killed due to OOM if it exceeds limit
resources: {}
# limits:
# cpu:
# memory:
# requests:
# cpu:
# memory:
command:
- "/bin/sh"
- "-c"
- ". {{ .Values.configMountPath }}/superset_bootstrap.sh; . {{ .Values.configMountPath }}/superset_init.sh"
enabled: true
loadExamples: false
adminUser:
username: admin
firstname: Superset
lastname: Admin
email: admin@superset.com
password: admin
initContainers:
- name: wait-for-postgres
image: busybox:latest
@@ -159,11 +258,12 @@ init:
superset init
echo "Creating admin user..."
superset fab create-admin \
--username admin \
--firstname Superset \
--lastname Admin \
--email admin@superset.com \
--password admin || true
--username {{ .Values.init.adminUser.username }} \
--firstname {{ .Values.init.adminUser.firstname }} \
--lastname {{ .Values.init.adminUser.lastname }} \
--email {{ .Values.init.adminUser.email }} \
--password {{ .Values.init.adminUser.password }} \
|| true
{{ if .Values.init.loadExamples }}
echo "Loading examples..."
superset load_examples
+58
View File
@@ -0,0 +1,58 @@
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
---
rules:
braces:
min-spaces-inside: 0
max-spaces-inside: 0
min-spaces-inside-empty: -1
max-spaces-inside-empty: -1
brackets:
min-spaces-inside: -1
max-spaces-inside: -1
min-spaces-inside-empty: -1
max-spaces-inside-empty: -1
colons:
max-spaces-before: 0
max-spaces-after: 1
commas:
max-spaces-before: 0
min-spaces-after: 1
max-spaces-after: 1
comments:
require-starting-space: false
min-spaces-from-content: -1
document-end: disable
document-start: disable # No --- to start a file
empty-lines:
max: 2
max-start: 0
max-end: 0
hyphens:
max-spaces-after: 1
indentation:
spaces: consistent
indent-sequences: whatever # - list indentation will handle both indentation and without
check-multi-line-strings: false
key-duplicates: enable
line-length: disable # Lines can be any length
new-line-at-end-of-file: enable
new-lines:
type: unix
trailing-spaces: enable
truthy:
level: warning
+293 -101
View File
@@ -5,107 +5,299 @@
#
# pip-compile-multi
#
-e file:. # via -r requirements/base.in
aiohttp==3.7.2 # via slackclient
alembic==1.4.3 # via flask-migrate
amqp==2.6.1 # via kombu
apispec[yaml]==3.3.2 # via flask-appbuilder
async-timeout==3.0.1 # via aiohttp
attrs==20.2.0 # via aiohttp, jsonschema
babel==2.8.0 # via flask-babel
backoff==1.10.0 # via apache-superset
billiard==3.6.3.0 # via celery
bleach==3.2.1 # via apache-superset
brotli==1.0.9 # via flask-compress
cachelib==0.1.1 # via apache-superset
celery==4.4.7 # via apache-superset
cffi==1.14.3 # via cryptography
chardet==3.0.4 # via aiohttp
click==7.1.2 # via apache-superset, flask, flask-appbuilder
colorama==0.4.4 # via apache-superset, flask-appbuilder
contextlib2==0.6.0.post1 # via apache-superset
convertdate==2.3.0 # via holidays
cron-descriptor==1.2.24 # via apache-superset
croniter==0.3.36 # via apache-superset
cryptography==3.2.1 # via apache-superset
decorator==4.4.2 # via retry
defusedxml==0.6.0 # via python3-openid
dnspython==2.0.0 # via email-validator
email-validator==1.1.1 # via flask-appbuilder
flask-appbuilder==3.1.1 # via apache-superset
flask-babel==1.0.0 # via flask-appbuilder
flask-caching==1.9.0 # via apache-superset
flask-compress==1.8.0 # via apache-superset
flask-jwt-extended==3.24.1 # via flask-appbuilder
flask-login==0.4.1 # via flask-appbuilder
flask-migrate==2.5.3 # via apache-superset
flask-openid==1.2.5 # via flask-appbuilder
flask-sqlalchemy==2.4.4 # via flask-appbuilder, flask-migrate
flask-talisman==0.7.0 # via apache-superset
flask-wtf==0.14.3 # via apache-superset, flask-appbuilder
flask==1.1.2 # via apache-superset, flask-appbuilder, flask-babel, flask-caching, flask-compress, flask-jwt-extended, flask-login, flask-migrate, flask-openid, flask-sqlalchemy, flask-wtf
geographiclib==1.50 # via geopy
geopy==2.0.0 # via apache-superset
gunicorn==20.0.4 # via apache-superset
holidays==0.10.3 # via apache-superset
humanize==3.1.0 # via apache-superset
idna==2.10 # via email-validator, yarl
importlib-metadata==2.1.1 # via -r requirements/base.in, jsonschema, kombu, markdown
isodate==0.6.0 # via apache-superset
itsdangerous==1.1.0 # via flask, flask-wtf
jinja2==2.11.3 # via flask, flask-babel
jsonschema==3.2.0 # via flask-appbuilder
kombu==4.6.11 # via celery
korean-lunar-calendar==0.2.1 # via holidays
mako==1.1.3 # via alembic
markdown==3.3.3 # via apache-superset
markupsafe==1.1.1 # via jinja2, mako, wtforms
marshmallow-enum==1.5.1 # via flask-appbuilder
marshmallow-sqlalchemy==0.23.1 # via flask-appbuilder
marshmallow==3.9.0 # via flask-appbuilder, marshmallow-enum, marshmallow-sqlalchemy
msgpack==1.0.0 # via apache-superset
multidict==5.0.0 # via aiohttp, yarl
natsort==7.0.1 # via croniter
numpy==1.19.4 # via pandas, pyarrow
packaging==20.4 # via bleach
pandas==1.1.4 # via apache-superset
parsedatetime==2.6 # via apache-superset
pathlib2==2.3.5 # via apache-superset
pgsanity==0.2.9 # via apache-superset
polyline==1.4.0 # via apache-superset
prison==0.1.3 # via flask-appbuilder
py==1.9.0 # via retry
pyarrow==1.0.1 # via apache-superset
pycparser==2.20 # via cffi
pyjwt==1.7.1 # via apache-superset, flask-appbuilder, flask-jwt-extended
pymeeus==0.3.7 # via convertdate
pyparsing==2.4.7 # via apache-superset, packaging
pyrsistent==0.16.1 # via -r requirements/base.in, jsonschema
python-dateutil==2.8.1 # via alembic, apache-superset, croniter, flask-appbuilder, holidays, pandas
python-dotenv==0.15.0 # via apache-superset
python-editor==1.0.4 # via alembic
python-geohash==0.8.5 # via apache-superset
python3-openid==3.2.0 # via flask-openid
pytz==2020.4 # via babel, celery, convertdate, flask-babel, pandas
pyyaml==5.3.1 # via apache-superset, apispec
redis==3.5.3 # via apache-superset
retry==0.9.2 # via apache-superset
selenium==3.141.0 # via apache-superset
simplejson==3.17.2 # via apache-superset
six==1.15.0 # via bleach, cryptography, flask-jwt-extended, flask-talisman, holidays, isodate, jsonschema, packaging, pathlib2, polyline, prison, pyrsistent, python-dateutil, sqlalchemy-utils, wtforms-json
slackclient==2.5.0 # via apache-superset
sqlalchemy-utils==0.36.8 # via apache-superset, flask-appbuilder
sqlalchemy==1.3.20 # via alembic, apache-superset, flask-sqlalchemy, marshmallow-sqlalchemy, sqlalchemy-utils
sqlparse==0.3.0 # via apache-superset
typing-extensions==3.7.4.3 # via aiohttp, apache-superset, yarl
urllib3==1.25.11 # via selenium
vine==1.3.0 # via amqp, celery
webencodings==0.5.1 # via bleach
werkzeug==1.0.1 # via flask, flask-jwt-extended
wtforms-json==0.3.3 # via apache-superset
wtforms==2.3.3 # via flask-wtf, wtforms-json
yarl==1.6.2 # via aiohttp
zipp==3.4.0 # via importlib-metadata
-e file:.
# via -r requirements/base.in
aiohttp==3.7.2
# via slackclient
alembic==1.4.3
# via flask-migrate
amqp==2.6.1
# via kombu
apispec[yaml]==3.3.2
# via flask-appbuilder
async-timeout==3.0.1
# via aiohttp
attrs==20.2.0
# via
# aiohttp
# jsonschema
babel==2.8.0
# via flask-babel
backoff==1.10.0
# via apache-superset
billiard==3.6.3.0
# via celery
bleach==3.2.1
# via apache-superset
brotli==1.0.9
# via flask-compress
cachelib==0.1.1
# via apache-superset
celery==4.4.7
# via apache-superset
cffi==1.14.3
# via cryptography
chardet==3.0.4
# via aiohttp
click==7.1.2
# via
# apache-superset
# flask
# flask-appbuilder
colorama==0.4.4
# via
# apache-superset
# flask-appbuilder
contextlib2==0.6.0.post1
# via apache-superset
convertdate==2.3.0
# via holidays
cron-descriptor==1.2.24
# via apache-superset
croniter==0.3.36
# via apache-superset
cryptography==3.2.1
# via apache-superset
decorator==4.4.2
# via retry
defusedxml==0.6.0
# via python3-openid
dnspython==2.0.0
# via email-validator
email-validator==1.1.1
# via flask-appbuilder
flask-appbuilder==3.2.1
# via apache-superset
flask-babel==1.0.0
# via flask-appbuilder
flask-caching==1.9.0
# via apache-superset
flask-compress==1.8.0
# via apache-superset
flask-jwt-extended==3.24.1
# via flask-appbuilder
flask-login==0.4.1
# via flask-appbuilder
flask-migrate==2.5.3
# via apache-superset
flask-openid==1.2.5
# via flask-appbuilder
flask-sqlalchemy==2.4.4
# via
# flask-appbuilder
# flask-migrate
flask-talisman==0.7.0
# via apache-superset
flask-wtf==0.14.3
# via
# apache-superset
# flask-appbuilder
flask==1.1.2
# via
# apache-superset
# flask-appbuilder
# flask-babel
# flask-caching
# flask-compress
# flask-jwt-extended
# flask-login
# flask-migrate
# flask-openid
# flask-sqlalchemy
# flask-wtf
geographiclib==1.50
# via geopy
geopy==2.0.0
# via apache-superset
graphlib-backport==1.0.3
# via apache-superset
gunicorn==20.0.4
# via apache-superset
holidays==0.10.3
# via apache-superset
humanize==3.1.0
# via apache-superset
idna==2.10
# via
# email-validator
# yarl
importlib-metadata==2.1.1
# via -r requirements/base.in
isodate==0.6.0
# via apache-superset
itsdangerous==1.1.0
# via
# flask
# flask-wtf
jinja2==2.11.3
# via
# flask
# flask-babel
jsonschema==3.2.0
# via flask-appbuilder
kombu==4.6.11
# via celery
korean-lunar-calendar==0.2.1
# via holidays
mako==1.1.3
# via alembic
markdown==3.3.3
# via apache-superset
markupsafe==1.1.1
# via
# jinja2
# mako
# wtforms
marshmallow-enum==1.5.1
# via flask-appbuilder
marshmallow-sqlalchemy==0.23.1
# via flask-appbuilder
marshmallow==3.9.0
# via
# flask-appbuilder
# marshmallow-enum
# marshmallow-sqlalchemy
msgpack==1.0.0
# via apache-superset
multidict==5.0.0
# via
# aiohttp
# yarl
natsort==7.0.1
# via croniter
numpy==1.19.4
# via
# pandas
# pyarrow
packaging==20.4
# via bleach
pandas==1.2.2
# via apache-superset
parsedatetime==2.6
# via apache-superset
pathlib2==2.3.5
# via apache-superset
pgsanity==0.2.9
# via apache-superset
polyline==1.4.0
# via apache-superset
prison==0.1.3
# via flask-appbuilder
py==1.9.0
# via retry
pyarrow==3.0.0
# via apache-superset
pycparser==2.20
# via cffi
pyjwt==1.7.1
# via
# apache-superset
# flask-appbuilder
# flask-jwt-extended
pymeeus==0.3.7
# via convertdate
pyparsing==2.4.7
# via
# apache-superset
# packaging
pyrsistent==0.16.1
# via
# -r requirements/base.in
# jsonschema
python-dateutil==2.8.1
# via
# alembic
# apache-superset
# croniter
# flask-appbuilder
# holidays
# pandas
python-dotenv==0.15.0
# via apache-superset
python-editor==1.0.4
# via alembic
python-geohash==0.8.5
# via apache-superset
python3-openid==3.2.0
# via flask-openid
pytz==2020.4
# via
# babel
# celery
# convertdate
# flask-babel
# pandas
pyyaml==5.4.1
# via
# apache-superset
# apispec
redis==3.5.3
# via apache-superset
retry==0.9.2
# via apache-superset
selenium==3.141.0
# via apache-superset
simplejson==3.17.2
# via apache-superset
six==1.15.0
# via
# bleach
# cryptography
# flask-jwt-extended
# flask-talisman
# holidays
# isodate
# jsonschema
# packaging
# pathlib2
# polyline
# prison
# pyrsistent
# python-dateutil
# sqlalchemy-utils
# wtforms-json
slackclient==2.5.0
# via apache-superset
sqlalchemy-utils==0.36.8
# via
# apache-superset
# flask-appbuilder
sqlalchemy==1.3.20
# via
# alembic
# apache-superset
# flask-appbuilder
# flask-sqlalchemy
# marshmallow-sqlalchemy
# sqlalchemy-utils
sqlparse==0.3.0
# via apache-superset
typing-extensions==3.7.4.3
# via
# aiohttp
# apache-superset
urllib3==1.25.11
# via selenium
vine==1.3.0
# via
# amqp
# celery
webencodings==0.5.1
# via bleach
werkzeug==1.0.1
# via
# flask
# flask-jwt-extended
wtforms-json==0.3.3
# via apache-superset
wtforms==2.3.3
# via
# flask-wtf
# wtforms-json
yarl==1.6.2
# via aiohttp
zipp==3.4.0
# via importlib-metadata
# The following packages are considered to be unsafe in a requirements file:
# setuptools

Some files were not shown because too many files have changed in this diff Show More