From bc2b9ea4edfa25930192ef0dd0a804c78443acf6 Mon Sep 17 00:00:00 2001 From: Deimos Date: Thu, 13 Dec 2018 22:16:48 -0700 Subject: [PATCH] Ltree field: convert spaces to underscores This will allow using spaces in query strings and similar places when it makes sense. --- tildes/tests/test_group.py | 2 +- tildes/tildes/schemas/fields.py | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/tildes/tests/test_group.py b/tildes/tests/test_group.py index b005b10..45849df 100644 --- a/tildes/tests/test_group.py +++ b/tildes/tests/test_group.py @@ -46,7 +46,7 @@ def test_uppercase_letters_fixed(): def test_paths_with_invalid_characters(): """Ensure that paths can't include some characters (not comprehensive).""" - invalid_chars = ' ~!@#$%^&*()+={}[]|\\:;"<>,?/' + invalid_chars = '~!@#$%^&*()+={}[]|\\:;"<>,?/' for char in invalid_chars: path = f"abc{char}xyz" diff --git a/tildes/tildes/schemas/fields.py b/tildes/tildes/schemas/fields.py index 909b44e..c61a7f7 100644 --- a/tildes/tildes/schemas/fields.py +++ b/tildes/tildes/schemas/fields.py @@ -144,8 +144,11 @@ class Ltree(Field): def _deserialize(self, value: str, attr: str, data: dict) -> sqlalchemy_utils.Ltree: """Deserialize a string path to an Ltree object.""" + # convert to lowercase and replace spaces with underscores + value = value.lower().replace(" ", "_") + try: - return sqlalchemy_utils.Ltree(value.lower()) + return sqlalchemy_utils.Ltree(value) except (TypeError, ValueError): raise ValidationError("Invalid path")