[sql lab] deeper support for templating (#3996)

* [sql lab] deeper support for templating

* Fixing py tests

* Fix typo
This commit is contained in:
Maxime Beauchemin
2017-12-19 15:55:58 -08:00
committed by GitHub
parent e4903e6dc6
commit 44e753d94d
8 changed files with 174 additions and 8 deletions

View File

@@ -87,11 +87,13 @@ def get_session(nullpool):
@celery_app.task(bind=True, soft_time_limit=SQLLAB_TIMEOUT)
def get_sql_results(
ctask, query_id, return_results=True, store_results=False, user_name=None):
ctask, query_id, return_results=True, store_results=False,
user_name=None, template_params=None):
"""Executes the sql query returns the results."""
try:
return execute_sql(
ctask, query_id, return_results, store_results, user_name)
ctask, query_id, return_results, store_results, user_name,
template_params)
except Exception as e:
logging.exception(e)
stats_logger.incr('error_sqllab_unhandled')
@@ -106,6 +108,7 @@ def get_sql_results(
def execute_sql(
ctask, query_id, return_results=True, store_results=False, user_name=None,
template_params=None,
):
"""Executes the sql query returns the results."""
session = get_session(not ctask.request.called_directly)
@@ -161,7 +164,9 @@ def execute_sql(
try:
template_processor = get_template_processor(
database=database, query=query)
executed_sql = template_processor.process_template(executed_sql)
tp = template_params or {}
executed_sql = template_processor.process_template(
executed_sql, **tp)
except Exception as e:
logging.exception(e)
msg = 'Template rendering failed: ' + utils.error_msg_from_exception(e)