diff --git a/caravel/__init__.py b/caravel/__init__.py index 72999097b8ea6..34732c0efbf85 100644 --- a/caravel/__init__.py +++ b/caravel/__init__.py @@ -46,6 +46,10 @@ backupCount=app.config.get('BACKUP_COUNT')) logging.getLogger().addHandler(handler) +if app.config.get('ENABLE_CORS'): + from flask.ext.cors import CORS + CORS(app, **app.config.get('CORS_OPTIONS')) + class MyIndexView(IndexView): @expose('/') diff --git a/caravel/config.py b/caravel/config.py index e20c4ef976862..93934724a18e5 100644 --- a/caravel/config.py +++ b/caravel/config.py @@ -132,6 +132,10 @@ CACHE_DEFAULT_TIMEOUT = None CACHE_CONFIG = {'CACHE_TYPE': 'null'} +# CORS Options +ENABLE_CORS = False +CORS_OPTIONS = {} + # --------------------------------------------------- # List of viz_types not allowed in your environment diff --git a/docs/installation.rst b/docs/installation.rst index 314e1f0eccc15..0de9a287b983e 100644 --- a/docs/installation.rst +++ b/docs/installation.rst @@ -28,7 +28,7 @@ the required dependencies are installed: :: For **Fedora** and **RHEL-derivatives**, the following command will ensure that the required dependencies are installed: :: - + sudo yum upgrade python-setuptools sudo yum install gcc libffi-devel python-devel python-pip python-wheel openssl-devel @@ -228,6 +228,20 @@ Note that you can run the ``caravel refresh_druid`` command to refresh the metadata from your Druid cluster(s) +CORS +----- + +The extra CORS Dependency must be installed: + + caravel[cors] + + +The following keys in `caravel_config.py` can be specified to configure CORS: + + +* ``ENABLE_CORS``: Must be set to True in order to enable CORS +* ``CORS_OPTIONS``: options passed to Flask-CORS (`documentation `) + Upgrading --------- diff --git a/setup.py b/setup.py index 817ce2dbedda0..3ede2045c4032 100644 --- a/setup.py +++ b/setup.py @@ -39,6 +39,9 @@ 'sqlparse>=0.1.16, <0.2.0', 'werkzeug>=0.11.2, <0.12.0', ], + extras_require={ + 'cors': ['Flask-Cors>=2.0.0'], + }, tests_require=['coverage'], author='Maxime Beauchemin', author_email='maximebeauchemin@gmail.com',