From 3fb5c79d77f5c7fce001605bc5ba5a725b833c88 Mon Sep 17 00:00:00 2001 From: Yongjie Zhao Date: Sat, 23 Jul 2022 08:34:15 +0800 Subject: [PATCH] fix: invalid dataset schema (#20826) --- superset/dashboards/api.py | 4 +++- superset/dashboards/schemas.py | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/superset/dashboards/api.py b/superset/dashboards/api.py index 9a323923c2890..5fb59a7d1dfbe 100644 --- a/superset/dashboards/api.py +++ b/superset/dashboards/api.py @@ -28,7 +28,7 @@ from flask_appbuilder.api import expose, protect, rison, safe from flask_appbuilder.hooks import before_request from flask_appbuilder.models.sqla.interface import SQLAInterface -from flask_babel import ngettext +from flask_babel import gettext, ngettext from marshmallow import ValidationError from werkzeug.wrappers import Response as WerkzeugResponse from werkzeug.wsgi import FileWrapper @@ -383,6 +383,8 @@ def get_datasets(self, id_or_slug: str) -> Response: self.dashboard_dataset_schema.dump(dataset) for dataset in datasets ] return self.response(200, result=result) + except TypeError: + return self.response_400(message=gettext("Dataset schema is invalid.")) except DashboardAccessDeniedError: return self.response_403() except DashboardNotFoundError: diff --git a/superset/dashboards/schemas.py b/superset/dashboards/schemas.py index d91879f0d88b3..0413c1672ee61 100644 --- a/superset/dashboards/schemas.py +++ b/superset/dashboards/schemas.py @@ -206,7 +206,7 @@ class DashboardDatasetSchema(Schema): health_check_message = fields.Str() fetch_values_predicate = fields.Str() template_params = fields.Str() - owners = fields.List(fields.Int()) + owners = fields.List(fields.Dict()) columns = fields.List(fields.Dict()) column_types = fields.List(fields.Int()) metrics = fields.List(fields.Dict())