소스 검색

refactor query normalization

Daniel Sheffield 1 년 전
부모
커밋
6f317a8c33
2개의 변경된 파일6개의 추가작업 그리고 6개의 파일을 삭제
  1. 1 1
      app/data/PriceView.py
  2. 5 5
      app/rest/pyapi.py

+ 1 - 1
app/data/PriceView.py

@@ -120,7 +120,7 @@ TRUNC(
 def get_where(product=None, category=None, group=None, tag=None, organic=None, limit='90 days'):
     where = [
         get_where_include_exclude(
-            k, 'name', *get_include_exclude(v)
+            k, 'name', *list(map(set, get_include_exclude(v)))
         ) for k, v in {
             'products': product,
             'categories': category,

+ 5 - 5
app/rest/pyapi.py

@@ -85,9 +85,9 @@ ORDER BY "Product", "Category", "Group"
 
 def get_filter(query: FormsDict, allow: Iterable[str] = None):
     return {
-        k: list(map(set, get_include_exclude(
+        k: list(get_include_exclude(
             (query[k] or 'kg' if k == 'unit' else query.getall(k)) if k in query else None
-        ))) for k in sorted(set(query.keys()) | set(allow)) if allow is None or k in allow
+        )) for k in sorted(set(query.keys()) | set(allow)) if allow is None or k in allow
     }
 
 def get_query_param(include, exclude):
@@ -96,9 +96,9 @@ def get_query_param(include, exclude):
         *([ '|'.join(sorted(exclude)) ] if exclude else [ ]),
     ])
 
-def get_query(**params):
-    return '&'.join([
-        urlencode([ (k, get_query_param(*params[k])) for k in sorted(params) ])
+def get_query(**param):
+    return urlencode([
+        (k, get_query_param(*param[k])) for k in sorted(param) if param[k]
     ])
 
 def normalize_query(query: FormsDict, allow: Iterable[str] = None):