def execute(request, design_id=None): response = {'status': -1, 'message': ''} if request.method != 'POST': response['message'] = _('A POST request is required.') app_name = get_app_name(request) query_server = get_query_server_config(app_name) query_type = beeswax.models.SavedQuery.TYPES_MAPPING[app_name] design = safe_get_design(request, query_type, design_id) try: query_form = get_query_form(request) if query_form.is_valid(): query_str = query_form.query.cleaned_data["query"] explain = request.GET.get('explain', 'false').lower() == 'true' design = save_design(request, query_form, query_type, design, False) if query_form.query.cleaned_data['is_parameterized']: # Parameterized query parameterization_form_cls = make_parameterization_form(query_str) if parameterization_form_cls: parameterization_form = parameterization_form_cls(request.REQUEST, prefix="parameterization") if parameterization_form.is_valid(): parameters = parameterization_form.cleaned_data real_query = substitute_variables(query_str, parameters) query = HQLdesign(query_form, query_type=query_type) query._data_dict['query']['query'] = real_query try: if explain: return explain_directly(request, query, design, query_server) else: return execute_directly(request, query, design, query_server, parameters=parameters) except Exception, ex: db = dbms.get(request.user, query_server) error_message, log = expand_exception(ex, db) response['message'] = error_message return JsonResponse(response) else: response['errors'] = parameterization_form.errors return JsonResponse(response) # Non-parameterized query query = HQLdesign(query_form, query_type=query_type) if request.GET.get('explain', 'false').lower() == 'true': return explain_directly(request, query, design, query_server) else: return execute_directly(request, query, design, query_server) else:
def execute_next_statement(self, query_history, hql_query): if query_history.is_success() or query_history.is_expired(): # We need to go to the next statement only if the previous one passed query_history.statement_number += 1 else: # We need to update the query in case it was fixed query_history.refresh_design(hql_query) query_history.last_state = QueryHistory.STATE.submitted.value query_history.save() query = query_history.design.get_design() # In case of multiquery, we need to re-replace the parameters as we save the non substituted query if query._data_dict['query']['is_parameterized']: real_query = substitute_variables(query._data_dict['query']['query'], query_history.get_extra('parameters')) query._data_dict['query']['query'] = real_query return self.execute_and_watch(query, query_history=query_history)
def execute_next_statement(self, query_history, hql_query): if query_history.is_success() or query_history.is_expired(): # We need to go to the next statement only if the previous one passed query_history.statement_number += 1 else: # We need to update the query in case it was fixed query_history.refresh_design(hql_query) query_history.last_state = QueryHistory.STATE.submitted.index query_history.save() query = query_history.design.get_design() # In case of multiquery, we need to re-replace the parameters as we save the non substituted query if query._data_dict['query']['is_parameterized']: real_query = substitute_variables(query._data_dict['query']['query'], query_history.get_extra('parameters')) query._data_dict['query']['query'] = real_query return self.execute_and_watch(query, query_history=query_history)