Przeglądaj źródła

HUE-5135 [metadata] Case sentitive type: search and allow custom values like FIEL*

Romain Rigaux 9 lat temu
rodzic
commit
517a59a508

+ 12 - 5
desktop/libs/metadata/src/metadata/navigator_client.py

@@ -102,8 +102,11 @@ class NavigatorApi(object):
           query_clauses.append('OR'.join(['(%s:*%s*)' % (field, term) for field in search_fields]))
           query_clauses.append('OR'.join(['(%s:*%s*)' % (field, term) for field in search_fields]))
         else:
         else:
           name, val = term.split(':')
           name, val = term.split(':')
-          if val and (name != 'type' or val in entity_types): # Manual filter allowed
-            user_filters.append(term + '*') # e.g. type:VIEW ca
+          if val:
+            if name == 'type':
+              term = '%s:%s' % (name, val.upper().strip('*'))
+              default_entity_types = ['*'] # Override default source types
+            user_filters.append(term + '*') # Manual filter allowed e.g. type:VIE* ca
 
 
       filter_query = '*'
       filter_query = '*'
 
 
@@ -139,6 +142,7 @@ class NavigatorApi(object):
       }
       }
 
 
       entity_types = []
       entity_types = []
+      defaultFilterQueries = []
       if filterQueries is None:
       if filterQueries is None:
         filterQueries = []
         filterQueries = []
 
 
@@ -154,7 +158,7 @@ class NavigatorApi(object):
         if query_s.strip().endswith('type:*'): # To list all available types
         if query_s.strip().endswith('type:*'): # To list all available types
           fq_type = entity_types
           fq_type = entity_types
 
 
-        filterQueries += ['{!tag=type} %s' % ' OR '.join(['type:%s' % fq for fq in fq_type])]
+        defaultFilterQueries += ['{!tag=type} %s' % ' OR '.join(['type:%s' % fq for fq in fq_type])]
 
 
       search_terms = [term for term in query_s.strip().split()] if query_s else []
       search_terms = [term for term in query_s.strip().split()] if query_s else []
       query = []
       query = []
@@ -163,7 +167,10 @@ class NavigatorApi(object):
           query.append(term)
           query.append(term)
         else:
         else:
           name, val = term.split(':')
           name, val = term.split(':')
-          if val and val != '*' and (name != 'type' or val in entity_types): # Allow to type non default types, e.g for SQL: type:FIELD
+          if val: # Allow to type non default types, e.g for SQL: type:FIEL*
+            if name == 'type':
+              term = '%s:%s' % (name, val.upper())
+              defaultFilterQueries = []
             filterQueries.append(term)
             filterQueries.append(term)
 
 
       body = {'query': ' '.join(query) or '*'}
       body = {'query': ' '.join(query) or '*'}
@@ -175,7 +182,7 @@ class NavigatorApi(object):
       if facetRanges:
       if facetRanges:
         body['facetRanges'] = facetRanges
         body['facetRanges'] = facetRanges
       if filterQueries:
       if filterQueries:
-        body['filterQueries'] = filterQueries
+        body['filterQueries'] = filterQueries + defaultFilterQueries
       if firstClassEntitiesOnly:
       if firstClassEntitiesOnly:
         body['firstClassEntitiesOnly'] = firstClassEntitiesOnly
         body['firstClassEntitiesOnly'] = firstClassEntitiesOnly