mirror of
https://github.com/getredash/redash.git
synced 2025-12-20 01:47:39 -05:00
Merge pull request #94 from EverythingMe/fix_query_hash_not_updating
Fix: when updating query text the hash should change.
This commit is contained in:
@@ -20,6 +20,7 @@ def version():
|
|||||||
"""Displays re:dash version."""
|
"""Displays re:dash version."""
|
||||||
print __version__
|
print __version__
|
||||||
|
|
||||||
|
|
||||||
@manager.command
|
@manager.command
|
||||||
def runworkers():
|
def runworkers():
|
||||||
"""Starts the re:dash query executors/workers."""
|
"""Starts the re:dash query executors/workers."""
|
||||||
|
|||||||
@@ -204,8 +204,7 @@ class QueryAPI(BaseResource):
|
|||||||
if 'latest_query_data_id' in query_def:
|
if 'latest_query_data_id' in query_def:
|
||||||
query_def['latest_query_data'] = query_def.pop('latest_query_data_id')
|
query_def['latest_query_data'] = query_def.pop('latest_query_data_id')
|
||||||
|
|
||||||
update = models.Query.update(**query_def).where(models.Query.id == query_id)
|
models.Query.update_instance(query_id, **query_def)
|
||||||
update.execute()
|
|
||||||
|
|
||||||
query = models.Query.get_by_id(query_id)
|
query = models.Query.get_by_id(query_id)
|
||||||
|
|
||||||
|
|||||||
@@ -115,6 +115,14 @@ LEFT OUTER JOIN
|
|||||||
"""
|
"""
|
||||||
return cls.raw(query)
|
return cls.raw(query)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def update_instance(cls, query_id, **kwargs):
|
||||||
|
if 'query' in kwargs:
|
||||||
|
kwargs['query_hash'] = utils.gen_query_hash(kwargs['query'])
|
||||||
|
|
||||||
|
update = cls.update(**kwargs).where(cls.id == query_id)
|
||||||
|
return update.execute()
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
self.query_hash = utils.gen_query_hash(self.query)
|
self.query_hash = utils.gen_query_hash(self.query)
|
||||||
self._set_api_key()
|
self._set_api_key()
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
from tests import BaseTestCase
|
from tests import BaseTestCase
|
||||||
from factories import dashboard_factory
|
from redash import models
|
||||||
|
from factories import dashboard_factory, query_factory
|
||||||
|
|
||||||
|
|
||||||
class DashboardTest(BaseTestCase):
|
class DashboardTest(BaseTestCase):
|
||||||
@@ -13,3 +14,15 @@ class DashboardTest(BaseTestCase):
|
|||||||
d3 = dashboard_factory.create()
|
d3 = dashboard_factory.create()
|
||||||
self.assertNotEquals(d1.slug, d3.slug)
|
self.assertNotEquals(d1.slug, d3.slug)
|
||||||
self.assertNotEquals(d2.slug, d3.slug)
|
self.assertNotEquals(d2.slug, d3.slug)
|
||||||
|
|
||||||
|
|
||||||
|
class QueryTest(BaseTestCase):
|
||||||
|
def test_changing_query_text_changes_hash(self):
|
||||||
|
q = query_factory.create()
|
||||||
|
|
||||||
|
old_hash = q.query_hash
|
||||||
|
models.Query.update_instance(q.id, query="SELECT 2;")
|
||||||
|
|
||||||
|
q = models.Query.get_by_id(q.id)
|
||||||
|
|
||||||
|
self.assertNotEquals(old_hash, q.query_hash)
|
||||||
Reference in New Issue
Block a user