* fix: Validate required params for sql_json API
* Test required params in sql_json API
* Refactoring: use marshmallow Schema for validation sql_json API
* Update SqlJsonPayloadSchema
* Update SqlJsonPayloadSchema
* Refactoring
* Refactoring
* Refactoring
* Implement model specific lookups by id to improve performance
* Address comments e.g. better variable names and test cleanup
* commit after cleanup
* even better name and test cleanup via rollback
Co-authored-by: Bogdan Kyryliuk <bogdankyryliuk@dropbox.com>
* Update explore URLs.
* More URL fixes.
* Make frontend accept true/false query params case-insensitively.
* Fix URL mistake.
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>
* rename and move dao file
* Update dao.py
* add cachekey
* Update __init__.py
* change reference in query context test
* add utils ref
* more ref changes
* add helpers
* add todo in dashboard.py
* add cachekey
* circular import error in dar.py
* push rest of refs
* fix linting
* fix more linting
* update enum
* remove references for connector registry
* big reafctor
* take value
* fix
* test to see if removing value works
* delete connectregistry
* address concerns
* address comments
* fix merge conflicts
* address concern II
* address concern II
* fix test
Co-authored-by: Phillip Kelley-Dotson <pkelleydotson@yahoo.com>
* move postForm to superset client
* lint
* fix lint
* fix type
* update tests
* add tests
* add test for form submit
* add test for request form
* lint
* fix test
* fix tests
* more tests
* more tests
* test
* lint
* more test for postForm
* lint
* Update superset-frontend/packages/superset-ui-core/test/connection/SupersetClientClass.test.ts
Co-authored-by: David Aaron Suddjian <1858430+suddjian@users.noreply.github.com>
* update tests
* remove useless test
* make test cover happy
* make test cover happy
* make test cover happy
* make codecov happy
* make codecov happy
Co-authored-by: David Aaron Suddjian <1858430+suddjian@users.noreply.github.com>
* pass datasource_type and datasource_id to form_data
* add datasource_type to delete command
* add datasource_type to delete command
* fix old keys implementation
* add more tests
* fix: always create parameter json field
* ensure validation for empty catalog
* check engine instead of name
* put validation in be
* fix test
* fix test
* remove test
* add save_metadata function to QueryDAO
* use set_extra_json_key
* added test
* Update queries_test.py
* fix pylint
* add to session
* add to session
* refactor
* forgot the return
* add BUSINESS_TYPE_ADDONS to config with example callback
* Removing uneeded whitespace
* [Work in progress] Modifying cidr function to allow for single ip and adding port outline
* Added test REST endpoint, added some more ports
I've thrown in a test.py script as well that will try to connect to the
business_type endpoint.
* Moving code from config.py into the business api
Very simple api is exposed that will allow someone to call a checkport
endpoint and get back a response.
* Removing commented out bits.
* Adding fucntion dict back to the config
* Moving business_type endpoint to charts
* Adding schema for get endpoint
* Removing imports, updating docstring, fixing typo
Just some small changes as described in the title. I've updated the
test.py as well so it functions with the endpoint changes.
* Adding translation dict
* Fixing ops
* Adding check for list
* Modifying changes to add quotes where needed
Also changed BusinessTypeResponse to resp.
* Adding in some code to call the filter config
If a column starts with "cidr_" it will call the code in config.py to
try to translate the filter. Nothing is changed in the JSON being
executed, just some information is dumped to console.
* Porting Ryan's changes
* Adding migration script (as per Ryan's PR)
* Fixing typo
* Prettier fixes
* [CLDN-1043] Adding rough version of filter changes for business types
* fix down migration
* Fixing bugs after merge
* adding functionality to appy filters in back end
* Fixing linting issues
* fix down revision
* Changing conversion callback to handle multiple values at once
* Adding string representation of values
* Code cleanup plus fixing debouce to only be called once for each entry
* Removing non needed logginh
* Changing operator list to use sting values
* Using text value operators
* Removing clear operator call
* Moving business type endpoints
* fix down revision
* Adding port functions
* update migration
* fix bad rebase and add ff
* implement validator
* dont add invalid values to response
* [CLDN-1205] Added a new exception type for a business type translation error. Added the error message in the display_value field within the business type response. Modified the IP and Port business types to populate the error message field in the response if an error occurs
* [CLDN-1205] Added meaningful error message for port translation errors
* Removing status field from businesstype Response and adding in error message
* [CLDN-1205] Added check to make sure the port business type is within the valid range of ports, if it is not, it will populate the error message
* [CLDN-1205] Fixed the if statement that checks to see if the string_value is in the valid range of port numbers. It did not corrently verify this before now.
* [CLDN-1205] Fixed an error where it was trying to use string_value in <= statements. I just casted string_value to an integer if it is numeric, which allows <= operators to be used on it
* [CLDN-1207] Added unit tests for the cidr_func and port_translation_func functions which are located in /superset/config.py
* [CLDN-1207] removed the assertRaises line as it does not work with the cidr_func and port_translation_func functions
* [CLDN-1207] Added the skeleton of the test_cidr_translate_filter_func unit test, still need to update what the expected response from the function will be.
* [CLDN-1207] Added the remainder of the back-end unit tests for the business types
* [CLDN-1207] Fixed the syntax error which caused the test_cidr_translate_filter_func_NOT_IN_double unit test to fail
* [CLDN-1207] Removed the logging that was added for debugging purposes
* [CLDN-1207] Formatted the commands_tests.py file to make it nicer to look at/read through
* [CLDN-1207] Fixed the code so that it conformed to the pylint requirements (i.e., pylint no longer complains about the code in commands_tests.py)
* [CLDN-1207] Modified some of the docstrings so they made better use of the 100 character per line, line limit
* [CLDN-1207] Added the beginnings of the unit tests for the
business types API
* [CLDN-1207] Added a comment to the top of the commands_tests.py file explaining how to run the unit tests. This prevents the next person who tries to run them from having to waste time trying the different forms of testing that Superset supports (e.g., pytest, tox, etc.)
* [CLDN-1207] Added a grammar fix to the comments describing how to run the unit tests
* [CLDN-1207] Modified the description of the business_type API endpoints as they did not represent what the API was actually doing
* [CLDN-1207] Added further instructions on how to run the unit tests that are within the business_type/api_tests.py file
* add request validation
* disable request if business type missing
* [CLDN-1207] Unit tests for the business type API are now working, however, they need to be modified to make use of @mock as we don't want to have to run the server to be able to run the unit tests
* Removing businesss types deffinitons from config
* Adding select to only show valid business types
* Fixed Enzyme tests
* Added scalfolding for selecting filter dropdown
* Adding intigration tests
* fix revision
* fix typos and unnecessary requests
* break out useBusinessTypes
* Added front-end RTL unit tests for the business type API endpoint
* Fixed error from unit tests
* Added a unit test to ensure the operator list is updated after a business type API response is received
* Removing elect compoenet for business types
* Adding feature flag and allowing saving when no business type present
* fixing useEffect hooks
* Adding feature flag to model
* Changing behavior such that an empty string returns a default response
* add form validation
* Modified comments in unit test as command to run test has changed
* Modified comments in unit test as filename to run test has changed
* Modified the api_tests.py file to conform to the linting requirements
* Changed the name of one of the tests to reflect what the test is actually testing
* Added cypress back to the package.json
* Added informative comments
* Updated comments in files as well as removed imports which were not being used
* Changes made by npm run prettier
* Fixed spelling mistakes
* Updated models.py to remove placeholder comments used in development
* Added feature flag mocking in unit test
* Fixing open api failure
* Fixing business types to pass unit tests
* Reverting unsafe connections back to false
* Removing print statement
* Adding business tpye to export test
* setting default feature flag to false for business type
* Reverting pre commit
* Reverting pre commit and running pre commit
* Reverting pre commit and running pre commit
* Fixing formatting
* Adding license
* Fixing Linting
* Protecting api enpoints
* updating model
* Fixing code path when business type exists
* Linting
* Linting
* Fixing linting
* Fixing spelling
* Fixing schemas
* Fixing app import
* fixing item render
* Added RTL test to make sure business type operator list is updated after API response
* Fixing linting
* fix migration
* Changing unit tests
* Fixing import and DB migration after rebase
* Renaming to advanced types
* Fixing Linting
* More renaming
* Removing uneeded change
* Fixing linting and test errors
* Removing unused imports
* linting
* Adding more detailed name for migration
* Moving files to plugins
* more renaming
* Fixing schema name
* Disabling feature flag that should not be enabled by default
* Adding extra cehck
* NameChange
* formatting
* Fixing equals check
* Moveing all advanced type classes and types to one file, and converting tests to functional
* Adding advanced type to test and fix linitng
Co-authored-by: Ville Brofeldt <ville.v.brofeldt@gmail.com>
Co-authored-by: Dan Parent <daniel.parent@cse-cst.gc.ca>
Co-authored-by: GITHUB_USERNAME <EMAIL>
Co-authored-by: cccs-Dustin <96579982+cccs-Dustin@users.noreply.github.com>
* fix(reports): Clear last value when state is WORKING
* Update cbe71abde154_fix_report_schedule_and_log.py
Co-authored-by: John Bodley <john.bodley@airbnb.com>
* feat: deprecate /superset/validate_sql_json migrate to api v1
* use new error handling
* migrate SQLLAb frontend and add tests
* debug test
* debug test
* fix frontend test on sqllab
* fix tests
* fix frontend test on sqllab
* fix tests
* fix tests
* fix tests
* fix tests
* remove druid datasource from the config
* remove config related references to DruidDatasource
* Update __init__.py
* Update __init__.py
* Update manager.py
* remove config related references to DruidDatasource
* raise if instance type is not valid
* feat: deprecate /superset/extra_table_metadata migrate to api v1
* use can_read to table_extra_metadata
* troubleshoot sqlite
* fix test
* fix test
* fix test
* fix frontend test on sqllab
* fix casting from timestamp[us] to timestamp[ns] would result in out of bounds timestamp from sqllab and charts
* Add unittests
* Lint changes and parameter variable rename
* Fix linting
* feat: get user roles endpoint
* add tests
* fix test
* get user with permission and roles with full user
* frontend
* type juggling
* the hash slinging slasher
* user reducer and action
* make it happy
* result
* lint
Co-authored-by: Lily Kuang <lily@preset.io>
* feat: deprecate old API and create new API for dashes created by me
* add tests
* fix previous test
* fix test and lint
* fix sqlite test
* fix lint
* fix lint
* lint
* fix tests
* fix tests
* use dashboards get list instead
* clean unnecessary marshmallow schema
* Update superset/views/core.py
Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>
* lint
Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>
* Update drill+sadrill to specify an SA URL parm of "impersonation_target".
Sqlalchemy-drill is being updated to support impersonation with the
drill+sadrill driver, where previously it did not. The way that callers
should specify impersonation matches that for the drill+jdbc driver in that
a SA URL parameter of impersonation_target should be set to the username
of the user to be impersonated, while the stadard SA username and password
should be those of the proxy user.
* Remove lint.
* Address review comments.
* Use idiomatic pytest to test for a raised exception.
* Fix import statement order in drill.py.
* embedded dashboard model
* embedded dashboard endpoints
* DRY up using the with_dashboard decorator elsewhere
* wip
* check feature flags and permissions
* wip
* sdk
* urls
* dao option for id column
* got it working
* Update superset/embedded/view.py
* use the curator check
* put back old endpoint, for now
* allow access by either embedded.uuid or dashboard.id
* keep the old endpoint around, for the time being
* openapi
* lint
* lint
* lint
* test stuff
* lint, test
* typo
* Update superset-frontend/src/embedded/index.tsx
* Update superset-frontend/src/embedded/index.tsx
* fix tests
* bump sdk
* remove depracted keys and associated methods
* remove api methods and tablemodel views
* remove deprecated api and unsued vars
* reremove schedules
* readd code
* fix pylint
* run black
* remove test
* core select start test
* add suggested changes
* chore: bump celery, Flask, flask-jwt-extended, pyJWT
* fix pyJWT breaking change
* fix pyJWT breaking change 2
* test
* fixed test
* fixed test
* fixed test
* revert since mypy won't pick the correct signature
* lint 1
* fix test
* fix test
* docs and celery config migration
* bump FAB to 4.0.0rc3, remove AUTH_STRICT_RESPONSE_CODES
* update docs for new celery config keys
* downgrade celery to 5.2.2
* ref FAB to final 4.0.0 release
* remove conflict left over
* remove ENABLE_REACT_CRUD_VIEWS feature flag
* docs
* deal with problematic tests
* empty test suite
* skip test
* test conditions changed
* removing the tests instead of skipping
* feat: helper functions for RLS
* Add function to inject RLS
* Add UNION tests
* Add tests for schema
* Add more tests; cleanup
* has_table_query via tree traversal
* Wrap existing predicate in parenthesis
* Clean up logic
* Improve table matching
* wip
* add force cahce bypass option to alerts
* remove default for alerts to bypass cache
* save for now
* save for now
* fix
* commenting out for now
* fix linting
* remove link
* add back force id test
* add frontend test
* address
* SQL-TOP Fix For Database Engines
MSSQL is not supporting LIMIT syntax in SQLs. For limiting the rows, MSSQL having a different keyword TOP. Added fixes for handling the TOP and LIMIT clauses based on the database engines.
* Teradata code for top clause handling removed from teradata.py
Teradata code for top clause handling removed from teradata.py file, since we added generic section in base engine for the same.
* Changes to handle CTE along with TOP in complex SQLs
Added changes to handle TOP command in CTEs, for DB Engines which are not supporting inline CTEs.
* Test cases for TOP unit testing in MSSQL
Added multiple unit test cases for MSSQL top command handling and also along with CTEs
* Corrected the select_keywords name key in basengine
Corrected the select_keywords name key in basengine
* Changes based on as per review.
made the required corrections based on code review to keep good code readability and code cleanliness.
* Review changes to correct lint and typo issues
Made the changes according to the review comments.
* fix linting errors
* fix teradata tests
* add coverage
* lint
* Code cleanliness
Moved the top/limit flag check from sql_lab to core.
* Changed for code cleanliness
Changes for keeping code cleanliness
* Corrected lint issue
Corrected lint issue.
* Code cleanliness
Code cleanliness
Co-authored-by: Ville Brofeldt <ville.v.brofeldt@gmail.com>
* more data nav menu
* fix lint and fix nav css
* update test and remove icons
* Update superset-frontend/src/views/components/Menu.test.tsx
Co-authored-by: Hugh A. Miles II <hughmil3s@gmail.com>
* Apply suggestions from code review
* use backend app.link to show new nav changes
* fix lint
* update test
* usetheme and remove chaining
* add more suggestions
* fix lint
* add allowed extensions to bootstrap and hard code links
* remove backend links
* fix test
* add extensions to frontend conf
* fix test and add be changes
* test is python test passes
* update python test and reremove app links
* fix ts and add t's
Co-authored-by: Hugh A. Miles II <hughmil3s@gmail.com>
* add aud claim and type for guest token
* update test
* lint
* make jwt audience configurable
* lint
* Apply suggestions from code review
Co-authored-by: David Aaron Suddjian <1858430+suddjian@users.noreply.github.com>
* verify aud
* add tests for aud and type claim
Co-authored-by: David Aaron Suddjian <1858430+suddjian@users.noreply.github.com>
* Fix for handling regular CTE queries with MSSQL,#8074
* Moved the get_cte_query function from mssql.py to base.py for using irrespetcive of dbengine
* Fix for handling regular CTE queries with MSSQL,#8074
* Moved the get_cte_query function from mssql.py to base.py for using irrespetcive of dbengine
* Unit test added for the db engine CTE SQL parsing.
Unit test added for the db engine CTE SQL parsing. Removed additional spaces from the CTE parsing SQL generation.
* implement in sqla model
* lint + cleanup
Co-authored-by: Ville Brofeldt <ville.v.brofeldt@gmail.com>
* Assign an owner when creating a dataset from a csv, excel or columnar
* Added some unit tests
* Code cleanup
* Removed blank line
* Attempt to fix a broken test
* Attempt # 2 to fix a broken test
* Attempt # 3 to fix a broken test
* Attempt # 4 to fix a broken test
* Attempt # 5 to fix a broken test
* Attempt # 6 to fix a broken test
* Broken test fixed, code cleanup
* feat(dashboard): embedded dashboard UI configuration (#17175) (#17450)
* setup embedded provider
* update ui configuration
* fix test
* feat: Guest token (for embedded dashboard auth) (#17517)
* generate an embed token
* improve existing tests
* add some auth setup, and rename token
* fix the stuff for compatibility with external request loaders
* docs, standard jwt claims, tweaks
* black
* lint
* tests, and safer token decoding
* linting
* type annotation
* prettier
* add feature flag
* quiet pylint
* apparently typing is a problem again
* Make guest role name configurable
* fake being a non-anonymous user
* just one log entry
* customizable algo
* lint
* lint again
* 403 works now!
* get guest token from header instead of cookie
* Revert "403 works now!"
This reverts commit df2f49a6d4.
* fix tests
* Revert "Revert "403 works now!""
This reverts commit 883dff38f1.
* rename method
* correct import
* feat: entry for embedded dashboard (#17529)
* create entry for embedded dashboard in webpack
* add cookies
* lint
* token message handshake
* guestTokenHeaderName
* use setupClient instead of calling configure
* rename the webpack chunk
* simplified handshake
* embedded entrypoint: render a proper app
* make the embedded page accept anonymous connections
* format
* lint
* fix test
# Conflicts:
# superset-frontend/src/embedded/index.tsx
# superset/views/core.py
* lint
* Update superset-frontend/src/embedded/index.tsx
Co-authored-by: David Aaron Suddjian <1858430+suddjian@users.noreply.github.com>
* comment out origins checks
* move embedded for core to dashboard
* pylint
* isort
Co-authored-by: David Aaron Suddjian <aasuddjian@gmail.com>
Co-authored-by: David Aaron Suddjian <1858430+suddjian@users.noreply.github.com>
* feat: Authorizing guest access to embedded dashboards (#17757)
* helper methods and dashboard access
* guest token dashboard authz
* adjust csrf exempt list
* eums don't work that way
* Remove unnecessary import
* move row level security tests to their own file
* a bit of refactoring
* add guest token security tests
* refactor tests
* clean imports
* variable names can be too long apparently
* missing argument to get_user_roles
* don't redefine builtins
* remove unused imports
* fix test import
* default to global user when getting roles
* missing import
* mock it
* test get_user_roles
* infer g.user for ease of tests
* remove redundant check
* tests for guest user security manager fns
* use algo to get rid of warning messages
* tweaking access checks
* fix guest token security tests
* missing imports
* more tests
* more testing and also some small refactoring
* move validation out of parsing
* fix dashboard access check again
* add more test
Co-authored-by: Lily Kuang <lily@preset.io>
* feat: Row Level Security rules for guest tokens (#17836)
* helper methods and dashboard access
* guest token dashboard authz
* adjust csrf exempt list
* eums don't work that way
* Remove unnecessary import
* move row level security tests to their own file
* a bit of refactoring
* add guest token security tests
* refactor tests
* clean imports
* variable names can be too long apparently
* missing argument to get_user_roles
* don't redefine builtins
* remove unused imports
* fix test import
* default to global user when getting roles
* missing import
* mock it
* test get_user_roles
* infer g.user for ease of tests
* remove redundant check
* tests for guest user security manager fns
* use algo to get rid of warning messages
* tweaking access checks
* fix guest token security tests
* missing imports
* more tests
* more testing and also some small refactoring
* move validation out of parsing
* fix dashboard access check again
* rls rules for guest tokens
* test guest token rls rules
* more flexible rls rules
* lint
* fix tests
* fix test
* defaults
* fix some tests
* fix some tests
* lint
Co-authored-by: Lily Kuang <lily@preset.io>
* SupersetClient guest token test
* Apply suggestions from code review
Co-authored-by: Lily Kuang <lily@preset.io>
Co-authored-by: Lily Kuang <lily@preset.io>
* Added code that properly accepts the -s flag on the import-datasources cli command. Also added unit tests for all of the edge cases (with both metrics & columns, with just columns, and with just metrics)
* Files were reformated using the 'pre-commit run --all-files' command
* added '*args: Any' back into v0.py as it did not need to be removed. Removing it might cause headaches for someone trying to work on this particular piece of code in the future
* Fixed the merge conflict as the cli.py was moved to another directory
* Modified my created unit tests to work with the new format of uni tests since the merge
* Modified my created unit tests to work with the new format of uni tests since the merge
* Fixed errors which were encountered while using the unit tests
* feat: Adds a key-value endpoint to store charts form data
* Fixes linting problems
* Removes the query_params from the endpoints
* Refactors the commands
* Removes unused imports
* Changes the parameters to use dataclass
* Adds more access tests
* Gets the first dataset while testing
* Adds unit tests for the check_access function
* Changes the can_access check
* Always check for dataset access
* refactor: replace the way the birth_names data is loaded to DB
* fix failed unit test
* fix failed unit test
* fix failed tests
* fix pass wrong flag of support datetime type
* remove unused fixture
* refactor: replace the way the birth_names data is generated
* refactor: replace the way the birth_names data is generated
* refactor structure
add tests for common
* Add two Kusto engine specs: KQL and SQL. Some minor changes in core code to support Kusto engine specs.
* Remove redundant imports and logging.
* docs: Kusto sqlalchemy docs
* fix: Fix mypy and linting errors
* fix: Handle Black vs Pylint checks
* fix: isort problem
* refactor: Merge kustosql and kustokql in the single kusto module
* test: Add tests for Kusto db spec
* feat: Schema override does not require in KQL anymore
* Removed redundant imports.
* Added ".show" queries to readonly query determination.
* Fixed some bugs.
Added tests for convert_dttm.
* Fixed major sqlalchemy-kusto version.
* Fixed by isort.
Co-authored-by: Eugene Bikkinin <xnegxneg@gmail.com>
Co-authored-by: k.tomak <k.tomak@dodopizza.com>
Co-authored-by: Eugene Bikkinin <e.bikkinin@dodopizza.com>
* Update existing tests
* Add backend test
* feat: add force option to report screenshots
* Add tests
* Rebase fixes
* Do not force screenshot on dashboard alerts
* Update db setup fixture scope
* Load data into db only once
* Update fixture scopes for data loading
* cleanup imports
* try import
* Update scope
* fix cleanup
* Import all fixtures
* Separate data log and metadata creation
* Retain table description
* fix dtype
Co-authored-by: Bogdan Kyryliuk <bogdankyryliuk@dropbox.com>
* Redirect on 401
* Bump FAB
* Format
* Update Cypress save test
* Revert Cypress change
* Bump FAB 3.4.1rc2
* Update test
* Update return statement
* Update api test
* Update datasets api test
* Update datasets api 401s to 403s
* Add typeguard
* Use Promise.resolve
* Update callApiAndParseWithhTimeout test
* Disable parseResponse test
* Try catch
* Handle npm 8 issues
* enable confidence intervals and y_hat without forecast
* fix if statement
Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>
Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>
* feat(explore): export csv data pivoted for Pivot Table
* Implement dropdown with download csv options
* Change label to "Original"
* Add tests
* Add form data to query context
* Add form data to query context generator
* Explicitly make form_data optional
* feat: Adds a key-value endpoint to store the state of dashboard filters
* Fixes pylint issues
* Adds openapi schemas
* Adds more tests, move logic to commands and use singular form for the endpoint name
* Fixes model description
* Removes database model
* Adds open api specs
* Simplifies the commands
* Adds more tests
* Validates the value content and submits the correct http status code
* Fixes import order
* Skips flakky test
* Fixes tests
* Updates UPDATING.md
* fix: Dashboard access when RBAC is disabled
* Sends 403 when forbidden
* Fixes issort
* Changes assertion
* Allow access to unpublished dashboards that don't have roles
* Fixes the test_get_dashboard_changed_on test
* Fix _latest_partition_from_df in HiveEngineSpec
* Add test HiveEngineSpec._latest_partition_from_df
* Fix formatting to pass black
Co-authored-by: Ville Brofeldt <ville.v.brofeldt@gmail.com>