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
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')
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")
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)
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
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)
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)
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