def execute_query(request, design_id=None, table=None): authorized_get_design(request, design_id) error_message, log = None, None form = query_form() action = request.path design = safe_get_design(request, SavedQuery.HQL, design_id) on_success_url = request.REQUEST.get('on_success_url') for _ in range(1): if request.method == 'POST': form.bind(request.POST) to_explain = request.POST.has_key('button-explain') to_submit = request.POST.has_key('button-submit') # Always validate the saveform, which will tell us whether it needs explicit saving if not form.is_valid(): break to_save = form.saveform.cleaned_data['save'] to_saveas = form.saveform.cleaned_data['saveas'] if to_saveas and not design.is_auto: # Save As only affects a previously saved query design = design.clone() if to_submit or to_save or to_saveas or to_explain: explicit_save = to_save or to_saveas design = save_design(request, form, SavedQuery.HQL, design, explicit_save) action = urlresolvers.reverse(execute_query, kwargs=dict(design_id=design.id)) # We're not going to process the form. Simply re-render it. if not to_explain and not to_submit: break query_str = _strip_trailing_semicolon(form.query.cleaned_data["query"]) query_server = db_utils.get_query_server(form.query_servers.cleaned_data["server"]) # (Optional) Parameterization. parameterization = get_parameterization(request, query_str, form, design, to_explain) if parameterization: return parameterization query_msg = make_beeswax_query(request, query_str, form) try: if to_explain: return expl_d(request, query_str, query_msg, design, query_server) else: notify = form.query.cleaned_data.get('email_notify', False) return e_d(request, query_msg, design=design, on_success_url=on_success_url, notify=notify) except BeeswaxException, ex: error_message, log = expand_exception(ex) # Fall through to re-render the execute form. else: # GET request if design.id is not None: data = HQLdesign.loads(design.data).get_query_dict() form.bind(data) form.saveform.set_data(design.name, design.desc) else: # New design form.bind()
def design_to_dict(design): hql_design = HQLdesign.loads(design.data) return { 'id': design.id, 'query': hql_design.hql_query, 'name': design.name, 'desc': design.desc, 'database': hql_design.query.get('database', None), 'settings': hql_design.settings, 'file_resources': hql_design.file_resources, 'functions': hql_design.functions, 'is_parameterized': hql_design.query.get('is_parameterized', True), 'email_notify': hql_design.query.get('email_notify', True) }
def design_to_dict(design): hql_design = HQLdesign.loads(design.data) return { 'id': design.id, 'query': hql_design.hql_query, 'name': design.name, 'desc': design.desc, 'database': hql_design.query.get('database', None), 'settings': hql_design.settings, 'file_resources': hql_design.file_resources, 'functions': hql_design.functions, 'is_parameterized': hql_design.query.get('is_parameterized', True), 'email_notify': hql_design.query.get('email_notify', True), 'is_redacted': design.is_redacted }
try: query = HQLdesign(form) if to_explain: return explain_directly(request, query, design, query_server) else: notify = form.query.cleaned_data.get('email_notify', False) return execute_directly(request, query, query_server, design, on_success_url=on_success_url, notify=notify) except BeeswaxException, ex: print ex.errorCode print ex.SQLState db = dbms.get(request.user, query_server) error_message, log = expand_exception(ex, db) else: if design.id is not None: data = HQLdesign.loads(design.data).get_query_dict() form.bind(data) form.saveform.set_data(design.name, design.desc) else: # New design form.bind() return render('execute.mako', request, { 'action': action, 'design': design, 'error_message': error_message, 'form': form, 'log': log, 'on_success_url': on_success_url, })
def get_design(self): try: return HQLdesign.loads(self.data) except ValueError: # data is empty pass
def get_design(self): return HQLdesign.loads(self.data)
parameterization = get_parameterization(request, query_str, form, design, to_explain) if parameterization: return parameterization try: query = HQLdesign(form, query_type=query_type) if to_explain: return explain_directly(request, query, design, query_server) else: download = request.POST.has_key('download') return execute_directly(request, query, query_server, design, on_success_url=on_success_url, download=download) except Exception, ex: error_message, log = expand_exception(ex, db) else: if design.id is not None: data = HQLdesign.loads(design.data).get_query_dict() form.bind(data) form.saveform.set_data(design.name, design.desc) else: # New design form.bind() form.query.fields['database'].choices = databases # Could not do it in the form return render('execute.mako', request, { 'action': action, 'design': design, 'error_message': error_message, 'form': form, 'log': log, 'autocomplete_base_url': reverse(get_app_name(request) + ':autocomplete', kwargs={}), 'on_success_url': on_success_url,
def execute_query(request, design_id=None, table=None): authorized_get_design(request, design_id) error_message, log = None, None form = query_form() action = request.path design = safe_get_design(request, SavedQuery.HQL, design_id) on_success_url = request.REQUEST.get('on_success_url') for _ in range(1): if request.method == 'POST': form.bind(request.POST) to_explain = request.POST.has_key('button-explain') to_submit = request.POST.has_key('button-submit') # Always validate the saveform, which will tell us whether it needs explicit saving if not form.is_valid(): break to_save = form.saveform.cleaned_data['save'] to_saveas = form.saveform.cleaned_data['saveas'] if to_saveas and not design.is_auto: # Save As only affects a previously saved query design = design.clone() if to_submit or to_save or to_saveas or to_explain: explicit_save = to_save or to_saveas design = save_design(request, form, SavedQuery.HQL, design, explicit_save) action = urlresolvers.reverse(execute_query, kwargs=dict(design_id=design.id)) # We're not going to process the form. Simply re-render it. if not to_explain and not to_submit: break query_str = _strip_trailing_semicolon( form.query.cleaned_data["query"]) query_server = db_utils.get_query_server( form.query_servers.cleaned_data["server"]) # (Optional) Parameterization. parameterization = get_parameterization(request, query_str, form, design, to_explain) if parameterization: return parameterization query_msg = make_beeswax_query(request, query_str, form) try: if to_explain: return expl_d(request, query_str, query_msg, design, query_server) else: notify = form.query.cleaned_data.get('email_notify', False) return e_d(request, query_msg, design=design, on_success_url=on_success_url, notify=notify) except BeeswaxException, ex: error_message, log = expand_exception(ex) # Fall through to re-render the execute form. else: # GET request if design.id is not None: data = HQLdesign.loads(design.data).get_query_dict() form.bind(data) form.saveform.set_data(design.name, design.desc) else: # New design form.bind()