From eed30f283a3087bff52eaa5ed9a48e068ae98c41 Mon Sep 17 00:00:00 2001 From: Daniel Gaspar Date: Thu, 17 Dec 2020 16:58:37 +0000 Subject: [PATCH] fix related fields --- superset/reports/api.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/superset/reports/api.py b/superset/reports/api.py index 6be4a12f35fba..445474c7de2cb 100644 --- a/superset/reports/api.py +++ b/superset/reports/api.py @@ -26,6 +26,7 @@ from superset.charts.filters import ChartFilter from superset.constants import MODEL_API_RW_METHOD_PERMISSION_MAP, RouteMethod from superset.dashboards.filters import DashboardFilter +from superset.databases.filters import DatabaseFilter from superset.models.reports import ReportSchedule from superset.reports.commands.bulk_delete import BulkDeleteReportScheduleCommand from superset.reports.commands.create import CreateReportScheduleCommand @@ -47,7 +48,12 @@ ReportSchedulePostSchema, ReportSchedulePutSchema, ) -from superset.views.base_api import BaseSupersetModelRestApi, statsd_metrics +from superset.views.base_api import ( + BaseSupersetModelRestApi, + RelatedFieldFilter, + statsd_metrics, +) +from superset.views.filters import FilterRelatedOwners logger = logging.getLogger(__name__) @@ -155,12 +161,23 @@ class ReportScheduleRestApi(BaseSupersetModelRestApi): ] search_columns = ["name", "active", "created_by", "type", "last_state"] search_filters = {"name": [ReportScheduleAllTextFilter]} - allowed_rel_fields = {"created_by", "chart", "dashboard"} + allowed_rel_fields = {"owners", "chart", "dashboard", "database"} filter_rel_fields = { "chart": [["id", ChartFilter, lambda: []]], "dashboard": [["id", DashboardFilter, lambda: []]], + "database": [["id", DatabaseFilter, lambda: []]], + } + text_field_rel_fields = { + "dashboard": "dashboard_title", + "chart": "slice_name", + "database": "database_name", + } + related_field_filters = { + "dashboard": "dashboard_title", + "chart": "slice_name", + "database": "database_name", + "owners": RelatedFieldFilter("first_name", FilterRelatedOwners), } - text_field_rel_fields = {"dashboard": "dashboard_title"} apispec_parameter_schemas = { "get_delete_ids_schema": get_delete_ids_schema,