Exemple #1
0
def _get_document_helper(request, uuid, with_data, with_dependencies, path):
  if uuid:
    if uuid.isdigit():
      document = Document2.objects.document(user=request.user, doc_id=uuid)
    else:
      document = Document2.objects.get_by_uuid(user=request.user, uuid=uuid)
  else:  # Find by path
    document = Document2.objects.get_by_path(user=request.user, path=path)

  response = {
    'document': document.to_dict(),
    'parent': document.parent_directory.to_dict() if document.parent_directory else None,
    'children': [],
    'dependencies': [],
    'dependents': [],
    'data': '',
    'status': 0
  }

  response['user_perms'] = {
    'can_read': document.can_read(request.user),
    'can_write': document.can_write(request.user)
  }

  if with_data:
    data = json.loads(document.data)
    # Upgrade session properties for Hive and Impala
    if document.type.startswith('query'):
      notebook = Notebook(document=document)
      notebook = upgrade_session_properties(request, notebook)
      data = json.loads(notebook.data)
      if data.get('uuid') != document.uuid: # Old format < 3.11
        data['uuid'] = document.uuid

    response['data'] = data

  if with_dependencies:
    response['dependencies'] = [dependency.to_dict() for dependency in document.dependencies.all()]
    response['dependents'] = [dependent.to_dict() for dependent in document.dependents.exclude(is_history=True).all()]

  # Get children documents if this is a directory
  if document.is_directory:
    directory = Directory.objects.get(id=document.id)

    # If this is the user's home directory, fetch shared docs too
    if document.is_home_directory:
      children = directory.get_children_and_shared_documents(user=request.user)
      response.update(_filter_documents(request, queryset=children, flatten=True))
    else:
      children = directory.get_children_documents()
      response.update(_filter_documents(request, queryset=children, flatten=False))

  # Paginate and serialize Results
  if 'documents' in response:
    response.update(_paginate(request, queryset=response['documents']))
    # Rename documents to children
    response['children'] = response.pop('documents')
    response['children'] = [doc.to_dict() for doc in response['children']]

  return response
Exemple #2
0
def open_notebook(request):
  response = {'status': -1}

  notebook_id = request.GET.get('notebook')
  notebook = Notebook(document=Document2.objects.get(id=notebook_id))
  notebook = upgrade_session_properties(request, notebook)

  response['status'] = 0
  response['notebook'] = notebook.get_json()
  response['message'] = _('Notebook loaded successfully')
Exemple #3
0
def open_notebook(request):
  response = {'status': -1}

  notebook_id = request.GET.get('notebook')
  notebook = Notebook(document=Document2.objects.get(id=notebook_id))
  notebook = upgrade_session_properties(request, notebook)

  response['status'] = 0
  response['notebook'] = notebook.get_json()
  response['message'] = _('Notebook loaded successfully')
Exemple #4
0
def open_notebook(request):
    response = {"status": -1}

    notebook_id = request.GET.get("notebook")
    notebook = Notebook(document=Document2.objects.get(id=notebook_id))
    notebook = upgrade_session_properties(request, notebook)

    response["status"] = 0
    response["notebook"] = notebook.get_json()
    response["message"] = _("Notebook loaded successfully")
