Skip to content

Commit

Permalink
encapsulate ParameterizedQuery creation inside Query
Browse files Browse the repository at this point in the history
  • Loading branch information
Omer Lachish committed Feb 26, 2019
1 parent 5bdab05 commit 9d5e231
Show file tree
Hide file tree
Showing 4 changed files with 8 additions and 7 deletions.
5 changes: 2 additions & 3 deletions redash/handlers/query_results.py
Original file line number Diff line number Diff line change
Expand Up @@ -193,11 +193,10 @@ def post(self, query_id):

query = get_object_or_404(models.Query.get_by_id_and_org, query_id, self.current_org)

parameterized_query = ParameterizedQuery(query.query_text, query.parameter_schema)
allow_executing_with_view_only_permissions = parameterized_query.is_safe
allow_executing_with_view_only_permissions = query.parameterized.is_safe

if has_access(query.data_source.groups, self.current_user, allow_executing_with_view_only_permissions):
return run_query(parameterized_query, parameters, query.data_source, query_id, max_age)
return run_query(query.parameterized, parameters, query.data_source, query_id, max_age)
else:
return {'job': {'status': 4, 'error': 'You do not have permission to run queries with this data source.'}}, 403

Expand Down
5 changes: 3 additions & 2 deletions redash/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
get_query_runner)
from redash.utils import generate_token, json_dumps, json_loads
from redash.utils.configuration import ConfigurationContainer
from redash.utils.parameterized_query import ParameterizedQuery

from .base import db, gfk_type, Column, GFKBase, SearchBaseQuery
from .changes import ChangeTrackingMixin, Change # noqa
Expand Down Expand Up @@ -668,8 +669,8 @@ def lowercase_name(cls):
return func.lower(cls.name)

@property
def parameter_schema(self):
return self.options.get("parameters", [])
def parameterized(self):
return ParameterizedQuery(self.query_text, self.options.get("parameters", []))


@listens_for(Query.query_text, 'set')
Expand Down
2 changes: 1 addition & 1 deletion redash/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ def serialize_query(query, with_stats=False, with_visualizations=False, with_use
'options': query.options,
'version': query.version,
'tags': query.tags or [],
'is_safe': ParameterizedQuery(query.query_text, query.parameter_schema).is_safe,
'is_safe': query.parameterized.is_safe,
}

if with_user:
Expand Down
3 changes: 2 additions & 1 deletion redash/utils/parameterized_query.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
from functools import partial
from flask_login import current_user
from numbers import Number
from redash import models
from redash.utils import mustache_render, json_loads
from redash.permissions import require_access, view_only
from funcy import distinct
Expand All @@ -19,6 +18,8 @@ def _pluck_name_and_value(default_column, row):

def _load_result(query_id):
from redash.authentication.org_resolving import current_org
from redash import models

query = models.Query.get_by_id_and_org(query_id, current_org)
require_access(query.data_source.groups, current_user, view_only)
query_result = models.QueryResult.get_by_id_and_org(query.latest_query_data_id, current_org)
Expand Down

0 comments on commit 9d5e231

Please sign in to comment.