Эх сурвалжийг харах

[notebook] Remove import dependency on Oozie

Romain Rigaux 10 жил өмнө
parent
commit
d503918

+ 31 - 1
desktop/core/src/desktop/decorators.py

@@ -16,16 +16,24 @@
 # limitations under the License.
 # limitations under the License.
 
 
 import logging
 import logging
-from desktop.lib.exceptions_renderable import PopupException
+
+from django.utils.functional import wraps
 from django.utils.translation import ugettext as _
 from django.utils.translation import ugettext as _
 
 
+from desktop.lib.exceptions_renderable import PopupException
+
+from desktop.models import Document2
+
+
 try:
 try:
   from functools import wraps
   from functools import wraps
 except ImportError:
 except ImportError:
   from django.utils.functional import wraps
   from django.utils.functional import wraps
 
 
+
 LOG = logging.getLogger(__name__)
 LOG = logging.getLogger(__name__)
 
 
+
 def hue_permission_required(action, app):
 def hue_permission_required(action, app):
   """
   """
   Checks that the user has permissions to do
   Checks that the user has permissions to do
@@ -41,3 +49,25 @@ def hue_permission_required(action, app):
       return view_func(request, *args, **kwargs)
       return view_func(request, *args, **kwargs)
     return decorated
     return decorated
   return decorator
   return decorator
+
+
+def check_document_access_permission():
+  def inner(view_func):
+    def decorate(request, *args, **kwargs):
+      doc_id = {}
+
+      try:
+        if request.GET.get('uuid'):
+          doc_id['uuid'] = request.GET.get('uuid')
+        elif 'doc_id' in kwargs:
+          doc_id['id'] = kwargs['doc_id']
+
+        if doc_id:
+          doc2 = Document2.objects.get(**doc_id)
+          doc2.doc.get().can_read_or_exception(request.user)
+      except Document2.DoesNotExist:
+        raise PopupException(_('Job %(id)s does not exist') % {'id': doc_id})
+
+      return view_func(request, *args, **kwargs)
+    return wraps(view_func)(decorate)
+  return inner

+ 1 - 1
desktop/libs/notebook/src/notebook/api.py

@@ -21,9 +21,9 @@ import logging
 from django.utils.translation import ugettext as _
 from django.utils.translation import ugettext as _
 from django.views.decorators.http import require_GET, require_POST
 from django.views.decorators.http import require_GET, require_POST
 
 
+from desktop.decorators import check_document_access_permission
 from desktop.lib.django_util import JsonResponse
 from desktop.lib.django_util import JsonResponse
 from desktop.models import Document2, Document
 from desktop.models import Document2, Document
-from oozie.decorators import check_document_access_permission # Bad dependency
 
 
 from notebook.connectors.base import get_api, Notebook, QueryExpired
 from notebook.connectors.base import get_api, Notebook, QueryExpired
 from notebook.decorators import api_error_handler, check_document_modify_permission
 from notebook.decorators import api_error_handler, check_document_modify_permission

+ 1 - 1
desktop/libs/notebook/src/notebook/connectors/spark_batch.py

@@ -25,7 +25,7 @@ try:
   from spark.job_server_api import get_api as get_spark_api
   from spark.job_server_api import get_api as get_spark_api
 except ImportError, e:
 except ImportError, e:
   LOG.exception('Spark is not enabled')
   LOG.exception('Spark is not enabled')
-  
+
 from notebook.connectors.base import Api
 from notebook.connectors.base import Api