Exemple #5
0
def get_document(request):
    """
  Returns the document or directory found for the given uuid or path and current user.
  If a directory is found, return any children documents too.
  Optional params:
    page=<n>    - Controls pagination. Defaults to 1.
    limit=<n>   - Controls limit per page. Defaults to all.
    type=<type> - Show documents of given type(s) (directory, query-hive, query-impala, query-mysql, etc). Default to all.
    sort=<key>  - Sort by the attribute <key>, which is one of:
                    "name", "type", "owner", "last_modified"
                  Accepts the form "-last_modified", which sorts in descending order.
                  Default to "-last_modified".
    text=<frag> - Search for fragment "frag" in names and descriptions.
    data=<false|true> - Return all the data of the document. Default to false.
    dependencies=<false|true> - Return all the dependencies and dependents of the document. Default to false.
  """
    path = request.GET.get("path", "/")
    uuid = request.GET.get("uuid")
    with_data = request.GET.get("data", "false").lower() == "true"
    with_dependencies = request.GET.get("dependencies", "false").lower() == "true"

    if uuid:
        if uuid.isdigit():
            document = Document2.objects.document(user=request.user, doc_id=uuid)
        else:
            document = Document2.objects.get_by_uuid(user=request.user, uuid=uuid)
    else:  # Find by path
        document = Document2.objects.get_by_path(user=request.user, path=path)

    response = {
        "document": document.to_dict(),
        "parent": document.parent_directory.to_dict() if document.parent_directory else None,
        "children": [],
        "dependencies": [],
        "dependents": [],
        "data": "",
        "status": 0,
    }

    response["user_perms"] = {
        "can_read": document.can_read(request.user),
        "can_write": document.can_write(request.user),
    }

    if with_data:
        data = json.loads(document.data)
        # Upgrade session properties for Hive and Impala
        if document.type.startswith("query"):
            notebook = Notebook(document=document)
            notebook = upgrade_session_properties(request, notebook)
            data = json.loads(notebook.data)
            if "uuid" not in data:
                data["uuid"] = document.uuid

        response["data"] = data

    if with_dependencies:
        response["dependencies"] = [dependency.to_dict() for dependency in document.dependencies.all()]
        response["dependents"] = [dependent.to_dict() for dependent in document.dependents.all()]

    # Get children documents if this is a directory
    if document.is_directory:
        directory = Directory.objects.get(id=document.id)

        # If this is the user's home directory, fetch shared docs too
        if document.is_home_directory:
            children = directory.get_children_and_shared_documents(user=request.user)
        else:
            children = directory.get_children_documents()

        # Filter and order results
        response.update(_filter_documents(request, queryset=children, flatten=False))

    # Paginate and serialize Results
    if "documents" in response:
        response.update(_paginate(request, queryset=response["documents"]))
        # Rename documents to children
        response["children"] = response.pop("documents")
        response["children"] = [doc.to_dict() for doc in response["children"]]

    return JsonResponse(response)
Exemple #6
0
def _get_document_helper(request, uuid, with_data, with_dependencies, path):
    if uuid:
        if uuid.isdigit():
            document = Document2.objects.document(user=request.user, doc_id=uuid)
        else:
            document = Document2.objects.get_by_uuid(user=request.user, uuid=uuid)
    else:  # Find by path
        document = Document2.objects.get_by_path(user=request.user, path=path)

    response = {
        "document": document.to_dict(),
        "parent": document.parent_directory.to_dict() if document.parent_directory else None,
        "children": [],
        "dependencies": [],
        "dependents": [],
        "data": "",
        "status": 0,
    }

    response["user_perms"] = {
        "can_read": document.can_read(request.user),
        "can_write": document.can_write(request.user),
    }

    if with_data:
        data = json.loads(document.data)
        # Upgrade session properties for Hive and Impala
        if document.type.startswith("query"):
            notebook = Notebook(document=document)
            notebook = upgrade_session_properties(request, notebook)
            data = json.loads(notebook.data)
            if data.get("uuid") != document.uuid:  # Old format < 3.11
                data["uuid"] = document.uuid

        response["data"] = data

    if with_dependencies:
        response["dependencies"] = [dependency.to_dict() for dependency in document.dependencies.all()]
        response["dependents"] = [dependent.to_dict() for dependent in document.dependents.all()]

    # Get children documents if this is a directory
    if document.is_directory:
        directory = Directory.objects.get(id=document.id)

        # If this is the user's home directory, fetch shared docs too
        if document.is_home_directory:
            children = directory.get_children_and_shared_documents(user=request.user)
        else:
            children = directory.get_children_documents()

        # Filter and order results
        response.update(_filter_documents(request, queryset=children, flatten=False))

    # Paginate and serialize Results
    if "documents" in response:
        response.update(_paginate(request, queryset=response["documents"]))
        # Rename documents to children
        response["children"] = response.pop("documents")
        response["children"] = [doc.to_dict() for doc in response["children"]]

    return response
