kgabryje commented on a change in pull request #17287:
URL: https://github.com/apache/superset/pull/17287#discussion_r743005926



##########
File path: superset/connectors/base/models.py
##########
@@ -317,11 +317,23 @@ def data_for_slices(self, slices: List[Slice]) -> 
Dict[str, Any]:
                 if "column" in filter_config
             )
 
-            column_names.update(
-                column
-                for column_param in COLUMN_FORM_DATA_PARAMS
-                for column in utils.get_iterable(form_data.get(column_param) 
or [])
-            )
+            # legacy charts don't have query_context charts
+            if slc.query_context:
+                query_context = slc.get_query_context()
+                column_names.update(
+                    [
+                        column
+                        for query in query_context.get("queries", [])
+                        for column in query.get("columns", [])
+                    ]
+                    or []
+                )
+            else:
+                column_names.update(
+                    column
+                    for column_param in COLUMN_FORM_DATA_PARAMS
+                    for column in 
utils.get_iterable(form_data.get(column_param) or [])
+                )

Review comment:
       That was actually my first solution 😄 But @villebro suggested that I use 
columns in query_context instead, so that the solution is more generic and 
future proof - if in the future we add another chart that uses different field 
names in form data for columns, this solution will handle it correctly

##########
File path: superset/models/slice.py
##########
@@ -247,6 +247,17 @@ def form_data(self) -> Dict[str, Any]:
         update_time_range(form_data)
         return form_data
 
+    def get_query_context(self) -> Dict[str, Any]:
+        query_context: Dict[str, Any] = {}
+        if not self.query_context:
+            return query_context
+        try:
+            query_context = json.loads(self.query_context)
+        except json.decoder.JSONDecodeError as ex:
+            logger.error("Malformed json in slice's query context", 
exc_info=True)
+            logger.exception(ex)
+        return query_context
+

Review comment:
       Thanks for suggestions! I made the change, would appreciate another look 
🙂 

##########
File path: superset/models/slice.py
##########
@@ -247,6 +247,17 @@ def form_data(self) -> Dict[str, Any]:
         update_time_range(form_data)
         return form_data
 
+    def get_query_context(self) -> Dict[str, Any]:
+        query_context: Dict[str, Any] = {}
+        if not self.query_context:
+            return query_context
+        try:
+            query_context = json.loads(self.query_context)
+        except json.decoder.JSONDecodeError as ex:
+            logger.error("Malformed json in slice's query context", 
exc_info=True)
+            logger.exception(ex)
+        return query_context
+

Review comment:
       Thanks for suggestions! I made the change, would appreciate another look 
🙂 




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to