From 4af5ae08f9e18d23b22cb8b302a9d39e45afed57 Mon Sep 17 00:00:00 2001 From: Beto Dealmeida Date: Wed, 22 Sep 2021 10:06:24 -0700 Subject: [PATCH] fix: encode rison characters when searching (#16768) --- requirements/base.txt | 4 ++-- setup.py | 2 +- superset-frontend/src/components/ListView/Filters/Search.tsx | 3 ++- superset-frontend/src/components/ListView/utils.ts | 5 +++-- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/requirements/base.txt b/requirements/base.txt index 6be64d1f79..cbbc55f729 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -77,7 +77,7 @@ flask==1.1.4 # flask-openid # flask-sqlalchemy # flask-wtf -flask-appbuilder==3.3.2 +flask-appbuilder==3.3.3 # via apache-superset flask-babel==1.0.0 # via flask-appbuilder @@ -176,7 +176,7 @@ pgsanity==0.2.9 # via apache-superset polyline==1.4.0 # via apache-superset -prison==0.1.3 +prison==0.2.1 # via flask-appbuilder pyarrow==4.0.1 # via apache-superset diff --git a/setup.py b/setup.py index 9ce697b4ac..8f72eb7940 100644 --- a/setup.py +++ b/setup.py @@ -75,7 +75,7 @@ setup( "cryptography>=3.3.2", "deprecation>=2.1.0, <2.2.0", "flask>=1.1.0, <2.0.0", - "flask-appbuilder>=3.3.2, <4.0.0", + "flask-appbuilder>=3.3.3, <4.0.0", "flask-caching>=1.10.0", "flask-compress", "flask-talisman", diff --git a/superset-frontend/src/components/ListView/Filters/Search.tsx b/superset-frontend/src/components/ListView/Filters/Search.tsx index fd61cba5cc..482fac17d4 100644 --- a/superset-frontend/src/components/ListView/Filters/Search.tsx +++ b/superset-frontend/src/components/ListView/Filters/Search.tsx @@ -51,7 +51,8 @@ export default function SearchFilter({ const [value, setValue] = useState(initialValue || ''); const handleSubmit = () => { if (value) { - onSubmit(value.trim()); + // encode plus signs to prevent them from being converted into a space + onSubmit(value.trim().replace(/\+/g, '%2B')); } }; const handleChange = (e: React.ChangeEvent) => { diff --git a/superset-frontend/src/components/ListView/utils.ts b/superset-frontend/src/components/ListView/utils.ts index 5b2eed264c..3ce370d054 100644 --- a/superset-frontend/src/components/ListView/utils.ts +++ b/superset-frontend/src/components/ListView/utils.ts @@ -45,10 +45,11 @@ import { ViewModeType, } from './types'; -// Define custom RisonParam for proper encoding/decoding +// Define custom RisonParam for proper encoding/decoding; note that +// plus symbols should be encoded to avoid being converted into a space const RisonParam: QueryParamConfig = { encode: (data?: any | null) => - data === undefined ? undefined : rison.encode(data), + data === undefined ? undefined : rison.encode(data).replace(/\+/g, '%2B'), decode: (dataStr?: string | string[]) => dataStr === undefined || Array.isArray(dataStr) ? undefined