Exemple #7
0
def get_document(request):
    """
  Returns the document or directory found for the given uuid or path and current user.
  If a directory is found, return any children documents too.
  Optional params:
    page=<n>    - Controls pagination. Defaults to 1.
    limit=<n>   - Controls limit per page. Defaults to all.
    type=<type> - Show documents of given type(s) (directory, query-hive, query-impala, query-mysql, etc). Default to all.
    sort=<key>  - Sort by the attribute <key>, which is one of:
                    "name", "type", "owner", "last_modified"
                  Accepts the form "-last_modified", which sorts in descending order.
                  Default to "-last_modified".
    text=<frag> - Search for fragment "frag" in names and descriptions.
    data=<false|true> - Return all the data of the document. Default to false.
    dependencies=<false|true> - Return all the dependencies and dependents of the document. Default to false.
  """
    path = request.GET.get('path', '/')
    uuid = request.GET.get('uuid')
    with_data = request.GET.get('data', 'false').lower() == 'true'
    with_dependencies = request.GET.get('dependencies',
                                        'false').lower() == 'true'

    if uuid:
        if uuid.isdigit():
            document = Document2.objects.document(user=request.user,
                                                  doc_id=uuid)
        else:
            document = Document2.objects.get_by_uuid(user=request.user,
                                                     uuid=uuid)
    else:  # Find by path
        document = Document2.objects.get_by_path(user=request.user, path=path)

    response = {
        'document':
        document.to_dict(),
        'parent':
        document.parent_directory.to_dict()
        if document.parent_directory else None,
        'children': [],
        'dependencies': [],
        'dependents': [],
        'data':
        '',
        'status':
        0
    }

    response['user_perms'] = {
        'can_read': document.can_read(request.user),
        'can_write': document.can_write(request.user)
    }

    if with_data:
        data = json.loads(document.data)
        # Upgrade session properties for Hive and Impala
        if document.type.startswith('query'):
            notebook = Notebook(document=document)
            notebook = upgrade_session_properties(request, notebook)
            data = json.loads(notebook.data)
            if data.get('uuid') != document.uuid:  # Old format < 3.11
                data['uuid'] = document.uuid

        response['data'] = data

    if with_dependencies:
        response['dependencies'] = [
            dependency.to_dict() for dependency in document.dependencies.all()
        ]
        response['dependents'] = [
            dependent.to_dict() for dependent in document.dependents.all()
        ]

    # Get children documents if this is a directory
    if document.is_directory:
        directory = Directory.objects.get(id=document.id)

        # If this is the user's home directory, fetch shared docs too
        if document.is_home_directory:
            children = directory.get_children_and_shared_documents(
                user=request.user)
        else:
            children = directory.get_children_documents()

        # Filter and order results
        response.update(
            _filter_documents(request, queryset=children, flatten=False))

    # Paginate and serialize Results
    if 'documents' in response:
        response.update(_paginate(request, queryset=response['documents']))
        # Rename documents to children
        response['children'] = response.pop('documents')
        response['children'] = [doc.to_dict() for doc in response['children']]

    return JsonResponse(response)
