diff --git a/superset/daos/semantic_layer.py b/superset/daos/semantic_layer.py index 8782973561c..9690a2fa12b 100644 --- a/superset/daos/semantic_layer.py +++ b/superset/daos/semantic_layer.py @@ -21,6 +21,8 @@ from __future__ import annotations from typing import Any +from sqlalchemy.exc import StatementError + from superset_core.semantic_layers.daos import ( AbstractSemanticLayerDAO, AbstractSemanticViewDAO, @@ -46,12 +48,14 @@ class SemanticLayerDAO(AbstractSemanticLayerDAO): .filter(SemanticLayer.uuid == uuid_str) .one_or_none() ) - except ValueError: + except (ValueError, StatementError): return None @classmethod def find_all(cls, skip_base_filter: bool = False) -> list[SemanticLayer]: - return db.session.query(SemanticLayer).all() + query = db.session.query(SemanticLayer) + query = cls._apply_base_filter(query, skip_base_filter) + return query.all() @classmethod def validate_uniqueness(cls, name: str) -> bool: diff --git a/superset/semantic_layers/api.py b/superset/semantic_layers/api.py index eb10205106a..3b5703808a2 100644 --- a/superset/semantic_layers/api.py +++ b/superset/semantic_layers/api.py @@ -163,6 +163,8 @@ class SemanticLayerRestApi(BaseSupersetApi): class_permission_name = "SemanticLayer" method_permission_name = MODEL_API_RW_METHOD_PERMISSION_MAP openapi_spec_tag = "Semantic Layers" + add_model_schema = SemanticLayerPostSchema() + edit_model_schema = SemanticLayerPutSchema() @expose("/types", methods=("GET",)) @protect() @@ -320,7 +322,7 @@ class SemanticLayerRestApi(BaseSupersetApi): $ref: '#/components/responses/422' """ try: - item = SemanticLayerPostSchema().load(request.json) + item = self.add_model_schema.load(request.json) except ValidationError as error: return self.response_400(message=error.messages) @@ -380,7 +382,7 @@ class SemanticLayerRestApi(BaseSupersetApi): $ref: '#/components/responses/422' """ try: - item = SemanticLayerPutSchema().load(request.json) + item = self.edit_model_schema.load(request.json) except ValidationError as error: return self.response_400(message=error.messages)