Commit Graph

293 Commits

Author SHA1 Message Date
Allen Short
24217d969e schema for sqlalchemy, basic test support 2016-12-07 02:13:20 -06:00
Allen Short
80491ea4c2 Switch from flask_script to click, add CLI unit tests. 2016-12-06 15:14:44 -06:00
Arik Fraimovich
a874d88667 Fix tests & update CircleCI configuration 2016-11-26 11:35:21 +02:00
Arik Fraimovich
9f68deefea Merge pull request #1256 from ninneko/fork_with_vis
Change: when forking a query, copy all visualizations
2016-11-23 11:49:26 +02:00
Arik Fraimovich
971f961bcd Merge pull request #1353 from washort/draft-toggle
Change: make draft status for queries and dashboards toggleable
2016-11-22 23:38:33 +02:00
Antoine Augusti
9118464970 Rate limit the login page 2016-11-20 12:44:43 +01:00
yohei.naruse
8c78252ea2 fix tests 2016-11-11 02:21:30 +09:00
yohei.naruse
1ad0c9c75f fix errors 2016-11-09 00:37:16 +09:00
yohei.naruse
1d486938c1 fix bugs 2016-11-06 03:05:47 +09:00
yohei.naruse
e5665879bd add query fork to models.py 2016-11-06 03:02:11 +09:00
Allen Short
65a6385380 Make draft status for queries and dashboards toggleable. 2016-11-02 12:31:33 -05:00
Arik Fraimovich
2f090435a5 Merge pull request #1113 from whummer/feat/share-access-permissions
Add: share modify/access permissions for queries and dashboard
2016-10-28 19:11:03 +03:00
Arik Fraimovich
d9bad96e8e Remove MQL tests 2016-10-28 18:16:54 +03:00
Arik Fraimovich
6c5dd09a78 Add change tracking and fix tests 2016-10-26 16:09:55 +03:00
Arik Fraimovich
df17759ab4 Fix tests 2016-10-26 11:47:40 +03:00
Arik Fraimovich
6218421266 Tests for the permissions API (and rewrite) 2016-10-26 10:52:24 +03:00
Arik Fraimovich
f34471ec10 Return 409 when dashboard can't be updated due to conflict 2016-10-25 11:58:43 +03:00
Arik Fraimovich
40cc592591 Make sure error are logged in tests 2016-10-25 11:58:25 +03:00
Arik Fraimovich
bb96702ae6 Update dashboard testS 2016-10-25 10:45:00 +03:00
Arik Fraimovich
8b091129ed Use new helper for dashboards API 2016-10-24 21:33:49 +03:00
Arik Fraimovich
edea6f3a05 WIP:
- Move version/change tracking logic to mixins (the change mixin is still WIP).
- Tests for queries update API.
2016-10-24 16:58:30 +03:00
Arik Fraimovich
c51477ac93 Add tests outline 2016-10-24 13:56:39 +03:00
Arik Fraimovich
9f3bbfee13 Renames 2016-10-24 13:56:31 +03:00
Arik Fraimovich
7ba5a2062a Remove unused method 2016-10-24 13:37:32 +03:00
Waldemar Hummer
60a79cbe08 address code review comments 2016-10-24 12:33:29 +03:00
Waldemar Hummer
e0672f4c4d add optimistic locking for dashboard editing 2016-10-24 12:33:29 +03:00
Waldemar Hummer
903ba0c1e0 add backend API and tests for managing access permissions. 2016-10-24 12:33:29 +03:00
Arik Fraimovich
ae2cd5363f Change: pass the user object to the run_query method
This to allow different use cases like checking permissions
based on who is currently running the query.
2016-10-20 23:42:25 +03:00
Arik Fraimovich
5096e4ed79 Change: paginate query page & add explicit urls.
- Paginate the queries API result.
- Split the API to /api/queries (all queries) and /api/queries/my which returns
  a user's queries (or drafts).
- In the interface have explicit URLs for all queries (/queries), my queries (/queries/my)
  and drafts (/queries/drafts).
