Explorar o código

[notebook] Catch import errors for jaydebeapi module

Jenny Kim %!s(int64=10) %!d(string=hai) anos
pai
achega
9b6158d197
Modificáronse 1 ficheiros con 10 adicións e 2 borrados
  1. 10 2
      desktop/libs/notebook/src/notebook/connectors/jdbc.py

+ 10 - 2
desktop/libs/notebook/src/notebook/connectors/jdbc.py

@@ -17,6 +17,7 @@
 
 import logging
 import re
+import sys
 
 from desktop.lib.exceptions_renderable import PopupException
 from desktop.lib.i18n import force_unicode
@@ -24,11 +25,14 @@ from django.utils.translation import ugettext as _
 
 from notebook.connectors.base import Api, QueryError
 
-import jaydebeapi
-
 
 LOG = logging.getLogger(__name__)
 
+try:
+  import jaydebeapi
+except ImportError, e:
+  LOG.exception('Failed to import jaydebeapi')
+
 
 def query_error_handler(func):
   def decorator(*args, **kwargs):
@@ -50,6 +54,9 @@ class JDBCApi(Api):
   # impersonation / prompting for username/password
   @query_error_handler
   def execute(self, notebook, snippet):
+    if 'jaydebeapi' not in sys.modules:
+      raise Exception('Required jaydebeapi module is not imported.')
+
     user = 'root'
     password = 'root'
     
@@ -63,6 +70,7 @@ class JDBCApi(Api):
     driver_args = [url, user, password]
     jars = None
     libs = None
+
     db = jaydebeapi.connect(jclassname, driver_args, jars=jars, libs=libs)
     db.jconn.setAutoCommit(autocommit)