refactor sql_json view endpoint: separate save query concern into ad hod method (#16646)
diff --git a/superset/views/core.py b/superset/views/core.py
index 8da2d87..107d66e 100755
--- a/superset/views/core.py
+++ b/superset/views/core.py
@@ -2595,24 +2595,9 @@
self._get_the_query_db(execution_context, session)
)
query = execution_context.create_query()
- try:
- session.add(query)
- session.flush()
- query_id = query.id
- session.commit() # shouldn't be necessary
- except SQLAlchemyError as ex:
- logger.error("Errors saving query details %s", str(ex), exc_info=True)
- session.rollback()
- query_id = None
- if not query_id:
- raise SupersetGenericErrorException(
- __(
- "The query record was not created as expected. Please "
- "contact an administrator for further assistance or try again."
- )
- )
+ self._save_new_query(query, session)
- logger.info("Triggering query_id: %i", query_id)
+ logger.info("Triggering query_id: %i", query.id)
try:
query.raise_for_access()
@@ -2692,6 +2677,24 @@
session, rendered_query, query, expand_data, log_params
)
+ def _save_new_query( # pylint: disable=no-self-use
+ self, query: Query, session: Session
+ ) -> None:
+ try:
+ session.add(query)
+ session.flush()
+ session.commit() # shouldn't be necessary
+ except SQLAlchemyError as ex:
+ logger.error("Errors saving query details %s", str(ex), exc_info=True)
+ session.rollback()
+ if not query.id:
+ raise SupersetGenericErrorException(
+ __(
+ "The query record was not created as expected. Please "
+ "contact an administrator for further assistance or try again."
+ )
+ )
+
@staticmethod
def _convert_query_to_payload(query: Query) -> str:
return json.dumps(