|
@@ -47,7 +47,7 @@ import beeswax.design
|
|
|
import beeswax.management.commands.beeswax_install_examples
|
|
import beeswax.management.commands.beeswax_install_examples
|
|
|
|
|
|
|
|
from beeswax import common, data_export, models
|
|
from beeswax import common, data_export, models
|
|
|
-from beeswax.models import SavedQuery, QueryHistory
|
|
|
|
|
|
|
+from beeswax.models import QueryHistory, SavedQuery, Session
|
|
|
from beeswax.server import dbms
|
|
from beeswax.server import dbms
|
|
|
from beeswax.server.dbms import expand_exception, get_query_server_config, QueryServerException
|
|
from beeswax.server.dbms import expand_exception, get_query_server_config, QueryServerException
|
|
|
|
|
|
|
@@ -139,6 +139,7 @@ def _save_design(user, design, type_, design_obj, explicit_save, name=None, desc
|
|
|
|
|
|
|
|
return design
|
|
return design
|
|
|
|
|
|
|
|
|
|
+
|
|
|
def delete_design(request):
|
|
def delete_design(request):
|
|
|
if request.method == 'POST':
|
|
if request.method == 'POST':
|
|
|
ids = request.POST.getlist('designs_selection')
|
|
ids = request.POST.getlist('designs_selection')
|
|
@@ -348,6 +349,7 @@ def list_query_history(request):
|
|
|
'filter': filter,
|
|
'filter': filter,
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
|
|
+
|
|
|
def massage_query_history_for_json(app_name, query_history):
|
|
def massage_query_history_for_json(app_name, query_history):
|
|
|
return {
|
|
return {
|
|
|
'query': escape(query_history.query),
|
|
'query': escape(query_history.query),
|
|
@@ -357,6 +359,7 @@ def massage_query_history_for_json(app_name, query_history):
|
|
|
'resultsUrl': not query_history.is_failure() and reverse(app_name + ':watch_query_history', kwargs={'query_history_id': query_history.id}) or ""
|
|
'resultsUrl': not query_history.is_failure() and reverse(app_name + ':watch_query_history', kwargs={'query_history_id': query_history.id}) or ""
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+
|
|
|
def download(request, id, format):
|
|
def download(request, id, format):
|
|
|
try:
|
|
try:
|
|
|
query_history = authorized_get_query_history(request, id, must_exist=True)
|
|
query_history = authorized_get_query_history(request, id, must_exist=True)
|
|
@@ -550,12 +553,19 @@ def view_results(request, id, first_row=0):
|
|
|
def configuration(request):
|
|
def configuration(request):
|
|
|
app_name = get_app_name(request)
|
|
app_name = get_app_name(request)
|
|
|
query_server = get_query_server_config(app_name)
|
|
query_server = get_query_server_config(app_name)
|
|
|
- config_values = dbms.get(request.user, query_server).get_default_configuration(
|
|
|
|
|
- bool(request.REQUEST.get("include_hadoop", False)))
|
|
|
|
|
- for value in config_values:
|
|
|
|
|
- if 'password' in value.key.lower():
|
|
|
|
|
- value.value = "*" * 10
|
|
|
|
|
- return render("configuration.mako", request, {'config_values': config_values})
|
|
|
|
|
|
|
+
|
|
|
|
|
+ session = Session.objects.get_session(request.user, query_server['server_name'])
|
|
|
|
|
+
|
|
|
|
|
+ if session:
|
|
|
|
|
+ properties = json.loads(session.properties)
|
|
|
|
|
+ # Redact passwords
|
|
|
|
|
+ for key, value in properties.items():
|
|
|
|
|
+ if 'password' in key.lower():
|
|
|
|
|
+ properties[key] = '*' * len(value)
|
|
|
|
|
+ else:
|
|
|
|
|
+ properties = {}
|
|
|
|
|
+
|
|
|
|
|
+ return render("configuration.mako", request, {'configuration': properties})
|
|
|
|
|
|
|
|
|
|
|
|
|
"""
|
|
"""
|
|
@@ -635,6 +645,7 @@ def massage_columns_for_json(cols):
|
|
|
})
|
|
})
|
|
|
return massaged_cols
|
|
return massaged_cols
|
|
|
|
|
|
|
|
|
|
+
|
|
|
def authorized_get_design(request, design_id, owner_only=False, must_exist=False):
|
|
def authorized_get_design(request, design_id, owner_only=False, must_exist=False):
|
|
|
if design_id is None and not must_exist:
|
|
if design_id is None and not must_exist:
|
|
|
return None
|
|
return None
|
|
@@ -654,6 +665,7 @@ def authorized_get_design(request, design_id, owner_only=False, must_exist=False
|
|
|
|
|
|
|
|
return design
|
|
return design
|
|
|
|
|
|
|
|
|
|
+
|
|
|
def authorized_get_query_history(request, query_history_id, owner_only=False, must_exist=False):
|
|
def authorized_get_query_history(request, query_history_id, owner_only=False, must_exist=False):
|
|
|
if query_history_id is None and not must_exist:
|
|
if query_history_id is None and not must_exist:
|
|
|
return None
|
|
return None
|
|
@@ -981,6 +993,7 @@ def _list_query_history(user, querydict, page_size, prefix=""):
|
|
|
|
|
|
|
|
return page, filter_params
|
|
return page, filter_params
|
|
|
|
|
|
|
|
|
|
+
|
|
|
def _update_query_state(query_history):
|
|
def _update_query_state(query_history):
|
|
|
"""
|
|
"""
|
|
|
Update the last_state for a QueryHistory object. Returns success as True/False.
|
|
Update the last_state for a QueryHistory object. Returns success as True/False.
|
|
@@ -1002,6 +1015,7 @@ def _update_query_state(query_history):
|
|
|
query_history.save_state(state_enum)
|
|
query_history.save_state(state_enum)
|
|
|
return True
|
|
return True
|
|
|
|
|
|
|
|
|
|
+
|
|
|
def get_db_choices(request):
|
|
def get_db_choices(request):
|
|
|
app_name = get_app_name(request)
|
|
app_name = get_app_name(request)
|
|
|
query_server = get_query_server_config(app_name)
|
|
query_server = get_query_server_config(app_name)
|
|
@@ -1009,6 +1023,7 @@ def get_db_choices(request):
|
|
|
dbs = db.get_databases()
|
|
dbs = db.get_databases()
|
|
|
return [(db, db) for db in dbs]
|
|
return [(db, db) for db in dbs]
|
|
|
|
|
|
|
|
|
|
+
|
|
|
WHITESPACE = re.compile("\s+", re.MULTILINE)
|
|
WHITESPACE = re.compile("\s+", re.MULTILINE)
|
|
|
def collapse_whitespace(s):
|
|
def collapse_whitespace(s):
|
|
|
return WHITESPACE.sub(" ", s).strip()
|
|
return WHITESPACE.sub(" ", s).strip()
|