Exemple #8
0
def get_document(request):
  """
  Returns the document or directory found for the given uuid or path and current user.
  If a directory is found, return any children documents too.
  Optional params:
    page=<n>    - Controls pagination. Defaults to 1.
    limit=<n>   - Controls limit per page. Defaults to all.
    type=<type> - Show documents of given type(s) (directory, query-hive, query-impala, query-mysql, etc). Default to all.
    sort=<key>  - Sort by the attribute <key>, which is one of:
                    "name", "type", "owner", "last_modified"
                  Accepts the form "-last_modified", which sorts in descending order.
                  Default to "-last_modified".
    text=<frag> - Search for fragment "frag" in names and descriptions.
    data=<false|true> - Return all the data of the document. Default to false.
    dependencies=<false|true> - Return all the dependencies and dependents of the document. Default to false.
  """
  path = request.GET.get('path', '/')
  uuid = request.GET.get('uuid')
  with_data = request.GET.get('data', 'false').lower() == 'true'
  with_dependencies = request.GET.get('dependencies', 'false').lower() == 'true'

  if uuid:
    document = Document2.objects.get_by_uuid(user=request.user, uuid=uuid)
  else:  # Find by path
    document = Document2.objects.get_by_path(user=request.user, path=path)

  response = {
    'document': document.to_dict(),
    'parent': document.parent_directory.to_dict() if document.parent_directory else None,
    'children': [],
    'dependencies': [],
    'dependents': [],
    'data': ''
  }

  if with_data:
    data = json.loads(document.data)
    # Upgrade session properties for Hive and Impala
    if document.type.startswith('query'):
      notebook = Notebook(document=document)
      notebook = upgrade_session_properties(request, notebook)
      data = json.loads(notebook.data)

    response['data'] = data

  if with_dependencies:
    response['dependencies'] = [dependency.uuid for dependency in document.dependencies.all()]
    response['dependents'] = [dependent.uuid for dependent in document.dependents.all()]

  # Get children documents if this is a directory
  if document.is_directory:
    directory = Directory.objects.get(id=document.id)

    # If this is the user's home directory, fetch shared docs too
    if document.is_home_directory:
      children = directory.get_children_and_shared_documents(user=request.user)
    else:
      children = directory.get_children_documents()

    # Filter and order results
    response.update(_filter_documents(request, queryset=children, flatten=False))

  # Paginate and serialize Results
  if 'documents' in response:
    response.update(_paginate(request, queryset=response['documents']))
    # Rename documents to children
    response['children'] = response.pop('documents')
    response['children'] = [doc.to_dict() for doc in response['children']]

  return JsonResponse(response)
Exemple #9
0
def _get_document_helper(request, uuid, with_data, with_dependencies, path):
  if uuid:
    if uuid.isdigit():
      document = Document2.objects.document(user=request.user, doc_id=uuid)
    else:
      document = Document2.objects.get_by_uuid(user=request.user, uuid=uuid)
  else:  # Find by path
    document = Document2.objects.get_by_path(user=request.user, path=path)

  response = {
    'document': document.to_dict(),
    'parent': document.parent_directory.to_dict() if document.parent_directory else None,
    'children': [],
    'dependencies': [],
    'dependents': [],
    'data': '',
    'status': 0
  }

  response['user_perms'] = {
    'can_read': document.can_read(request.user),
    'can_write': document.can_write(request.user)
  }

  if with_data:
    data = json.loads(document.data)
    # Upgrade session properties for Hive and Impala
    if document.type.startswith('query'):
      notebook = Notebook(document=document)
      notebook = upgrade_session_properties(request, notebook)
      data = json.loads(notebook.data)
      if document.type == 'query-pig': # Import correctly from before Hue 4.0
        properties = data['snippets'][0]['properties']
        if 'hadoopProperties' not in properties:
          properties['hadoopProperties'] = []
        if 'parameters' not in properties:
          properties['parameters'] = []
        if 'resources' not in properties:
          properties['resources'] = []
      if data.get('uuid') != document.uuid: # Old format < 3.11
        data['uuid'] = document.uuid

    response['data'] = data

  if with_dependencies:
    response['dependencies'] = [dependency.to_dict() for dependency in document.dependencies.all()]
    response['dependents'] = [dependent.to_dict() for dependent in document.dependents.exclude(is_history=True).all()]

  # Get children documents if this is a directory
  if document.is_directory:
    directory = Directory.objects.get(id=document.id)

    # If this is the user's home directory, fetch shared docs too
    if document.is_home_directory:
      children = directory.get_children_and_shared_documents(user=request.user)
      response.update(_filter_documents(request, queryset=children, flatten=True))
    else:
      children = directory.get_children_documents()
      response.update(_filter_documents(request, queryset=children, flatten=False))

  # Paginate and serialize Results
  if 'documents' in response:
    response.update(_paginate(request, queryset=response['documents']))
    # Rename documents to children
    response['children'] = response.pop('documents')
    response['children'] = [doc.to_dict() for doc in response['children']]

  return response