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())