* 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
when using sql.html page to run sql directly, for any SELECT * sql, when click run! button for the second time,
the page will show error msg like: DataTables warning: table id={id} - Cannot reinitialise DataTable.
this can be fix by:https://datatables.net/manual/tech-notes/3#retrieve
* fixed
* basic implementation of the iframe embed popover
* remove unecessary comments
* remove public embed iframe
* remove debug print line and public access
* remove uncessary extra line and use better text explain
* maintain the style of airbnb/master
* fixed style
* re-run the test locally. Made sure it passed
* 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
* caravel: mark viz strings for translations
* caravel: mark templates string for translation
* caravel: make forms strings translatable
* Update translations
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
* 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
* Created migration to fix the bug
* Working also on MySQL
* Added support for Vertica Grains (#515)
* 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.
* Modified the migration function to to automatically detect the the foreign keys based on the signature.
It supports also sqlite using batch migrations
* i18n: Fix typo in Druid cluster broker port label (#512)
* Update models.py (#541)
removing duplicated `user_id` def
* fix for default metric in table visualization
* better location for form override; covers all parameters
* remove dead code, use items instead of iteritems for python 3
* 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.
It looks like COUNT(*) returns a numpy.int64 value that the
default JSONEncoder does not handle.
While at if we get a type we are not handling make it easier to
debug the issue by throwing a TypeError exception with useful
data.
Fix#486
* Allowing for templated urls in iFrame
This can allow for passing {{ width }} and {{ height }} as dynamic
attributes in the iFrame's URL.
The new method Slice.render_template method could do more eventually
exposing more variables to be used in dynamic strings.
* Passing function references
* js linting
* Improving the parallel coordinate viz
* Clear container on refresh
* Order of columns is kept
* Option to show/hide the series column in viz
* Color metric not shown by default
* JS linting
* add unicode data to tests
* make tests pass on 2.7
* clean up data loading
- remove duplicate keys in slice_data
- reduce line length
* change manager option flag to -t, --load-test-data
* test --> load_test_data
* 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
* attempt to enchance logging
* clean up logging
* clean up logging
* reset to logger
* clean up imports
* add comments in config.py
* remove redundant declaration of logging.config. Already exists in caravel/__init__.py
* replace RotatingFileHandler with TimedRotatingFileHandler
* revert back running web server in debug mode
* fix debug in bin/caravel
* resolve build errors - formatting
* need to test
* enable time rotateloghandler
* revert back print statements - add feature for rotatetimelog which is needed and make it configurable
* revert back to default in master
* fix build issues
* remove extra print statement
* change log location to default
* configure console log level and format
* 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
* Periodically update the slices in the dashboard
* Make the refresh interval changeable
* Add the button and the modal for the user to change the refresh interval
* Don't use callback for refreshing
* Randomize to prevent all widgets refreshing at the same time
* Show the loading icon as an overlay when the slices refresh
* 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