Commit Graph

141 Commits

Author SHA1 Message Date
Maxime Beauchemin
1971bf653c Numerous improvements to SQL Lab (#1088)
* Improving the Visualize flow

* Fixed the timer

* CTAS

* Expiclit engine handling

* make tab full height, stretch for longer content (#1081)

* Better error handling for queries

* Hooked and fixed CSV export

* Linting

* Tying in the dttm in the viz flow

* Indicator showing when going offline

* Addressing comments, fixing the build

* Fixing unit tests
2016-09-11 07:39:07 -07:00
Bogdan
c20ee0c129 Filter Druid Datasources by user permissions. (#1090) 2016-09-09 17:12:09 -07:00
Maxime Beauchemin
6aadc6ec13 Simplifying the flow to add a table (#1068)
When specifying a table reference that can not be found, the system used
to still create the object, which would result in confusion and bad
error messages down the line. Now it will fail and not create the
object.

I also removed fields that are not necessary to worry about when
initially creating the table.
2016-09-09 16:39:11 -07:00
Bogdan
d454fb402b Add refresh druid datasources endpoint. (#1065) 2016-09-07 17:27:35 -07:00
Bogdan
e783219a76 Add cache warmup endpoint (#1063)
* Refactor permissions in the views.py.

* Add get_viz to the slice.

* Add warm up cache endpoint.

* Resolve comments.
2016-09-06 13:58:09 -07:00
Maxime Beauchemin
4b77710016 [SQL Lab] Adding DB options for SQL LAb (#1054)
* [SQL Lab] Adding DB options for SQL LAb

each db can be exposed or not in SQL Lab
CTAS is an option
target_schema placeholder (not hooked yet, but would force the CTAS to
target a specific schema)

* Addressing comments
2016-09-01 14:21:46 -07:00
Chris Williams
bae21194c1 Chris/remove redirect from slice id endpoint (#1044)
* call explore() directly from '/caravel/slice/id/' endpoint instead of redirecting to it.

* pass slice_id instead of slice_params in 'caravel/slice/id/' endpoint to avoid logging errors. add fix for MultiDict bug

* address max's comments

* remove the /slice/id/ endpoint in preference of /datasource_type/datasource_id/slice_id/

* pep8
2016-08-31 16:45:03 -07:00
maxime.beauchemin@airbnb.com
508feb2bad [hotfix] getting presto on track 2016-08-31 00:11:00 +00:00
Maxime Beauchemin
38b8db8051 SQL Lab - A multi-tab SQL editor (#514)
* Carapal react mockup

This is really just a mock up written in React to try different
components. It could become scaffolding to build a prototype, or not.

* Merging in Alanna's theme tweaks for SQL lab

* Tweak the display of the alert message in navbar

* Sketching the middleware refresh for Queries

* Adjustments

* Implement timer sync.

* CTAS

* Refactor the queries to be stored as a dict. (#994)

* Download csv endpoint. (#992)

* CSV download engdpoint.

* Use lower case booleans.

* Replcate loop with the object lookup by key.

* First changes for the sync

* Address comments

* Fix query deletions. Update only the queries from the store.

* Sync queries using tmp_id.

* simplify

* Fix the tests in the carapal. (#1023)

* Sync queries using tmp_id.

* Fix the unit tests

* Bux fixes. Pass 2.

* Tweakin' & linting

* Adding alpha label to the SQL LAb navbar entry

* Fixing the python unit tests
2016-08-29 21:55:31 -07:00
Maxime Beauchemin
a8715294b0 [bugfix] dashboard list doesn't populate in explore->saveas (#979) 2016-08-19 16:50:05 -07:00
vera-liu
80974958bd vera_liu-deleted_dashboard_title_column_in_welcome_page (#951) 2016-08-16 21:52:57 -07:00
Riccardo Magliocchetti
061d4f1ac7 Refine gamma experience (#883)
* gamma: filter the sqla tables the user has access to

Refs #359

* gamma: filter slices available for dashboards in DashboardModelView

Refs #359

* gamma: limit owners to dashboard to self

As we don't want to leak other users to unpriviliged users

Refs #359
2016-08-16 21:37:55 -07:00
Chris Williams
2bfb9cc7dd pass the standalone request arg in the /caravel/slices/<slice_id>/ endpoint redirect (#876)
* pass the  request arg in the /caravel/slices/<slice_id>/ endpoint.

remove unused import.

* test that a single slice redirects rather than testing them all. update standalone redirect logic for Javascript 'false' instead of Python False
2016-08-10 23:11:53 -07:00
Riccardo Magliocchetti
71bdabe1a1 dashboard: don't enable buttons that would fail (#881)
With gamma users saving the dashboard model would fail if they
are not owner of the dashboard.
So if that's not the case just disable the "Add a new slice to
the dashboard" and "Save the current positioning and CSS".

Refs #359
2016-08-10 23:10:59 -07:00
Bogdan
d6bb8c6935 Add per database permissions for the SQL Lab. (#885) 2016-08-09 17:53:23 -07:00
Alanna Scott
b0a1f07818 ui update (#879)
* caravel ui update

* make headings bold on /explore

* bump back pagination color
2016-08-08 10:55:03 -07:00
Riccardo Magliocchetti
7c810dbd20 Miscellaneous style fixes spotted by landscape (#874) 2016-08-04 15:30:33 -07:00
Maxime Beauchemin
aaef338539 Altering theme for more subtle alerts / labels / buttons (#798)
* Altering theme for more subtle alerts / labels / buttons

* Taking comments into account

* changed button-primary to more sober grey instead of brand-primary
* remove carousel from theme demo page and other useless items

* Forcing links to be gray
2016-08-01 23:09:25 -07:00
Riccardo Magliocchetti
e7ce38b486 Smarter redirect on slice creation (#691)
After ea8a7ec1ba creating a slice
started redirecting to druid datasource from sqlalchemy tables.
That's quite painful for sqlalchemy tables users.
Instead of hardcoding a choice just query the db, if we don't
have any druid datasource fallback to sqlalchemy tables.
Bonus points we remove hacky javascript and make the message
translatable.

While at it fix druid client test to not hardcode datasource id.
2016-08-01 23:06:19 -07:00
Maxime Beauchemin
ee9141a31a New endpoint that receives SQL and returns data as JSON (#842)
* New endpoint that receives SQL and returns data as JSON

* Addressing comments
2016-07-29 22:39:33 -07:00
Hari Prasath R
299e31fdff Added order_by_cols to as_list. Fix to issue #821 (#823) 2016-07-28 11:51:21 -07:00
Maxime Beauchemin
7dd5b6716e Fixing serializing the lazy string (#818) 2016-07-25 20:15:57 -07:00
Maxime Beauchemin
f034f2701e Allowing to define a default format string per-metric (#750) 2016-07-13 23:45:05 -04:00
Alanna Scott
18b8e6fa58 make show columns explicit, don't show password column (#748) 2016-07-11 18:15:33 -07:00
George Ke
04f3e3bc8f "Add Slices" modal on dashboard page (#678)
* Add slice modal

* use datatables, filter by slice creator

* tests & landscaping

* code review + react-bootstrap-table + modularity
2016-07-07 21:40:33 -07:00
x4base
1a952a4961 Dashboards can only be deleted by their owners (#701) 2016-07-01 14:33:07 -07:00
lucky2you
ee00aa6522 some Chinese simplified translation work (#710) 2016-07-01 14:31:22 -07:00
Maxime Beauchemin
f407bd45fd [quickfix] fix broken CRUD column header links 2016-06-29 22:20:25 -07:00
Maxime Beauchemin
a016d181d7 [hotfix] mistakes slipped in 2016-06-28 12:58:09 -07:00
Maxime Beauchemin
bd68378d9c Saving slices and adding them to dashboards directly from explore view (#680)
* Saving slices from explore view

* Addressing comments
2016-06-28 10:31:36 -07:00
yxjames
7a7f61a296 datetime format and database expression on column level (#652)
* time format minor features added

* add description for datetime format input

* db version bug walkaround

* removed unecessary comments and fixed minor bug

* fixed code style

* minor fix

* fixed missing time format column in DruidDatasource

* Update models.py

Minor style fix

* Revert "Update models.py"

This reverts commit 6897c388e0.

* removed timestamp_format from druid and removed try catch in migration

* Using spaces, not tabs

* get the most updated migration and add the migration on the head of it

* remove vscode setting file

* use colunm based dttm_format

* modify dttm_converter

* modify datetime viz

* added comments and documents

* fixed some description and removed unnecessary import

* fix migration head

* minor style

* minor style

* deleted empty lines

* delete print statement

* add epoch converter

* error fixed

* fixed epoch parsing issue

* delete unnecessary lines

* fixed typo

* fix minor error

* fix styling issues

* fix styling error

* fixed typo

* support epoch_ms and did some refactoring

* fixed styling error

* fixed styling error

* add one more dataset to test dttm_format and db_expr

* add more slices

* styling

* specified String() lenght
2016-06-27 21:33:44 -07:00
Maxime Beauchemin
6a34b729e9 Adapting Babel to new FAB version, regenerating translations (#684) 2016-06-27 20:10:40 -07:00
George Ke
57ebb2bacf Map visualization (#650)
* simple mapbox viz

use react-map-gl

superclustering of long/lat points

Added hook for map style, huge performance boost from bounding box fix, added count text on clusters

variable gradient size based on metric count

Ability to aggregate over any point property

This needed a change in the supercluster npm module, a PR was placed here:
https://github.com/mapbox/supercluster/pull/12

Aggregator function option in explore, tweaked visual defaults

better radius size management

clustering radius, point metric/unit options

scale cluster labels that don't fit, non-numeric labels for points

Minor fixes, label field affects points, text changes

serve mapbox apikey for slice

global opacity, viewport saves (hacky), bug in point labels

fixing mapbox-gl dependency

mapbox_api_key in config

expose row_limit, fix minor bugs

Add renderWhileDragging flag, groupby. Only show numerical columns for point radius

Implicitly group by lng/lat columns and error when label doesn't match groupby

'Fix' radius in miles problem, still some jankiness

derived fields cannot be typed as of now -> reverting numerical number change

better grouping error checking, expose count(*) for labelling

Custom colour for clusters/points + smart text colouring

Fixed bad positioning and overflow in explore view + small bugs + added thumbnail

* landscaping & eslint & use izip

* landscapin'

* address js code review
2016-06-24 14:16:51 -07:00
Maxime Beauchemin
967b2ffeb0 Only creating perms for restricted metrics (#655)
* Only creating perms for restricted metrics

* Adding post_update hooks for is_restricted
2016-06-24 08:47:43 -07:00
Maxime Beauchemin
4a8e62b439 Fixing the examples's dashboard positioning (#667) 2016-06-23 15:28:23 -07:00
x4base
13095eb550 Show right messages as soon as possible (#632)
* Flashed messaged should be flushed in every page

* Show error messages in AJAX style

* Introduce the decorator "api"

* Move toggleCheckbox() to the right place and trigger it in jQuery style
2016-06-21 09:42:54 -07:00
Maxime Beauchemin
7e8053abef Adding list of table names to show Dashboard view (#648) 2016-06-21 09:41:48 -07:00
Maxime Beauchemin
d71a67cdad Bumping FAB and cryptography to current version (#647) 2016-06-20 15:31:15 -07:00
Chris Williams
668ede1133 expose /slice/<slice_id>/ endpoint to redirect to a slice's url (#633)
* expose /slice/<slice_id>/ endpoint to redirect to a slice's url

* remove residual print statement

* add unit test for caravel/slices/id endpoint
2016-06-20 09:18:03 -07:00
Maxime Beauchemin
78eb1e6a54 [hotfix] fixing bug around looking up security access 2016-06-17 11:34:54 -07:00
x4base
65d9feb0a9 Check ownership before a slice is deleted (#624) 2016-06-15 14:27:36 -07:00
x4base
ea8a7ec1ba Redirect to druid datasource page when the user wants to add slice. Also, provide a link to the table page (#625) 2016-06-15 14:23:25 -07:00
x4base
ee2d3330aa Prevent the cannot-overwrite error message from being removed before it can be seen (#626) 2016-06-15 14:19:50 -07:00
Maxime Beauchemin
a117498991 Adding some CRUD field descriptions to clarify things 2016-06-15 08:50:50 -07:00
x4base
4c6026fdda Add access control over metrics (#584)
* Add the new field "is_restricted" to SqlMetric and DruidMetric

* Add the access control on metrics

* Add the more descriptions on is_restricted

* Update docs/security.rst

* Update docs/security.rst
2016-06-10 15:49:33 -07:00
Maxime Beauchemin
c35e0e831c [hotfix] csv and json link are off (#592)
* Fixing bugs

* [hotfix] csv and json link are off
2016-06-09 18:06:20 -07:00
Maxime Beauchemin
60ed3e4050 TOX / Travis build matrix (#593)
* Building on many dbs

* Fixing some translation related error msg
2016-06-09 18:05:58 -07:00
Riccardo Magliocchetti
ad5507c5f4 views: translate labels and not names (#567)
So that we can install caravel on postgresql:
```
2016-06-03 17:58:05,386:ERROR:flask_appbuilder.base:
Add Permission on Menu Error: (psycopg2.ProgrammingError) can't adapt type '_LazyString'
[SQL: 'SELECT ab_view_menu.id AS ab_view_menu_id, ab_view_menu.name AS
ab_view_menu_name \nFROM ab_view_menu \nWHERE ab_view_menu.name = %(name_1)s \n
LIMIT %(param_1)s'] [parameters: {'param_1': 1, 'name_1': l'Sources'}]
```

Other that translating names should be a recipe for disaster if
you switch language.

Fix #558
2016-06-07 17:43:51 -07:00
George Ke
24a68f5c48 Two hotfixes (#574)
* fix for dashboards created without slices

* [hotfix] check_ownership param needed for adding slice to dashboard
2016-06-07 11:07:25 -07:00
Maxime Beauchemin
dc33506bfa Removing deprecated refs to flask.ext.* (#566) 2016-06-05 21:37:03 -07:00
George Ke
52c2b2348a allow for multiple columns in NOT GROUP BY (#560) 2016-06-03 11:34:29 -07:00
Maxime Beauchemin
3ee9a68c09 Only owners can update their objects (#507) 2016-06-02 19:17:34 -07:00
George Ke
c78d3682ac Reactify dashboard grid (#523)
* Use react-grid-layout instead of gridster

* visualizations show and resize

* display slice name and description; links work

* positioning of widgets to match gridster, rowHeight matches

* Change margins, rowHeight, unpositioned viz, and expandedSlices to match gridster

* Saving dashboard, deleting slices, formatting on slices (chart control and resize handle), expanded slices fixed.

* responsiveness + use es6 classes

* Minor ui fixes + linting

* CSS transforms on slices messes up nvd3 tooltip positioning.
Turn off CSS transforms for the time being, with a cost of painting speed.

Issue is currently being looked at on the nvd3 repo
PR: https://github.com/novus/nvd3/pull/1674

* Remove breakpoint listener, fires when it shouldn't (i.e. too often)

* resize is no longer buggy, minor cleanup

* gridster class, const, landscape error

* one source of data for data to front end from python
2016-06-02 12:31:05 -07:00
Luca Albertalli
087c47a37e Fix #529 1 "This Session's transaction has been rolled back" (#530)
* Fixing the specific issue

* Added an additional fix for a similar error in #529

Background:
- When an object is modified by SQLAlchemy, it is invalidated so need to be fetched again from the DB
- If there's an exception during a transaction, SQLAlchemy performs a rollback and mark the connection as dirty.

Bug:
- When handling exceptions, the exception handler tries to access the name of the cluster in the main object. Since the name has been invalidated due to a write, SQLAlchemy tries to fetch it on a 'dirty' connection and spits out an error. Solution:
- Fetch the information for handling the exception before starting the process.
2016-05-31 21:16:32 -07:00
Riccardo Magliocchetti
b193539fa4 i18n: Fix typo in Druid cluster broker port label (#512) 2016-05-31 21:10:28 -07:00
Maxime Beauchemin
57990bfd83 Implementing druid's regex filters (#501)
* Implementing druid's regex filters

* Debugging

* Debuggin'
2016-05-23 13:06:35 -07:00
Maxime Beauchemin
0fcab30652 More translation instrumentation and some french to test (#502) 2016-05-23 11:46:33 -07:00
Maxime Beauchemin
f28c2b2557 Cosmetric tweaks in the CRUD list view (#458) 2016-05-11 21:05:32 -07:00
Maxime Beauchemin
c4e3020369 Conververting datetime based on database dialects (#446) 2016-05-10 09:29:29 -07:00
Maxime Beauchemin
d304ee005a Bugfix in line chart where the series name is an empty string (#434) 2016-05-05 12:19:51 -07:00
Andrii Sydorchuk
0bedaed367 Make sure anonymous user with proper permissions can access data (#415)
* Make sure anonymous user with proper permissions can access data

* Review fixes: naming changes

* Review fixes: add more granular tests for public user dashboard access

* Review fixes: test that public user has access only to permitted data sets
2016-05-03 22:31:37 -07:00
Maxime Beauchemin
88c9516e20 Getting started on translations (#423) 2016-05-02 10:50:23 -07:00
Maxime Beauchemin
26d273643b Allowing for druid post aggregations (#418)
* Druid post aggregations

* Fixing tests
2016-05-02 10:00:39 -07:00
Maxime Beauchemin
0ca3f5ec80 Improving SQLA query generation (#421)
* Improving SQLA query generation

* Fixing debug
2016-05-02 10:00:28 -07:00
Maxime Beauchemin
b634d03ac3 Show only Slices and Dashboards users have access to (#404)
* Introducing more security features

* Many to many owners for slices and dashboards
* Slices are filtered to only slices that the user has access to

* Adding unit tests
2016-04-26 16:44:51 -07:00
Maxime Beauchemin
17e711fda2 Druid unit tests using Mock (#384)
* Initial Druid mock unit tests

* More unit tests

* Test for Druid query

* Adding a groupby test
2016-04-20 15:08:10 -07:00
Siddharth Gupta
afcdcf06a1 Fixing overwrite and save slice permissions for a give role (#298)
* Fixing overwrite and save slice permissions for a give role

* fix function name - build failed

* fix function name and test user permissions

* disable the button in the UI

* fix build error - characters too long in 1 line

* try to disable button on the UI

* disable cursor in caravel css. You wont be able to click anymore if no access

* fix build issues

* fix build errors! god bless me

* disable main features in dashboard and slice

* fix build issues
2016-04-18 13:56:00 -07:00
Maxime Beauchemin
04f1b176c4 Fixes issue #364 2016-04-17 08:17:08 -07:00
Maxime Beauchemin
04d769ff24 Some more error handling when rendering the explore view (#361) 2016-04-15 15:00:49 -07:00
Maxime Beauchemin
63e5e932cb Hide password from database 'show' view (#355) 2016-04-14 21:23:49 -07:00
Maxime Beauchemin
e6e8ec9620 [bugfix] missing redirect when datasource is missing (#352) 2016-04-14 20:25:40 -07:00
Maxime Beauchemin
5cadd6794c Allowing to specify schema for tables (#330)
* Allowing to specify schema for tables

* Installed postgres and tested/fixed
2016-04-13 17:28:12 -07:00
Denis Zgonjanin
8fe5790ec3 Don't die on malformed json in the extras field. Give feedback to user (#338) 2016-04-13 16:41:55 -07:00
Maxime Beauchemin
af417b6b58 Adding expression column description in the CRUD 2016-04-12 10:41:23 -07:00
Maxime Beauchemin
54fb76e680 Getting the SQL view back in a working state (#327) 2016-04-11 21:20:42 -07:00
Denis Zgonjanin
6d0b5767b3 Include connection parameters in call to Test Connection for a new database (#326) 2016-04-11 15:39:50 -07:00
Maxime Beauchemin
5b822492c8 Linting to 99% (#317) 2016-04-10 22:49:08 -07:00
Siddharth Gupta
eff0beb195 Optimizing import statements for better readability and to avoid unused, excessive and duplicating imports in the project. (#294) 2016-04-07 23:01:40 -07:00
Maxime Beauchemin
bcca840f01 Adding from __future__ imports (#288)
* Adding from __future__ imports

* fixes

* Fixing doctests

* Removing unused ColorFactory (in js now)

* linting
2016-04-07 08:39:08 -07:00
Maxime Beauchemin
062f2b81cf Datasource dropdown in Explore view 2016-04-06 08:23:27 -07:00
andrewhn
65e72d0d07 Csv download improvements
* name + extension for generated csv and json files

* write csv index where data is meaningful
2016-04-06 08:22:49 -07:00
Maxime Beauchemin
31758827ae + button on Slice list view redirects to Table view with alert 2016-04-05 13:33:02 -07:00
Maxime Beauchemin
81de51bf6f Minor tweaks 2016-04-04 21:39:33 -07:00
Maxime Beauchemin
f9d04e8a72 Fixed refresh_datasource redirect 2016-04-04 20:43:06 -07:00
Maxime Beauchemin
889844407f Adding extra options to deeper configure sqlalchemy 2016-04-04 16:13:08 -07:00
Maxime Beauchemin
f1830c36cf A better welcome page 2016-04-04 16:12:28 -07:00
Maxime Beauchemin
aec3c0b358 Fixing bug when datasource has been deleted 2016-04-03 07:37:18 -07:00
Maxime Beauchemin
2b71b72065 Redirecting URL from previous names to caravel 2016-03-31 09:31:07 -07:00
Maxime Beauchemin
8e27099866 Fixing the tests for py3 2016-03-29 10:02:15 -07:00
Maxime Beauchemin
619d35878f [dashed->caravel] Replace in files 2016-03-28 22:01:21 -07:00
Maxime Beauchemin
d48796f00e Caravel - renaming files 2016-03-28 21:53:24 -07:00