diff --git a/.gitignore b/.gitignore
index 4d61b9286a61a..81642b0e1447e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,15 +4,16 @@ babel
.coverage
_build
_static
-dashed/bin/dashedc
+caravel/bin/caravelc
+envpy3
build
*.db
tmp
-dashed_config.py
+caravel_config.py
local_config.py
env
dist
-dashed.egg-info/
+caravel.egg-info/
app.db
*.bak
diff --git a/.landscape.yml b/.landscape.yml
index 93e2e8d444f52..48a06e4ce1d72 100644
--- a/.landscape.yml
+++ b/.landscape.yml
@@ -16,8 +16,8 @@ pep8:
full: true
ignore-paths:
- docs
- - dashed/migrations/env.py
- - dashed/ascii_art.py
+ - caravel/migrations/env.py
+ - caravel/ascii_art.py
ignore-patterns:
- ^example/doc_.*\.py$
- (^|/)docs(/|$)
diff --git a/.travis.yml b/.travis.yml
index 7035ea95e12c5..2f22d1c16e590 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -11,7 +11,7 @@ before_install:
install:
- pip wheel -w $HOME/.wheelhouse -f $HOME/.wheelhouse .
- pip install --find-links=$HOME/.wheelhouse --no-index .
- - cd dashed/assets
+ - cd caravel/assets
- npm install
- npm run lint
- npm run prod
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 9410d800c876c..ec80742ac5a54 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -30,8 +30,8 @@ Look through the GitHub issues for features. Anything tagged with
### Documentation
-Dashed could always use better documentation,
-whether as part of the official Dashed docs,
+Caravel could always use better documentation,
+whether as part of the official Caravel docs,
in docstrings, `docs/*.rst` or even on the web as blog posts or
articles.
@@ -49,14 +49,14 @@ If you are proposing a feature:
## Latest Documentation
-[API Documentation](http://pythonhosted.com/dashed)
+[API Documentation](http://pythonhosted.com/caravel)
## Setting up a Python development environment
# fork the repo on github and then clone it
# alternatively you may want to clone the main repo but that won't work
# so well if you are planning on sending PRs
- # git clone git@github.com:mistercrunch/dashed.git
+ # git clone git@github.com:mistercrunch/caravel.git
# [optional] setup a virtual env and activate it
virtualenv env
@@ -66,24 +66,24 @@ If you are proposing a feature:
python setup.py develop
# Create an admin user
- fabmanager create-admin --app dashed
+ fabmanager create-admin --app caravel
# Initialize the database
- dashed db upgrade
+ caravel db upgrade
# Create default roles and permissions
- dashed init
+ caravel init
# Load some data to play with
- dashed load_examples
+ caravel load_examples
# start a dev web server
- dashed runserver -d
+ caravel runserver -d
## Setting up the node / npm javascript environment
-`dashed/assets` contains all npm-managed, front end assets.
+`caravel/assets` contains all npm-managed, front end assets.
Flask-Appbuilder itself comes bundled with jQuery and bootstrap.
While these may be phased out over time, these packages are currently not
managed with npm.
@@ -116,7 +116,7 @@ new `node_modules/` folder within `assets/`.
npm install
```
-To parse and generate bundled files for dashed, run either of the
+To parse and generate bundled files for caravel, run either of the
following commands. The `dev` flag will keep the npm script running and
re-run it upon any changes within the assets directory.
@@ -132,7 +132,7 @@ For every development session you will have to start a flask dev server
as well as an npm watcher
```
-dashed runserver -d -p 8081
+caravel runserver -d -p 8081
npm run dev
```
@@ -157,12 +157,12 @@ Generate the documentation with:
cd docs && ./build.sh
## CSS Themes
-As part of the npm build process, CSS for Dashed is compiled from ```Less```, a dynamic stylesheet language.
+As part of the npm build process, CSS for Caravel is compiled from ```Less```, a dynamic stylesheet language.
-It's possible to customize or add your own theme to Dashed, either by overriding CSS rules or preferably
+It's possible to customize or add your own theme to Caravel, either by overriding CSS rules or preferably
by modifying the Less variables or files in ```assets/stylesheets/less/```.
-The ```variables.less``` and ```bootswatch.less``` files that ship with Dashed are derived from
+The ```variables.less``` and ```bootswatch.less``` files that ship with Caravel are derived from
[Bootswatch](https://bootswatch.com) and thus extend Bootstrap. Modify variables in these files directly, or
swap them out entirely with the equivalent files from other Bootswatch (themes)[https://github.com/thomaspark/bootswatch.git]
diff --git a/MANIFEST.in b/MANIFEST.in
index ce0e121d0e016..72c6b65f0edcc 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -1,8 +1,8 @@
-recursive-include dashed/templates *
-recursive-include dashed/static *
-recursive-exclude dashed/static/assets/node_modules *
-recursive-include dashed/static/assets/node_modules/font-awesome *
-recursive-exclude dashed/static/docs *
+recursive-include caravel/templates *
+recursive-include caravel/static *
+recursive-exclude caravel/static/assets/node_modules *
+recursive-include caravel/static/assets/node_modules/font-awesome *
+recursive-exclude caravel/static/docs *
recursive-exclude tests *
-recursive-include dashed/data *
-recursive-include dashed/migrations *
+recursive-include caravel/data *
+recursive-include caravel/migrations *
diff --git a/README.md b/README.md
index 2cbfb9b198199..93a831267d0d0 100644
--- a/README.md
+++ b/README.md
@@ -1,33 +1,33 @@
-Dashed
+Caravel
=========
-[![PyPI version](https://badge.fury.io/py/dashed.svg)](https://badge.fury.io/py/dashed)
-[![Coverage Status](https://coveralls.io/repos/airbnb/dashed/badge.svg?branch=master&service=github)](https://coveralls.io/github/airbnb/dashed?branch=master)
-[![Code Health](https://landscape.io/github/airbnb/dashed/master/landscape.svg?style=flat)](https://landscape.io/github/airbnb/dashed/master)
-[![Requirements Status](https://requires.io/github/airbnb/dashed/requirements.svg?branch=master)](https://requires.io/github/airbnb/dashed/requirements/?branch=master)
-[![Join the chat at https://gitter.im/airbnb/dashed](https://badges.gitter.im/airbnb/dashed.svg)](https://gitter.im/airbnb/dashed?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
+[![PyPI version](https://badge.fury.io/py/caravel.svg)](https://badge.fury.io/py/caravel)
+[![Coverage Status](https://coveralls.io/repos/airbnb/caravel/badge.svg?branch=master&service=github)](https://coveralls.io/github/airbnb/caravel?branch=master)
+[![Code Health](https://landscape.io/github/airbnb/caravel/master/landscape.svg?style=flat)](https://landscape.io/github/airbnb/caravel/master)
+[![Requirements Status](https://requires.io/github/airbnb/caravel/requirements.svg?branch=master)](https://requires.io/github/airbnb/caravel/requirements/?branch=master)
+[![Join the chat at https://gitter.im/airbnb/caravel](https://badges.gitter.im/airbnb/caravel.svg)](https://gitter.im/airbnb/caravel?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
-Dashed is a data exploration platform designed to be visual, intuitive
+Caravel is a data exploration platform designed to be visual, intuitive
and interactive.
[this project used to be named **Panoramix**]
-Video - Introduction to Dashed
+Video - Introduction to Caravel
---------------------------------
-[![Dashed - ](http://img.youtube.com/vi/3Txm_nj_R7M/0.jpg)](http://www.youtube.com/watch?v=3Txm_nj_R7M)
+[![Caravel - ](http://img.youtube.com/vi/3Txm_nj_R7M/0.jpg)](http://www.youtube.com/watch?v=3Txm_nj_R7M)
Screenshots
------------
![img](http://i.imgur.com/bi09J9X.png)
![img](http://i.imgur.com/aOaH0ty.png)
-Dashed
+Caravel
---------
-Dashed's main goal is to make it easy to slice, dice and visualize data.
+Caravel's main goal is to make it easy to slice, dice and visualize data.
It empowers its user to perform **analytics at the speed of thought**.
-Dashed provides:
+Caravel provides:
* A quick way to intuitively visualize datasets
* Create and share interactive dashboards
* A rich set of visualizations to analyze your data, as well as a flexible
@@ -40,14 +40,14 @@ Dashed provides:
displayed in the UI,
by defining which fields should show up in which dropdown and which
aggregation and function (metrics) are made available to the user
-* Deep integration with Druid allows for Dashed to stay blazing fast while
+* Deep integration with Druid allows for Caravel to stay blazing fast while
slicing and dicing large, realtime datasets
Database Support
----------------
-Dashed was originally designed on to of Druid.io, but quickly broadened
+Caravel was originally designed on to of Druid.io, but quickly broadened
its scope to support other databases through the use of SqlAlchemy, a Python
ORM that is compatible with
[most common databases](http://docs.sqlalchemy.org/en/rel_1_0/core/engines.html).
@@ -68,36 +68,36 @@ power analytic dashboards and applications.*
Installation
------------
-Dashed is currently only tested using Python 2.7.*. Python 3 support is
+Caravel is currently only tested using Python 2.7.*. Python 3 support is
on the roadmap, Python 2.6 won't be supported.
-Follow these few simple steps to install Dashed.
+Follow these few simple steps to install Caravel.
```
-# Install dashed
-pip install dashed
+# Install caravel
+pip install caravel
# Create an admin user
-fabmanager create-admin --app dashed
+fabmanager create-admin --app caravel
# Initialize the database
-dashed db upgrade
+caravel db upgrade
# Create default roles and permissions
-dashed init
+caravel init
# Load some data to play with
-dashed load_examples
+caravel load_examples
# Start the development web server
-dashed runserver -d
+caravel runserver -d
```
After installation, you should be able to point your browser to the right
hostname:port [http://localhost:8088](http://localhost:8088), login using
the credential you entered while creating the admin account, and navigate to
`Menu -> Admin -> Refresh Metadata`. This action should bring in all of
-your datasources for Dashed to be aware of, and they should show up in
+your datasources for Caravel to be aware of, and they should show up in
`Menu -> Datasources`, from where you can start playing with your data!
Configuration
@@ -134,14 +134,14 @@ More screenshots
Related Links
-------------
-* [Dashed Google Group] (https://groups.google.com/forum/#!forum/airbnb_dashed)
-* [Gitter (live chat) Channel](https://gitter.im/airbnb/dashed)
+* [Caravel Google Group] (https://groups.google.com/forum/#!forum/airbnb_caravel)
+* [Gitter (live chat) Channel](https://gitter.im/airbnb/caravel)
Tip of the Hat
--------------
-Dashed would not be possible without these great frameworks / libs
+Caravel would not be possible without these great frameworks / libs
* Flask App Builder - Allowing us to focus on building the app quickly while
getting the foundation for free
@@ -153,4 +153,4 @@ getting the foundation for free
Contributing
------------
-Interested in contributing? Casual hacking? Check out [Contributing.MD](https://github.com/airbnb/dashed/blob/master/CONTRIBUTING.md)
+Interested in contributing? Casual hacking? Check out [Contributing.MD](https://github.com/airbnb/caravel/blob/master/CONTRIBUTING.md)
diff --git a/TODO.md b/TODO.md
index e753f4a5e174c..25ffabfb4c324 100644
--- a/TODO.md
+++ b/TODO.md
@@ -1,5 +1,5 @@
# TODO
-List of TODO items for Dashed
+List of TODO items for Caravel
## Important
* **Getting proper JS testing:** unit tests on the Python side are pretty
@@ -7,7 +7,7 @@ List of TODO items for Dashed
testing all the ajax-type calls
* **Viz Plugins:** Allow people to define and share visualization plugins.
ideally one would only need to drop in a set of files in a folder and
- Dashed would discover and expose the plugins
+ Caravel would discover and expose the plugins
## Features
* **Stars:** set dashboards, slices and datasets as favorites
diff --git a/alembic.ini b/alembic.ini
index 6d12b48b5e907..b5a16536033e6 100644
--- a/alembic.ini
+++ b/alembic.ini
@@ -29,7 +29,7 @@ script_location = migrations
# are written from script.py.mako
# output_encoding = utf-8
-sqlalchemy.url = scheme://localhost/dashed
+sqlalchemy.url = scheme://localhost/caravel
# Logging configuration
[loggers]
diff --git a/caravel/__init__.py b/caravel/__init__.py
index 6dfc8b2aa3ead..c3517f0c29b66 100644
--- a/caravel/__init__.py
+++ b/caravel/__init__.py
@@ -10,7 +10,7 @@
APP_DIR = os.path.dirname(__file__)
-CONFIG_MODULE = os.environ.get('DASHED_CONFIG', 'dashed.config')
+CONFIG_MODULE = os.environ.get('CARAVEL_CONFIG', 'caravel.config')
# Logging configuration
logging.basicConfig(format='%(asctime)s:%(levelname)s:%(name)s:%(message)s')
@@ -28,15 +28,15 @@
class MyIndexView(IndexView):
@expose('/')
def index(self):
- return redirect('/dashed/welcome')
+ return redirect('/caravel/welcome')
appbuilder = AppBuilder(
app, db.session,
- base_template='dashed/base.html',
+ base_template='caravel/base.html',
indexview=MyIndexView,
security_manager_class=app.config.get("CUSTOM_SECURITY_MANAGER"))
sm = appbuilder.sm
get_session = appbuilder.get_session
-from dashed import config, views # noqa
+from caravel import config, views # noqa
diff --git a/caravel/assets/javascripts/dashboard.js b/caravel/assets/javascripts/dashboard.js
index 57dccfd6dbdf8..e3ef7d5457f84 100644
--- a/caravel/assets/javascripts/dashboard.js
+++ b/caravel/assets/javascripts/dashboard.js
@@ -1,6 +1,6 @@
var $ = window.$ = require('jquery');
var jQuery = window.jQuery = $;
-var px = require('./modules/dashed.js');
+var px = require('./modules/caravel.js');
var d3 = require('d3');
require('bootstrap');
@@ -8,7 +8,7 @@ var ace = require('brace');
require('brace/mode/css');
require('brace/theme/crimson_editor');
-require('./dashed-select2.js');
+require('./caravel-select2.js');
require('../node_modules/gridster/dist/jquery.gridster.min.css');
require('../node_modules/gridster/dist/jquery.gridster.min.js');
@@ -137,7 +137,7 @@ var Dashboard = function (dashboardData) {
};
$.ajax({
type: "POST",
- url: '/dashed/save_dash/' + dashboard.id + '/',
+ url: '/caravel/save_dash/' + dashboard.id + '/',
data: {
data: JSON.stringify(data)
},
diff --git a/caravel/assets/javascripts/explore.js b/caravel/assets/javascripts/explore.js
index 343f5309995d0..ce6f911730f28 100644
--- a/caravel/assets/javascripts/explore.js
+++ b/caravel/assets/javascripts/explore.js
@@ -5,13 +5,13 @@
// js
var $ = window.$ = require('jquery');
var jQuery = window.jQuery = $;
-var px = require('./modules/dashed.js');
+var px = require('./modules/caravel.js');
require('jquery-ui');
$.widget.bridge('uitooltip', $.ui.tooltip); // Shutting down jq-ui tooltips
require('bootstrap');
-require('./dashed-select2.js');
+require('./caravel-select2.js');
require('../node_modules/bootstrap-toggle/js/bootstrap-toggle.min.js');
diff --git a/caravel/assets/javascripts/index.jsx b/caravel/assets/javascripts/index.jsx
index d12ac3d590d78..c84528c8efec6 100644
--- a/caravel/assets/javascripts/index.jsx
+++ b/caravel/assets/javascripts/index.jsx
@@ -8,7 +8,7 @@ class App extends React.Component {
render () {
return (
-
Dashed
+
Caravel
Extensible visualization tool for exploring data from any database.
);
diff --git a/caravel/assets/javascripts/modules/caravel.js b/caravel/assets/javascripts/modules/caravel.js
index 3b2ab4f216a36..acf2ab0ec97cf 100644
--- a/caravel/assets/javascripts/modules/caravel.js
+++ b/caravel/assets/javascripts/modules/caravel.js
@@ -2,7 +2,7 @@ var $ = require('jquery');
var jQuery = $;
var d3 = require('d3');
-require('../../stylesheets/dashed.css');
+require('../../stylesheets/caravel.css');
// vis sources
var sourceMap = {
@@ -46,7 +46,7 @@ var color = function () {
// Color factory
var seen = {};
return function (s) {
- // next line is for dashed series that should have the same color
+ // next line is for caravel series that should have the same color
s = s.replace('---', '');
if (seen[s] === undefined) {
seen[s] = Object.keys(seen).length;
@@ -133,7 +133,7 @@ var px = (function () {
}
function initFavStars() {
- var baseUrl = '/dashed/favstar/';
+ var baseUrl = '/caravel/favstar/';
// Init star behavihor for favorite
function show() {
if ($(this).hasClass('selected')) {
diff --git a/caravel/assets/javascripts/sql.js b/caravel/assets/javascripts/sql.js
index 7b2fb27c505a1..40e3145a39f28 100644
--- a/caravel/assets/javascripts/sql.js
+++ b/caravel/assets/javascripts/sql.js
@@ -36,7 +36,7 @@ $(document).ready(function () {
function showTableMetadata() {
$(".metadata").load(
- '/dashed/table/' + database_id + '/' + $("#dbtable").val() + '/');
+ '/caravel/table/' + database_id + '/' + $("#dbtable").val() + '/');
}
$("#dbtable").on("change", showTableMetadata);
showTableMetadata();
@@ -46,7 +46,7 @@ $(document).ready(function () {
$(".sqlcontent").show();
function selectStarOnClick() {
- $.ajax('/dashed/select_star/' + database_id + '/' + $("#dbtable").val() + '/')
+ $.ajax('/caravel/select_star/' + database_id + '/' + $("#dbtable").val() + '/')
.done(function (msg) {
editor.setValue(msg);
});
@@ -67,7 +67,7 @@ $(document).ready(function () {
history.pushState({}, document.title, '?sql=' + encodeURIComponent(editor.getValue()));
$.ajax({
type: "POST",
- url: '/dashed/runsql/',
+ url: '/caravel/runsql/',
data: {
data: JSON.stringify({
database_id: $('#database_id').val(),
diff --git a/caravel/assets/javascripts/standalone.js b/caravel/assets/javascripts/standalone.js
index 9110581f4e661..efc9f5a90f3c2 100644
--- a/caravel/assets/javascripts/standalone.js
+++ b/caravel/assets/javascripts/standalone.js
@@ -1,6 +1,6 @@
var $ = window.$ = require('jquery');
var jQuery = window.jQuery = $;
-var px = require('./modules/dashed.js');
+var px = require('./modules/caravel.js');
require('bootstrap');
diff --git a/caravel/assets/javascripts/welcome.js b/caravel/assets/javascripts/welcome.js
index 6d0db5d80a950..90841313a21c9 100644
--- a/caravel/assets/javascripts/welcome.js
+++ b/caravel/assets/javascripts/welcome.js
@@ -1,7 +1,7 @@
var $ = window.$ = require('jquery');
var jQuery = window.jQuery = $;
-require('../stylesheets/dashed.css');
+require('../stylesheets/caravel.css');
require('../stylesheets/welcome.css');
require('bootstrap');
require('datatables');
@@ -37,7 +37,7 @@ $(document).ready(function () {
cal.init({
start: new Date().setFullYear(new Date().getFullYear() - 1),
range: 13,
- data: '/dashed/activity_per_day',
+ data: '/caravel/activity_per_day',
domain: "month",
subDomain: "day",
itemName: "action",
diff --git a/caravel/assets/package.json b/caravel/assets/package.json
index 606bec806f520..fec1f77945d1c 100644
--- a/caravel/assets/package.json
+++ b/caravel/assets/package.json
@@ -1,5 +1,5 @@
{
- "name": "dashed",
+ "name": "caravel",
"version": "0.1.0",
"description": "Any database to any visualization",
"directories": {
@@ -15,7 +15,7 @@
},
"repository": {
"type": "git",
- "url": "git+https://github.com/mistercrunch/dashed.git"
+ "url": "git+https://github.com/mistercrunch/caravel.git"
},
"keywords": [
"big",
@@ -31,9 +31,9 @@
],
"author": "Airbnb",
"bugs": {
- "url": "https://github.com/mistercrunch/dashed/issues"
+ "url": "https://github.com/mistercrunch/caravel/issues"
},
- "homepage": "https://github.com/mistercrunch/dashed#readme",
+ "homepage": "https://github.com/mistercrunch/caravel#readme",
"dependencies": {
"babel-loader": "^6.2.1",
"babel-polyfill": "^6.3.14",
diff --git a/caravel/assets/visualizations/big_number.js b/caravel/assets/visualizations/big_number.js
index 38c22aa89571e..a9d2b6331b4e3 100644
--- a/caravel/assets/visualizations/big_number.js
+++ b/caravel/assets/visualizations/big_number.js
@@ -4,7 +4,7 @@ var d3 = window.d3 || require('d3');
// CSS
require('./big_number.css');
-var px = require('../javascripts/modules/dashed.js');
+var px = require('../javascripts/modules/caravel.js');
function bigNumberVis(slice) {
var div = d3.select(slice.selector);
diff --git a/caravel/assets/visualizations/filter_box.css b/caravel/assets/visualizations/filter_box.css
index 15697836166da..efe69c5381858 100644
--- a/caravel/assets/visualizations/filter_box.css
+++ b/caravel/assets/visualizations/filter_box.css
@@ -1,6 +1,6 @@
.select2-highlighted > .filter_box {
background-color: transparent;
- border: 1px dashed black;
+ border: 1px caravel black;
}
.dashboard .filter_box .slice_container > div {
diff --git a/caravel/assets/visualizations/filter_box.js b/caravel/assets/visualizations/filter_box.js
index f820549610ca8..df6cf99b15431 100644
--- a/caravel/assets/visualizations/filter_box.js
+++ b/caravel/assets/visualizations/filter_box.js
@@ -5,7 +5,7 @@ var d3 = window.d3 || require('d3');
// CSS
require('./filter_box.css');
-require('../javascripts/dashed-select2.js');
+require('../javascripts/caravel-select2.js');
function filterBox(slice) {
var filtersObj = {};
diff --git a/caravel/assets/visualizations/heatmap.js b/caravel/assets/visualizations/heatmap.js
index 6bc688fc8c512..c9100e2c0f917 100644
--- a/caravel/assets/visualizations/heatmap.js
+++ b/caravel/assets/visualizations/heatmap.js
@@ -1,6 +1,6 @@
// JS
var $ = window.$ || require('jquery');
-var px = window.px || require('../javascripts/modules/dashed.js');
+var px = window.px || require('../javascripts/modules/caravel.js');
var d3 = require('d3');
d3.tip = require('d3-tip'); //using window.d3 doesn't capture events properly bc of multiple instances
diff --git a/caravel/assets/visualizations/nvd3_vis.css b/caravel/assets/visualizations/nvd3_vis.css
index 80c452b4d6f7f..0d63c69ba2617 100644
--- a/caravel/assets/visualizations/nvd3_vis.css
+++ b/caravel/assets/visualizations/nvd3_vis.css
@@ -1,4 +1,4 @@
-g.dashed path {
+g.caravel path {
stroke-dasharray: 5, 5;
}
diff --git a/caravel/assets/visualizations/nvd3_vis.js b/caravel/assets/visualizations/nvd3_vis.js
index f7c61f6e863b0..db4099456b05c 100644
--- a/caravel/assets/visualizations/nvd3_vis.js
+++ b/caravel/assets/visualizations/nvd3_vis.js
@@ -1,7 +1,7 @@
// JS
var $ = window.$ || require('jquery');
var d3 = window.d3 || require('d3');
-var px = window.px || require('../javascripts/modules/dashed.js');
+var px = window.px || require('../javascripts/modules/caravel.js');
var nv = require('nvd3');
// CSS
diff --git a/caravel/assets/visualizations/sankey.js b/caravel/assets/visualizations/sankey.js
index 018ffe57db16c..1272f59fc0821 100644
--- a/caravel/assets/visualizations/sankey.js
+++ b/caravel/assets/visualizations/sankey.js
@@ -1,7 +1,7 @@
// CSS
require('./sankey.css');
// JS
-var px = window.px || require('../javascripts/modules/dashed.js');
+var px = window.px || require('../javascripts/modules/caravel.js');
var d3 = window.d3 || require('d3');
d3.sankey = require('d3-sankey').sankey;
diff --git a/caravel/assets/visualizations/sunburst.js b/caravel/assets/visualizations/sunburst.js
index 8246454c2428e..f5ad84b0c4787 100644
--- a/caravel/assets/visualizations/sunburst.js
+++ b/caravel/assets/visualizations/sunburst.js
@@ -1,5 +1,5 @@
var d3 = window.d3 || require('d3');
-var px = require('../javascripts/modules/dashed.js');
+var px = require('../javascripts/modules/caravel.js');
var wrapSvgText = require('../javascripts/modules/utils.js').wrapSvgText;
require('./sunburst.css');
diff --git a/caravel/assets/visualizations/word_cloud.js b/caravel/assets/visualizations/word_cloud.js
index a83442ba529e0..7efd7c03193c7 100644
--- a/caravel/assets/visualizations/word_cloud.js
+++ b/caravel/assets/visualizations/word_cloud.js
@@ -1,4 +1,4 @@
-var px = window.px || require('../javascripts/modules/dashed.js');
+var px = window.px || require('../javascripts/modules/caravel.js');
var d3 = window.d3 || require('d3');
var cloudLayout = require('d3-cloud');
diff --git a/caravel/bin/caravel b/caravel/bin/caravel
index 9640a49c5c102..5400b949577cb 100755
--- a/caravel/bin/caravel
+++ b/caravel/bin/caravel
@@ -5,11 +5,11 @@ import logging
from subprocess import Popen
from flask.ext.script import Manager
-from dashed import app
+from caravel import app
from flask.ext.migrate import MigrateCommand
-import dashed
-from dashed import db
-from dashed import data, utils
+import caravel
+from caravel import db
+from caravel import data, utils
config = app.config
@@ -21,16 +21,16 @@ manager.add_command('db', MigrateCommand)
'-d', '--debug', action='store_true',
help="Start the web server in debug mode")
@manager.option(
- '-p', '--port', default=config.get("DASHED_WEBSERVER_PORT"),
+ '-p', '--port', default=config.get("CARAVEL_WEBSERVER_PORT"),
help="Specify the port on which to run the web server")
@manager.option(
- '-w', '--workers', default=config.get("DASHED_WORKERS", 16),
+ '-w', '--workers', default=config.get("CARAVEL_WORKERS", 16),
help="Number of gunicorn web server workers to fire up")
@manager.option(
- '-t', '--timeout', default=config.get("DASHED_WEBSERVER_TIMEOUT"),
+ '-t', '--timeout', default=config.get("CARAVEL_WEBSERVER_TIMEOUT"),
help="Specify the timeout (seconds) for the gunicorn web server")
def runserver(debug, port, timeout, workers):
- """Starts a Dashed web server"""
+ """Starts a Caravel web server"""
debug = debug or config.get("DEBUG")
if debug:
app.run(
@@ -43,14 +43,14 @@ def runserver(debug, port, timeout, workers):
"-w {workers} "
"--timeout {timeout} "
"-b 0.0.0.0:{port} "
- "dashed:app").format(**locals())
+ "caravel:app").format(**locals())
print("Starting server with command: " + cmd)
Popen(cmd, shell=True).wait()
@manager.command
def init():
- """Inits the Dashed application"""
- utils.init(dashed)
+ """Inits the Caravel application"""
+ utils.init(caravel)
@manager.option(
'-s', '--sample', action='store_true',
@@ -74,7 +74,7 @@ def load_examples(sample):
def refresh_druid():
"""Refresh all druid datasources"""
session = db.session()
- from dashed import models
+ from caravel import models
for cluster in session.query(models.DruidCluster).all():
try:
cluster.refresh_datasources()
diff --git a/caravel/config.py b/caravel/config.py
index 31a79904350a6..01876998da82c 100644
--- a/caravel/config.py
+++ b/caravel/config.py
@@ -1,4 +1,4 @@
-"""The main config file for Dashed
+"""The main config file for Caravel
All configuration in this file can be overridden by providing a local_config
in your PYTHONPATH as there is a ``from local_config import *``
@@ -12,13 +12,13 @@
# ---------------------------------------------------------
-# Dashed specifix config
+# Caravel specifix config
# ---------------------------------------------------------
ROW_LIMIT = 50000
WEBSERVER_THREADS = 8
-DASHED_WEBSERVER_PORT = 8088
-DASHED_WEBSERVER_TIMEOUT = 60
+CARAVEL_WEBSERVER_PORT = 8088
+CARAVEL_WEBSERVER_TIMEOUT = 60
CUSTOM_SECURITY_MANAGER = None
# ---------------------------------------------------------
@@ -27,7 +27,7 @@
SECRET_KEY = '\2\1thisismyscretkey\1\2\e\y\y\h' # noqa
# The SQLAlchemy connection string.
-SQLALCHEMY_DATABASE_URI = 'sqlite:////tmp/dashed.db'
+SQLALCHEMY_DATABASE_URI = 'sqlite:////tmp/caravel.db'
# SQLALCHEMY_DATABASE_URI = 'mysql://myapp@localhost/myapp'
# SQLALCHEMY_DATABASE_URI = 'postgresql://root:password@localhost/myapp'
@@ -44,7 +44,7 @@
# GLOBALS FOR APP Builder
# ------------------------------
# Uncomment to setup Your App name
-APP_NAME = "Dashed"
+APP_NAME = "Caravel"
# Uncomment to setup Setup an App icon
# APP_ICON = "/static/img/something.png"
@@ -116,6 +116,6 @@
CACHE_CONFIG = {'CACHE_TYPE': 'null'}
try:
- from dashed_config import * # noqa
+ from caravel_config import * # noqa
except Exception:
pass
diff --git a/caravel/data/__init__.py b/caravel/data/__init__.py
index 9fd40e12e5f7e..7d1f06994890d 100644
--- a/caravel/data/__init__.py
+++ b/caravel/data/__init__.py
@@ -1,4 +1,4 @@
-"""Loads datasets, dashboards and slices in a new dashed instance"""
+"""Loads datasets, dashboards and slices in a new caravel instance"""
import gzip
import json
@@ -8,7 +8,7 @@
import pandas as pd
from sqlalchemy import String, DateTime, Float
-from dashed import app, db, models, utils
+from caravel import app, db, models, utils
# Shortcuts
DB = models.Database
diff --git a/caravel/forms.py b/caravel/forms.py
index c4df90b405900..fe7146ba6ed72 100644
--- a/caravel/forms.py
+++ b/caravel/forms.py
@@ -5,7 +5,7 @@
BooleanField, IntegerField, HiddenField)
from wtforms import validators, widgets
from copy import copy
-from dashed import app
+from caravel import app
from collections import OrderedDict
config = app.config
@@ -73,7 +73,7 @@ def pre_validate(self, form):
class OmgWtForm(Form):
- """Dashedification of the WTForm Form object"""
+ """Caravelification of the WTForm Form object"""
fieldsets = {}
css_classes = dict()
@@ -101,13 +101,13 @@ class FormFactory(object):
def __init__(self, viz):
self.viz = viz
- from dashed.viz import viz_types
+ from caravel.viz import viz_types
viz = self.viz
datasource = viz.datasource
default_metric = datasource.metrics_combo[0][0]
default_groupby = datasource.groupby_column_names[0]
group_by_choices = [(s, s) for s in datasource.groupby_column_names]
- # Pool of all the fields that can be used in Dashed
+ # Pool of all the fields that can be used in Caravel
self.field_dict = {
'viz_type': SelectField(
'Viz',
@@ -180,7 +180,7 @@ def __init__(self, viz):
('cca3', 'code ISO 3166-1 alpha-3 (cca3)'),
),
description=(
- "The country code standard that Dashed should expect "
+ "The country code standard that Caravel should expect "
"to find in the [country] column")),
'groupby': SelectMultipleSortableField(
'Group by',
@@ -581,7 +581,7 @@ def add_to_form(attrs):
"applies a date transformation to alter "
"your time column and defines a new time granularity."
"The options here are defined on a per database "
- "engine basis in the Dashed source code"))
+ "engine basis in the Caravel source code"))
add_to_form(time_fields)
field_css_classes['time_grain_sqla'] = ['form-control', 'select2']
field_css_classes['granularity_sqla'] = ['form-control', 'select2']
diff --git a/caravel/models.py b/caravel/models.py
index 4142d8edc8216..e8973c4891606 100644
--- a/caravel/models.py
+++ b/caravel/models.py
@@ -1,4 +1,4 @@
-"""A collection of ORM sqlalchemy models for Dashed"""
+"""A collection of ORM sqlalchemy models for Caravel"""
from copy import deepcopy, copy
from collections import namedtuple
@@ -29,8 +29,8 @@
from sqlalchemy.sql.elements import ColumnClause
from sqlalchemy_utils import EncryptedType
-from dashed import app, db, get_session, utils
-from dashed.viz import viz_types
+from caravel import app, db, get_session, utils
+from caravel.viz import viz_types
from sqlalchemy.ext.declarative import declared_attr
config = app.config
@@ -186,7 +186,7 @@ def slice_url(self):
slice_params['slice_name'] = self.slice_name
from werkzeug.urls import Href
href = Href(
- "/dashed/explore/{self.datasource_type}/"
+ "/caravel/explore/{self.datasource_type}/"
"{self.datasource_id}/".format(self=self))
return href(slice_params)
@@ -229,7 +229,7 @@ def __repr__(self):
@property
def url(self):
- return "/dashed/dashboard/{}/".format(self.slug or self.id)
+ return "/caravel/dashboard/{}/".format(self.slug or self.id)
@property
def metadata_dejson(self):
@@ -352,7 +352,7 @@ def sqlalchemy_uri_decrypted(self):
@property
def sql_url(self):
- return '/dashed/sql/{}/'.format(self.id)
+ return '/caravel/sql/{}/'.format(self.id)
@property
def sql_link(self):
@@ -437,7 +437,7 @@ def name(self):
@property
def table_link(self):
- url = "/dashed/explore/{self.type}/{self.id}/".format(self=self)
+ url = "/caravel/explore/{self.type}/{self.id}/".format(self=self)
return '{self.table_name}'.format(
url=url, self=self)
@@ -848,7 +848,7 @@ def __repr__(self):
@property
def datasource_link(self):
- url = "/dashed/explore/{self.type}/{self.id}/".format(self=self)
+ url = "/caravel/explore/{self.type}/{self.id}/".format(self=self)
return '{self.datasource_name}'.format(
url=url, self=self)
@@ -884,7 +884,7 @@ def generate_metrics(self):
@classmethod
def sync_to_db(cls, name, cluster):
- """Fetches metadata for that datasource and merges the Dashed db"""
+ """Fetches metadata for that datasource and merges the Caravel db"""
print("Syncing Druid datasource [{}]".format(name))
session = get_session()
datasource = session.query(cls).filter_by(datasource_name=name).first()
@@ -1074,7 +1074,7 @@ def query(
class Log(Model):
- """ORM object used to log Dashed actions to the database"""
+ """ORM object used to log Caravel actions to the database"""
__tablename__ = 'logs'
diff --git a/caravel/templates/appbuilder/general/widgets/list.html b/caravel/templates/appbuilder/general/widgets/list.html
index b0c28eda927fc..51c958772c28c 100644
--- a/caravel/templates/appbuilder/general/widgets/list.html
+++ b/caravel/templates/appbuilder/general/widgets/list.html
@@ -64,7 +64,7 @@
{{'checked' if item[value] }}
name="{{ '{}__{}'.format(pk, value) }}"
id="{{ '{}__{}'.format(pk, value) }}"
- onchange="$.get('/dashed/checkbox/{{ modelview_name }}/{{ pk }}/{{ value }}/' + $('#{{ '{}__{}'.format(pk, value) }}')[0].checked ) + '/';">
+ onchange="$.get('/caravel/checkbox/{{ modelview_name }}/{{ pk }}/{{ value }}/' + $('#{{ '{}__{}'.format(pk, value) }}')[0].checked ) + '/';">
{% else %}
{{ item[value]|safe }}
{% endif %}
diff --git a/caravel/templates/caravel/base.html b/caravel/templates/caravel/base.html
index 9ac1eef969a52..bab571bbce51f 100644
--- a/caravel/templates/caravel/base.html
+++ b/caravel/templates/caravel/base.html
@@ -2,7 +2,7 @@
{% block head_css %}
-
+
{{super()}}
{% endblock %}
diff --git a/caravel/templates/caravel/dashboard.html b/caravel/templates/caravel/dashboard.html
index a4ff39b42a4b6..9859fc77eb297 100644
--- a/caravel/templates/caravel/dashboard.html
+++ b/caravel/templates/caravel/dashboard.html
@@ -1,4 +1,4 @@
-{% extends "dashed/basic.html" %}
+{% extends "caravel/basic.html" %}
{% block head_js %}
{{ super() }}
diff --git a/caravel/templates/caravel/explore.html b/caravel/templates/caravel/explore.html
index c2519f2464a3c..a8fe55f7e3d2d 100644
--- a/caravel/templates/caravel/explore.html
+++ b/caravel/templates/caravel/explore.html
@@ -1,4 +1,4 @@
-{% extends "dashed/basic.html" %}
+{% extends "caravel/basic.html" %}
{% block title %}
{% if slice %}
diff --git a/caravel/templates/caravel/index.html b/caravel/templates/caravel/index.html
index 71ed52780ee2c..1c82a1df89827 100644
--- a/caravel/templates/caravel/index.html
+++ b/caravel/templates/caravel/index.html
@@ -1,4 +1,4 @@
-{% extends "dashed/basic.html" %}
+{% extends "caravel/basic.html" %}
{% block tail_js %}
{{ super() }}
diff --git a/caravel/templates/caravel/models/database/add.html b/caravel/templates/caravel/models/database/add.html
index 79b6cf6cbcce6..f4388ece38ae5 100644
--- a/caravel/templates/caravel/models/database/add.html
+++ b/caravel/templates/caravel/models/database/add.html
@@ -1,6 +1,6 @@
{% extends "appbuilder/general/model/add.html" %}
-{% import "dashed/models/database/macros.html" as macros %}
+{% import "caravel/models/database/macros.html" as macros %}
{% block tail_js %}
{{ super() }}
{{ macros.testconn() }}
diff --git a/caravel/templates/caravel/models/database/edit.html b/caravel/templates/caravel/models/database/edit.html
index b1db50f2bc630..46a3693bb5456 100644
--- a/caravel/templates/caravel/models/database/edit.html
+++ b/caravel/templates/caravel/models/database/edit.html
@@ -1,6 +1,6 @@
{% extends "appbuilder/general/model/edit.html" %}
-{% import "dashed/models/database/macros.html" as macros %}
+{% import "caravel/models/database/macros.html" as macros %}
{% block tail_js %}
{{ super() }}
{{ macros.testconn() }}
diff --git a/caravel/templates/caravel/models/database/macros.html b/caravel/templates/caravel/models/database/macros.html
index dac8b6d50f34c..c066870613bad 100644
--- a/caravel/templates/caravel/models/database/macros.html
+++ b/caravel/templates/caravel/models/database/macros.html
@@ -3,7 +3,7 @@
$("#sqlalchemy_uri").parent()
.append('');
$("#testconn").click(function() {
- var url = "/dashed/testconn";
+ var url = "/caravel/testconn";
$.ajax({
method: "POST",
url: url,
diff --git a/caravel/templates/caravel/no_data.html b/caravel/templates/caravel/no_data.html
index a8de807a68eb2..a846e9b8e50a4 100644
--- a/caravel/templates/caravel/no_data.html
+++ b/caravel/templates/caravel/no_data.html
@@ -1,4 +1,4 @@
-{% extends "dashed/datasource.html" %}
+{% extends "caravel/datasource.html" %}
{% block viz %}
No data: review your incantations.
diff --git a/caravel/templates/caravel/sql.html b/caravel/templates/caravel/sql.html
index fd660eac35d31..683de3bcc4357 100644
--- a/caravel/templates/caravel/sql.html
+++ b/caravel/templates/caravel/sql.html
@@ -1,4 +1,4 @@
-{% extends "dashed/basic.html" %}
+{% extends "caravel/basic.html" %}
{% block head_css %}
{{super()}}
diff --git a/caravel/templates/caravel/standalone.html b/caravel/templates/caravel/standalone.html
index 319aad13c49a5..d159fc0fef770 100644
--- a/caravel/templates/caravel/standalone.html
+++ b/caravel/templates/caravel/standalone.html
@@ -1,7 +1,7 @@