2016-10-05 14:14:26 +03:00
Arik Fraimovich
09a848f524 Change: deduplicate Google Spreadsheet columns 2016-09-11 09:41:15 +03:00
Arik Fraimovich
d4bfbc2c57 Fix: Excel file generation fails when row missing column value. 2016-07-11 11:51:55 +03:00
Arik Fraimovich
95fa6849b3 More robust parsing of worksheets with handling:
- handle the case of empty worksheet.
- handle the case of worksheet with no data.
2016-07-04 22:25:10 +03:00
Arik Fraimovich
6905340c2d Google Spreadsheets: Add support for unicode 2016-07-04 18:31:42 +03:00
Arik Fraimovich
f21276ec06 Merge pull request #1119 from getredash/feature/params_ui
Feature: add UI to delete alerts
2016-06-14 12:00:53 +03:00
Arik Fraimovich
2d2fb69b7b Add API to delete alerts (#731). 2016-06-14 11:21:05 +03:00
Arik Fraimovich
3ce27b9652 Merge pull request #1118 from getredash/feature/params_ui
Fix: remove alerts for archived queries
2016-06-14 11:15:50 +03:00
Arik Fraimovich
da4db94cf8 Close #930: remove alerts for archived queries 2016-06-14 11:09:35 +03:00
Arik Fraimovich
4cbc79a7aa Use default user for alert_subscription factory 2016-06-14 11:04:41 +03:00
Arik Fraimovich
df637e3f6b Merge pull request #1116 from getredash/feature/params_ui
Return meaningful error when there is no cached result.
2016-06-14 10:44:24 +03:00
Arik Fraimovich
68465b0c60 Return meaningful error when there is no cached result.
Previously it was crashing as it was trying to access an unreferenced
variables (query_result).
2016-06-14 10:41:01 +03:00
Arik Fraimovich
52558043ee Merge pull request #1091 from whummer/feature/cache_embeds
Add caching for queries used in embeds
2016-06-14 08:34:13 +03:00
Arik Fraimovich
0c7f0c25a8 Fix #1109: mixed group permissions resulting in wrong permission 2016-06-09 19:59:26 +03:00
Arik Fraimovich
7159f0beb0 Remove potnetially concurrency not safe code form enqueue_query.
This might have been causing the behavior described in #1097.
2016-06-09 16:53:29 +03:00
Arik Fraimovich
b67f412f58 Add test for enqueue_query 2016-06-08 20:00:59 +03:00
Waldemar Hummer
011ca74338 add caching for queries used in embeds 2016-06-03 09:14:59 +10:00
Arik Fraimovich
434615a1be Merge remote-tracking branch 'origin/master' into flexible_notifications 2016-06-02 10:21:52 +03:00
Arik Fraimovich
857caab20e Merge pull request #1085 from getredash/feature/pause-api
Feature: API to pause a data source
2016-05-31 09:08:03 +03:00
Arik Fraimovich
59f8af2c44 Switch to Redis for pause state storage 2016-05-30 22:44:09 +03:00
Arik Fraimovich
9538ee7c31 Feature: API to pause a data source 2016-05-30 18:30:05 +03:00
Arik Fraimovich
07d2b5ba42 Fix #1049: duplicate alerts 2016-05-30 14:39:58 +03:00
Arik Fraimovich
214aa3b799 Merge pull request #1060 from thoughtworks/saml-authorization
Feature: support configuring user's groups with SAML
2016-05-26 23:07:30 +03:00
Kumar Vora
8900d02c95 fixing test 2016-05-20 14:35:49 -05:00
Kumar Vora
c1c2db4a73 use user.org instead of passing org as a separate argument 2016-05-20 14:28:08 -05:00
Arik Fraimovich
b2e2277d0b Fix: old task trackers were not really removed 2016-05-19 09:58:30 +03:00
Ama Asare
ad85b9a62c Ama/Kumar: Configure authorization for SAML 2016-05-17 14:01:18 -05:00
Arik Fraimovich
e069374232 Merge w/ latest master 2016-05-07 17:49:49 +03:00
Waldemar Hummer
e415189017 add test case for embeds with parameters; minor fix in embeds.py 2016-05-05 11:15:49 +10:00
Arik Fraimovich
d9cc063be2 Fix: make sure we return dashboards only for current org 2016-05-04 16:32:49 +03:00
Arik Fraimovich
0bb722df5d Make sure data sources ordered by id 2016-05-04 12:03:47 +03:00
Arik Fraimovich
5bd133ca50 Add additional tests 2016-04-20 18:30:31 +03:00
Arik Fraimovich
3ce07782ad Fix #986: search might return duplicate queries 2016-04-20 17:54:20 +03:00
Arik Fraimovich
3c0fc3b134 Feature: running queries (tasks) monitor
- Refactored tasks module into a package.
- Add new admins screens (running queries & outdated queries).
2016-04-20 17:54:20 +03:00
Seva Gavrilov
c98cdef8f2 Fixed dashboard restrictions and added tests. 2016-03-29 13:27:35 -03:00
Alex DeBrie
1c04f3cc29 Fix broken tests 2016-03-24 13:55:46 +00:00
Alex DeBrie
a3c0917d85 Fix AlertSubscription unsubscribe permissions and broken tests 2016-03-23 20:49:20 +00:00
Alex DeBrie
a43761da39 Require destination_id in POSTs that create a subscription 2016-03-23 20:47:50 +00:00
Arik Fraimovich
7a943f62b3 Password reset & invite links functionality. 2016-03-14 18:33:17 +02:00
Arik Fraimovich
7da1c85315 Allow existing users sign in with Google Apps even if they are not in domain list. 2016-03-14 11:19:23 +02:00
Arik Fraimovich
1359d386c6 Change tag to be humanTime 2016-03-14 10:13:38 +02:00
Arik Fraimovich
1aab5b4963 Install Pymongo for tests (temporary solution) 2016-03-13 23:32:54 +02:00
Arik Fraimovich
18d7c33620 Feature: MongoDB - add support for $date and relative dates. 2016-03-13 23:25:24 +02:00
Arik Fraimovich
0e7098020c Merge pull request #909 from getredash/fix908
Fix #908: updating configuration without secrets was failing
2016-03-10 11:58:38 +02:00
Arik Fraimovich
33a5e06eb1 Fix #908: updating configuration without secrets was failing 2016-03-10 11:56:49 +02:00
Arik Fraimovich
b183651e04 Verify user has access to visualization before creating widget 2016-03-10 11:42:04 +02:00
Arik Fraimovich
fad8f2b7be UI for controlling access to dashboard 2016-03-10 11:28:39 +02:00
Arik Fraimovich
298db14bc1 API to create api key for dashboards 2016-03-10 10:09:26 +02:00
Arik Fraimovich
6bc3970ad5 Make sure user has access to data source when loading query result 2016-03-09 15:15:03 +02:00
Arik Fraimovich
b92fbb489b Fix call to authenticate_request 2016-03-09 13:41:33 +02:00
Arik Fraimovich
52ad1f1ba1 Public dasboards feature. 2016-03-09 13:38:02 +02:00
Jeff Widman
1aad95986b Add spaces around arithmetic operators per PEP 8 2016-02-29 12:34:50 -08:00
Jeff Widman
c198d22691 Format files to end in a single newline per PEP 8 2016-02-29 12:00:03 -08:00
Jeff Widman
09ccec59f5 Replace deprecated flask.ext.* with flask_*
Importing flask extensions using flask.ext.* is deprecated in favor of flask_*
For background, see: https://github.com/mitsuhiko/flask/issues/1135
2016-02-29 00:39:50 -08:00
Arik Fraimovich
491e2e10d1 Fix test 2016-02-23 15:02:49 +02:00
Arik Fraimovich
ed99b8452c Encapsulate data source/query runner configuration in an object.
This is a step towards adding more complex logic in configuration
handling, like encryption of secrets.
2016-02-23 15:02:49 +02:00
Arik Fraimovich
c12b059d10 Add API to trigger query refresh and support for parameters. 2016-02-22 10:40:46 +02:00
yohei.naruse
0afca7321a #801 fix test case.
schedule = "{:02d}:00".format(now.hour - 3) maybe be negative value when now.hour < 3.
I've fixed it.
2016-02-16 13:16:31 +09:00
Arik Fraimovich
505166455d Fix: show each data source only once 2016-01-19 18:26:51 +02:00
Arik Fraimovich
c1da2579a3 Test for embed handler 2016-01-16 21:25:19 +02:00
Arik Fraimovich
eed3d50372 create data source with default group specific method 2016-01-12 15:10:03 +02:00
Arik Fraimovich
901cf6f017 Fix: new data source should be assigned to default group? 2016-01-12 13:39:54 +02:00
Arik Fraimovich
7c6b95e71d Change multi-org implementation:
To avoid complications with how Google Auth works, when enabling organization
multi-tenancy on a single instance, each organization becomes a "sub folder"
instead of a sub-domain.
2016-01-04 00:03:49 +02:00
Arik Fraimovich
f7b57fa580 Feature: new permissions system
This is one huge change for the permissions system and related:

* (Backward incompatible:) Remove the table based permissions in favour of the new model.
* Manage permission to view or query datasources based on groups.
* Add the concept of Organization. It's irrelevant for most deployments, but allows for
  multi-tenant support in re:dash.
* Replace ActivityLog with Event based rows (old data in activity_log table is retained).
* Enforce permissions on the server-side. There were some permissions that were only enforced
  on the client side. This is no more. All permissions are enforced by the server.
* Added new permission: 'super-admin' to access the status and Flask-Admin interface.
* Make sure that html is never cached by the browser - this is to make sure that the browser
  will always ask for the new Javascript/CSS resources (if such are available).
2015-12-31 10:43:33 +02:00
Arik Fraimovich
1a748c2141 Fix expected path in test 2015-12-28 15:10:42 +02:00
Arik Fraimovich
6e28f949fb Merge pull request #725 from akariv/master
Fix: Google OAuth - support for next
2015-12-28 12:07:34 +02:00
Adam Kariv
a9ccfb8b42 Fix next for Google oauth 2015-12-27 13:48:59 +02:00
Arik Fraimovich
200131bb45 Silence metrics collection in tests. 2015-12-27 09:43:36 +02:00
Arik Fraimovich
f737be272f Update GitHub repo url (EverythingMe -> GetRedash) 2015-11-26 10:34:16 +02:00
Alon Horev
bea0e9aad0 Add support for MQL (a propietery SQL implementation for MongoDB by digdata.io) 2015-11-13 23:35:34 +02:00
Arik Fraimovich
799ce3e718 Fix: don't cache /results API endpoint 2015-10-16 23:11:19 +03:00
Arik Fraimovich
9b47f0d08a Fix: test shouldn't depend on currnet time 2015-10-16 23:10:50 +03:00
Arik Fraimovich
0f8da884f9 Fix #597: MongoDB date parsing logic improvement 2015-10-11 14:44:12 +03:00
Arik Fraimovich
bed63083a7 Close #564: support setting API key in headers 2015-10-11 11:54:21 +03:00
Arik Fraimovich
aaac5928c4 Fix: tests w/ celery breaking 2015-09-06 10:15:26 +03:00
Arik Fraimovich
993a861c78 Users UI. 2015-09-06 10:15:25 +03:00
Arik Fraimovich
a11e100050 Tests for users API 2015-09-06 10:15:25 +03:00
Arik Fraimovich
cdb6aaac6e Split the giant redash.controllers module into a package 2015-09-06 10:15:25 +03:00
Arik Fraimovich
edf8f5b1fd Fix tests post field name change in #515 2015-07-30 14:36:01 +03:00
Arik Fraimovich
accca51f39 Feature: web interface to edit datasources
* Web interface to add and delete data sources, without the need to ssh
into the server.
* Ability to safely delete datasources -- query results from this data sources
are deleted, while queries get assigned null datasource.
* Updated the BigQuery datasource to use the JSON key file from Google Developer
console. Also both BigQuery and the Google Spreadsheets datasource no longer store
their key on the filesystem, but rather in the DB.
* Minor updates to the Flask Admin.
2015-07-26 10:24:08 +03:00
Arik Fraimovich
3d859ec5f3 Feature: alerts for query results.
This is basic implementation for alerts feature, where you can
define a simple rule on the last query result to send an alert.

As part of the implementation added Flask-Mail to the project,
to send emails. Should be useful to make re:dash more "self aware"
(notify users about potential issues, when queries done executing
and more).
2015-07-22 17:05:31 +03:00
Arik Fraimovich
e183affdd0 Feature: support for per user api keys 2015-07-08 20:59:07 +03:00
Arik Fraimovich
a60b1686da Fix: when the server has non UTC timezone, timestamps were wrong 2015-06-03 07:58:28 +03:00
Stan Hu
690f8323c3 Allow undefined max_age parameter in query_results endpoint
An Error 500 would be returned by the endpoint if you attempted to
pass a query parameter to the dashboard since maxAge was undefined in JavaScript.
2015-05-14 22:00:08 -07:00
Arik Fraimovich
f4be83b06f Use query id from UI & annotate scheduled queries 2015-04-20 08:46:01 +03:00
Arik Fraimovich
d3d305a843 Make sure data sources have unique names in tests 2015-04-18 22:46:42 +03:00
Arik Fraimovich
e3c5da5bc5 Fix tests to use correct data 2015-04-02 17:05:16 +03:00
Arik Fraimovich
6ff6bdad9f Use the correct redis connection in tests 2015-04-02 11:25:42 +03:00
Arik Fraimovich
e3cc3ef9a4 Move schema fetching to DataSource + tests 2015-04-02 11:25:42 +03:00
Arik Fraimovich
1fe4f291f2 Flush test redis db after each test 2015-04-02 11:25:22 +03:00
Arik Fraimovich
faad6b656b Change query ttl field to be a string and named schedule.
This to allow other types of scheduling than just repeat every X seconds.
The first supported option will be: repeat every day at hour X.
2015-04-01 11:23:26 +03:00
Arik Fraimovich
ad1b9b06cf Fix test. 2015-03-22 14:42:08 +02:00
Arik Fraimovich
a4bceae60b Allow anyone to edit any query & show who edited it 2015-03-22 13:22:11 +02:00
Arik Fraimovich
9385449feb Add updated_at timestamp to visualization, query, dashboard and users models 2015-03-22 12:58:26 +02:00
Arik Fraimovich
85a762bcd2 Support posting to /queries/new to create a new query. 2015-03-18 13:28:23 +02:00
Arik Fraimovich
2e513c347c Cleanup 2015-03-10 18:21:51 +02:00
Arik Fraimovich
df1170eb9b Feature: optional api key only authentication 2015-03-10 17:51:17 +02:00
Arik Fraimovich
8a171ba39a Use JSON Schema for data source configuration 2015-02-24 07:50:10 +02:00
Arik Fraimovich
20af276772 Updated configuration spec to include friendly name and more 2015-02-24 07:50:10 +02:00
Arik Fraimovich
4058342763 WIP: configuration object 2015-02-24 07:50:10 +02:00
akariv
8eea2fb367 Support unicode queries in search API
Modify query test case to use unicode strings
2015-02-20 23:49:37 +02:00
Arik Fraimovich
1afd2ab388 Refactoring of @christophervalles work on query delete feature:
- Change delete into archive.
- Safely remove widgets.
- Make sure archived queries don't get scheduled, or show up in search.
- If direct link to query used, show notification.
- Tests.
- Some more.
2015-01-25 16:17:52 +02:00
Arik Fraimovich
e116e88e98 Job to cleanup unused query results 2014-12-25 15:39:49 +02:00
Arik Fraimovich
518206f208 Fixes and imporvements to import dashboard:
- Update it to not expect query result.
- Add support for specifying data source.
- Create mapping file if it doesn't exist yet.
2014-11-04 07:24:51 +02:00
Arik Fraimovich
410f4f35e2 Add support for searching for query by id 2014-10-30 07:58:53 +02:00
Arik Fraimovich
9b23fb4235 Remove query stats from search, as it was too slow 2014-10-06 09:41:40 +03:00
Arik Fraimovich
c7b48837f2 Show last execution time & runtime in search results 2014-10-06 07:55:17 +03:00
Arik Fraimovich
f9144fc927 Naive search implementation. 2014-09-30 08:37:59 +03:00
Arik Fraimovich
91ab90a6fe Move event recording to Celery/database instead of log file 2014-09-27 17:41:50 +03:00
Arik Fraimovich
b43485f322 Update tests 2014-09-21 10:11:03 +03:00
Arik Fraimovich
4af979d3eb Split __init__ into several modules and remove flask-peewee dependency.
This should make imports more sensible and with less side effects. Also might reduce the memory footprint of the workers.
2014-05-18 10:19:07 +03:00
Arik Fraimovich
a1dcf94d4d Update tests 2014-05-17 17:11:46 +03:00
Arik Fraimovich
381ab62505 Move outdated queries selection logic to model. 2014-05-16 18:34:53 +03:00
Arik Fraimovich
93491004e2 Fix test due to refactor. 2014-05-16 18:19:01 +03:00
Arik Fraimovich
d1f0ae9538 Remove tests for old Job class. 2014-05-16 18:14:42 +03:00
Arik Fraimovich
9b4482f25d Move result storing logic to models. 2014-05-16 17:56:04 +03:00
Arik Fraimovich
dad9eb21a0 Create user groups in test setup. 2014-05-13 18:29:59 +03:00
Arik Fraimovich
16125327b1 Class for SQL metadata logic (tables, ddl, dml statements) 2014-05-13 18:16:30 +03:00
Christopher Valles
81d027611f Remove is_admin flag 2014-05-09 18:12:34 +01:00
Christopher Valles
1c095bcd99 Fix tests 2014-05-09 12:43:29 +01:00
Christopher Valles
e297faab7c Fixing more tests 2014-05-08 19:29:50 +01:00
Christopher Valles
c0329cc0ef Fixed tests; 2014-05-08 19:19:23 +01:00