|
@@ -17,7 +17,7 @@
|
|
|
|
|
|
|
|
import logging
|
|
import logging
|
|
|
|
|
|
|
|
-from django.http import QueryDict
|
|
|
|
|
|
|
+from django.http import QueryDict, HttpResponse
|
|
|
from rest_framework.decorators import api_view
|
|
from rest_framework.decorators import api_view
|
|
|
|
|
|
|
|
from filebrowser import views as filebrowser_views
|
|
from filebrowser import views as filebrowser_views
|
|
@@ -29,6 +29,8 @@ from desktop import api2 as desktop_api
|
|
|
from desktop.auth.backend import rewrite_user
|
|
from desktop.auth.backend import rewrite_user
|
|
|
from desktop.lib import fsmanager
|
|
from desktop.lib import fsmanager
|
|
|
|
|
|
|
|
|
|
+from beeswax import api as beeswax_api
|
|
|
|
|
+
|
|
|
|
|
|
|
|
LOG = logging.getLogger(__name__)
|
|
LOG = logging.getLogger(__name__)
|
|
|
|
|
|
|
@@ -159,6 +161,16 @@ def get_history(request):
|
|
|
django_request = get_django_request(request)
|
|
django_request = get_django_request(request)
|
|
|
return notebook_api.get_history(django_request)
|
|
return notebook_api.get_history(django_request)
|
|
|
|
|
|
|
|
|
|
+@api_view(["POST"])
|
|
|
|
|
+def analyze_table(request, dialect, database, table, columns=None):
|
|
|
|
|
+ django_request = get_django_request(request)
|
|
|
|
|
+
|
|
|
|
|
+ if dialect in ["impala", "beeswax"]:
|
|
|
|
|
+ return beeswax_api.analyze_table(django_request, database, table, columns=None)
|
|
|
|
|
+ else:
|
|
|
|
|
+ return HttpResponse(status=204)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
# Storage API
|
|
# Storage API
|
|
|
|
|
|
|
|
@api_view(["GET"])
|
|
@api_view(["GET"])
|
|
@@ -188,6 +200,7 @@ def guess_field_types(request):
|
|
|
django_request = get_django_request(request)
|
|
django_request = get_django_request(request)
|
|
|
return indexer_api3.guess_field_types(django_request)
|
|
return indexer_api3.guess_field_types(django_request)
|
|
|
|
|
|
|
|
|
|
+
|
|
|
# Utils
|
|
# Utils
|
|
|
|
|
|
|
|
def _get_interpreter_from_dialect(dialect, user):
|
|
def _get_interpreter_from_dialect(dialect, user):
|