@@ -686,20 +686,23 @@ def get(self):
686686
687687 keyvals = args ['tables' ] or ""
688688 ret = {}
689+ natsort = lambda s : [int (t ) if t .isdigit () else t .lower () for t in re .split (r'(\d+)' , s )]
689690 for (idx , keyval ) in enumerate (keyvals .split ("," )):
690691 try :
691692 table , key_field_name , value_field_name = keyval .split (":" )
692693 except :
693694 continue
694695 ret [table ] = []
695696 result = data_service .index (
696- get_identity (), translator , table , None , None , json .dumps (filterexpr [idx ]) if filterexpr and len (filterexpr ) > idx and filterexpr [idx ] else None , None , None
697+ get_identity (), translator , table , None , None , json .dumps (filterexpr [idx ]) if filterexpr and len (filterexpr ) > idx and filterexpr [idx ] else None , None , [ key_field_name , value_field_name ]
697698 )
698699 if 'feature_collection' in result :
700+ entries = {}
699701 for feature in result ['feature_collection' ]['features' ]:
700- record = {"key" : feature ["id" ] if key_field_name == "id" else feature ['properties' ][key_field_name ], "value" : str (feature ['properties' ][value_field_name ]).strip ()}
701- ret [table ].append (record )
702- natsort = lambda s : [int (t ) if t .isdigit () else t .lower () for t in re .split (r'(\d+)' , s )]
702+ key = feature ["id" ] if key_field_name == "id" else feature ['properties' ][key_field_name ]
703+ value = str (feature ['properties' ][value_field_name ]).strip ()
704+ entries [key ] = value
705+ ret [table ] = [{"key" : kv [0 ], "value" : kv [1 ]} for kv in entries .items ()]
703706 ret [table ].sort (key = lambda record : natsort (record ["value" ]))
704707 elif 'error' in result :
705708 app .logger .debug (f"Failed to query relation values for { keyval } : { result ['error' ]} " )
0 commit comments