diff --git a/superset/charts/api.py b/superset/charts/api.py index 7cef39a29..e9ba4fedd 100644 --- a/superset/charts/api.py +++ b/superset/charts/api.py @@ -243,7 +243,7 @@ class ChartRestApi(BaseSupersetModelRestApi): "slices": ("slice_name", "asc"), "owners": ("first_name", "asc"), } - filter_rel_fields = { + base_related_field_filters = { "owners": [["id", BaseFilterRelatedUsers, lambda: []]], "created_by": [["id", BaseFilterRelatedUsers, lambda: []]], } diff --git a/superset/dashboards/api.py b/superset/dashboards/api.py index 79255d192..615855123 100644 --- a/superset/dashboards/api.py +++ b/superset/dashboards/api.py @@ -241,7 +241,7 @@ class DashboardRestApi(BaseSupersetModelRestApi): "owners": ("first_name", "asc"), "roles": ("name", "asc"), } - filter_rel_fields = { + base_related_field_filters = { "owners": [["id", BaseFilterRelatedUsers, lambda: []]], "created_by": [["id", BaseFilterRelatedUsers, lambda: []]], } diff --git a/superset/datasets/api.py b/superset/datasets/api.py index fd2bd8c5a..40efe08c6 100644 --- a/superset/datasets/api.py +++ b/superset/datasets/api.py @@ -218,7 +218,7 @@ class DatasetRestApi(BaseSupersetModelRestApi): ] openapi_spec_tag = "Datasets" - filter_rel_fields = { + base_related_field_filters = { "owners": [["id", BaseFilterRelatedUsers, lambda: []]], "database": [["id", DatabaseFilter, lambda: []]], } diff --git a/superset/queries/api.py b/superset/queries/api.py index 83cb50493..1fb342f06 100644 --- a/superset/queries/api.py +++ b/superset/queries/api.py @@ -109,7 +109,7 @@ class QueryRestApi(BaseSupersetModelRestApi): "tab_name", "user.first_name", ] - filter_rel_fields = { + base_related_field_filters = { "created_by": [["id", BaseFilterRelatedUsers, lambda: []]], "user": [["id", BaseFilterRelatedUsers, lambda: []]], } @@ -120,6 +120,6 @@ class QueryRestApi(BaseSupersetModelRestApi): search_columns = ["changed_on", "database", "sql", "status", "user", "start_time"] - filter_rel_fields = {"database": [["id", DatabaseFilter, lambda: []]]} + base_related_field_filters = {"database": [["id", DatabaseFilter, lambda: []]]} allowed_rel_fields = {"database", "user"} allowed_distinct_fields = {"status"} diff --git a/superset/queries/saved_queries/api.py b/superset/queries/saved_queries/api.py index 52467a5c9..2b70b582b 100644 --- a/superset/queries/saved_queries/api.py +++ b/superset/queries/saved_queries/api.py @@ -155,7 +155,7 @@ class SavedQueryRestApi(BaseSupersetModelRestApi): related_field_filters = { "database": "database_name", } - filter_rel_fields = {"database": [["id", DatabaseFilter, lambda: []]]} + base_related_field_filters = {"database": [["id", DatabaseFilter, lambda: []]]} allowed_rel_fields = {"database"} allowed_distinct_fields = {"schema"} diff --git a/superset/reports/api.py b/superset/reports/api.py index f84d6287e..d48357641 100644 --- a/superset/reports/api.py +++ b/superset/reports/api.py @@ -209,7 +209,7 @@ class ReportScheduleRestApi(BaseSupersetModelRestApi): search_filters = {"name": [ReportScheduleAllTextFilter]} allowed_rel_fields = {"owners", "chart", "dashboard", "database", "created_by"} - filter_rel_fields = { + base_related_field_filters = { "chart": [["id", ChartFilter, lambda: []]], "dashboard": [["id", DashboardAccessFilter, lambda: []]], "database": [["id", DatabaseFilter, lambda: []]], diff --git a/superset/views/base_api.py b/superset/views/base_api.py index eb957a48e..47fc611ba 100644 --- a/superset/views/base_api.py +++ b/superset/views/base_api.py @@ -195,21 +195,27 @@ class BaseSupersetModelRestApi(ModelRestApi): } """ - related_field_filters: Dict[str, Union[RelatedFieldFilter, str]] = {} + base_related_field_filters: Dict[str, BaseFilter] = {} """ - Declare the filters for related fields:: + This is used to specify a base filter for related fields + when they are accessed through the '/related/' endpoint. + When combined with the `related_field_filters` attribute, + this filter will be applied in addition to the latest:: - related_fields = { - "": ) + base_related_field_filters = { + "": "") } """ - filter_rel_fields: Dict[str, BaseFilter] = {} + related_field_filters: Dict[str, Union[RelatedFieldFilter, str]] = {} """ - Declare the related field base filter:: + Specify a filter for related fields when they are accessed + through the '/related/' endpoint. + When combined with the `base_related_field_filters` attribute, + this filter will be applied in prior to the latest:: - filter_rel_fields_field = { - "": "") + related_fields = { + "": ) } """ allowed_rel_fields: Set[str] = set() @@ -299,7 +305,7 @@ class BaseSupersetModelRestApi(ModelRestApi): filter_field = cast(RelatedFieldFilter, filter_field) search_columns = [filter_field.field_name] if filter_field else None filters = datamodel.get_filters(search_columns) - base_filters = self.filter_rel_fields.get(column_name) + base_filters = self.base_related_field_filters.get(column_name) if base_filters: filters.add_filter_list(base_filters) if value and filter_field: diff --git a/superset/views/filters.py b/superset/views/filters.py index 7f3dfd293..9450a8303 100644 --- a/superset/views/filters.py +++ b/superset/views/filters.py @@ -61,7 +61,7 @@ class BaseFilterRelatedUsers(BaseFilter): # pylint: disable=too-few-public-meth Use in the api by adding something like: ``` - filter_rel_fields = { + base_related_field_filters = { "owners": [["id", BaseFilterRelatedUsers, lambda: []]], "created_by": [["id", BaseFilterRelatedUsers, lambda: []]], }