diff --git a/panoramix/data/__init__.py b/panoramix/data/__init__.py new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/panoramix/migrations/__init__.py b/panoramix/migrations/__init__.py new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/panoramix/static/servers.jpg b/panoramix/static/servers.jpg new file mode 100644 index 0000000000000..2d4604b6bdb56 Binary files /dev/null and b/panoramix/static/servers.jpg differ diff --git a/panoramix/templates/panoramix/models/database/add.html b/panoramix/templates/panoramix/models/database/add.html new file mode 100644 index 0000000000000..eede9ae0ac6da --- /dev/null +++ b/panoramix/templates/panoramix/models/database/add.html @@ -0,0 +1,7 @@ +{% extends "appbuilder/general/model/add.html" %} + +{% import "panoramix/models/database/macros.html" as macros %} +{% block tail_js %} + {{ super() }} + {{ macros.testconn() }} +{% endblock %} diff --git a/panoramix/templates/panoramix/models/database/edit.html b/panoramix/templates/panoramix/models/database/edit.html new file mode 100644 index 0000000000000..c32517bee7cb8 --- /dev/null +++ b/panoramix/templates/panoramix/models/database/edit.html @@ -0,0 +1,7 @@ +{% extends "appbuilder/general/model/edit.html" %} + +{% import "panoramix/models/database/macros.html" as macros %} +{% block tail_js %} + {{ super() }} + {{ macros.testconn() }} +{% endblock %} diff --git a/panoramix/templates/panoramix/models/database/macros.html b/panoramix/templates/panoramix/models/database/macros.html new file mode 100644 index 0000000000000..877b3188886bb --- /dev/null +++ b/panoramix/templates/panoramix/models/database/macros.html @@ -0,0 +1,19 @@ +{% macro testconn() %} + +{% endmacro %} diff --git a/panoramix/views.py b/panoramix/views.py index f021d98389a67..217f7a8d21fc7 100644 --- a/panoramix/views.py +++ b/panoramix/views.py @@ -3,12 +3,13 @@ import logging from flask import request, redirect, flash, Response -from flask.ext.appbuilder.models.sqla.interface import SQLAInterface from flask.ext.appbuilder import ModelView, CompactCRUDMixin, BaseView, expose +from flask.ext.appbuilder.actions import action +from flask.ext.appbuilder.models.sqla.interface import SQLAInterface from flask.ext.appbuilder.security.decorators import has_access from pydruid.client import doublesum +from sqlalchemy import create_engine from wtforms.validators import ValidationError -from flask.ext.appbuilder.actions import action from panoramix import appbuilder, db, models, viz, utils, app, config @@ -91,6 +92,8 @@ class DatabaseView(ModelView, DeleteMixin): list_columns = ['database_name'] add_columns = ['database_name', 'sqlalchemy_uri'] edit_columns = add_columns + add_template = "panoramix/models/database/add.html" + edit_template = "panoramix/models/database/edit.html" appbuilder.add_view( DatabaseView, @@ -317,7 +320,19 @@ def save_dash(self, dashboard_id): return "SUCCESS" @has_access - @expose("/save/") + @expose("/testconn/") + def testconn(self): + try: + db = create_engine(request.args.get('uri')) + for i in range(15): + request.args.get('uri') + db.connect() + return "SUCCESS" + except Exception as e: + return Response( + str(e), + status=500, + mimetype="application/json") @has_access @expose("/dashboard//")