From d4b131c3077ebe189693cab5e06e69be5c9854b5 Mon Sep 17 00:00:00 2001 From: Antonio Rivero Date: Thu, 2 Oct 2025 15:36:13 +0200 Subject: [PATCH] fix(slice): Fix using isdigit when id passed as int --- superset/models/slice.py | 4 +++- tests/unit_tests/models/slice_test.py | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/superset/models/slice.py b/superset/models/slice.py index f6379f0e77d9..ca1a1597514b 100644 --- a/superset/models/slice.py +++ b/superset/models/slice.py @@ -367,7 +367,9 @@ def get(cls, id_or_uuid: str) -> Slice: return qry.one_or_none() -def id_or_uuid_filter(id_or_uuid: str) -> BinaryExpression: +def id_or_uuid_filter(id_or_uuid: str | int) -> BinaryExpression: + if isinstance(id_or_uuid, int): + return Slice.id == id_or_uuid if id_or_uuid.isdigit(): return Slice.id == int(id_or_uuid) return Slice.uuid == id_or_uuid diff --git a/tests/unit_tests/models/slice_test.py b/tests/unit_tests/models/slice_test.py index 3b9f0666c958..dc6bbb865520 100644 --- a/tests/unit_tests/models/slice_test.py +++ b/tests/unit_tests/models/slice_test.py @@ -78,6 +78,7 @@ def test_slice_get_no_type_error(self, test_name, input_value): ("numeric_id", "123"), ("uuid_format", "550e8400-e29b-41d4-a716-446655440000"), ("invalid_string", "not-a-number"), + ("integer_id", 123), ] ) def test_id_or_uuid_filter(self, test_name, input_value):