Merge pull request #1030 from getredash/fixes_160504

Make sure data sources list ordered by id
This commit is contained in:
Arik Fraimovich
2016-05-04 12:12:17 +03:00
3 changed files with 21 additions and 2 deletions

View File

@@ -67,7 +67,7 @@ class DataSourceListResource(BaseResource):
d['view_only'] = all(project(ds.groups, self.current_user.groups).values())
response[ds.id] = d
return response.values()
return sorted(response.values(), key=lambda d: d['id'])
@require_admin
def post(self):

View File

@@ -1,8 +1,9 @@
import requests
from celery.utils.log import get_task_logger
from flask.ext.mail import Message
from redash.worker import celery
from redash.version_check import run_version_check
from redash import models, mail
from redash import models, mail, settings
from .base import BaseTask
logger = get_task_logger(__name__)
@@ -10,7 +11,16 @@ logger = get_task_logger(__name__)
@celery.task(name="redash.tasks.record_event", base=BaseTask)
def record_event(event):
original_event = event.copy()
models.Event.record(event)
for hook in settings.EVENT_REPORTING_WEBHOOKS:
logger.debug("Forwarding event to: %s", hook)
try:
response = requests.post(hook, original_event)
if response.status_code != 200:
logger.error("Failed posting to %s: %s", hook, response.content)
except Exception:
logger.exception("Failed posting to %s", hook)
@celery.task(name="redash.tasks.version_check", base=BaseTask)

View File

@@ -1,4 +1,7 @@
import json
from funcy import pairwise
from tests import BaseTestCase
from redash.models import DataSource
@@ -25,6 +28,12 @@ class TestDataSourceListGet(BaseTestCase):
self.assertEqual(len(response.json), 1)
def test_returns_data_sources_ordered_by_id(self):
self.factory.create_data_source(group=self.factory.org.default_group)
self.factory.create_data_source(group=self.factory.org.default_group)
response = self.make_request("get", "/api/data_sources", user=self.factory.user)
self.assertTrue(all(left <= right for left, right in pairwise(response.json)))
class DataSourceTypesTest(BaseTestCase):
def test_returns_data_for_admin(self):