You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by pr...@apache.org on 2018/03/19 05:27:41 UTC

zeppelin git commit: [ZEPPELIN-3089] Delete all notes for current user

Repository: zeppelin
Updated Branches:
  refs/heads/master 233c09873 -> ac01fea46


[ZEPPELIN-3089] Delete all notes for current user

"Empty Trash" is not working when multi-user create a notebook and move it to trash.
Because all notebooks are in the same trash folder even though the user doesn't have permission to the notebook, and on clicking "Empty Trash" button next to Trash folder, Zeppelin tries to delete all notebooks in the Trash folder, which includes no permission notebook, but cannot delete those because of no permission.

This has slightly different implementation than that is there is https://github.com/apache/zeppelin/pull/2695

[Bug Fix]

* [ ] - Add unit test case

* [ZEPPELIN-3089](https://issues.apache.org/jira/browse/ZEPPELIN-3089)

* Login as user 'A' and create a notebook 'A'
* Move notebook 'A' to Trash
* Login as user 'B' and create a notebook 'B'
* Move notebook 'B' to Trash
* Click 'Empty Trash' button next to 'Trash' folder

![zeppelin-3249-python](https://user-images.githubusercontent.com/674497/37451922-229533ea-2859-11e8-9a76-085c5cb8b9d1.gif)

* Does the licenses files need update? N/A
* Is there breaking changes for older versions? N/A
* Does this needs documentation? N/A

Author: Prabhjyot Singh <pr...@gmail.com>

Closes #2872 from prabhjyotsingh/ZEPPELIN-3089 and squashes the following commits:

971cbf672 [Prabhjyot Singh] ZEPPELIN-3089: Delete all notes for current user

Change-Id: I88f0028e5a7859d7c767c3b3ea58dc0cad1aaa43


Project: http://git-wip-us.apache.org/repos/asf/zeppelin/repo
Commit: http://git-wip-us.apache.org/repos/asf/zeppelin/commit/ac01fea4
Tree: http://git-wip-us.apache.org/repos/asf/zeppelin/tree/ac01fea4
Diff: http://git-wip-us.apache.org/repos/asf/zeppelin/diff/ac01fea4

Branch: refs/heads/master
Commit: ac01fea46d99ef46fa4e1c7324b723b70ad98bca
Parents: 233c098
Author: Prabhjyot Singh <pr...@gmail.com>
Authored: Thu Mar 15 13:28:36 2018 +0530
Committer: Prabhjyot Singh <pr...@gmail.com>
Committed: Mon Mar 19 10:57:32 2018 +0530

----------------------------------------------------------------------
 .../apache/zeppelin/socket/NotebookServer.java  |  2 +-
 .../org/apache/zeppelin/notebook/Folder.java    | 20 ++++++++++++++++++++
 .../org/apache/zeppelin/notebook/Notebook.java  |  5 +++++
 3 files changed, 26 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zeppelin/blob/ac01fea4/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java
----------------------------------------------------------------------
diff --git a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java
index 87c757c..b8f9be9 100644
--- a/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java
+++ b/zeppelin-server/src/main/java/org/apache/zeppelin/socket/NotebookServer.java
@@ -1088,7 +1088,7 @@ public class NotebookServer extends WebSocketServlet
       return;
     }
 
-    List<Note> notes = notebook.getNotesUnderFolder(folderId);
+    List<Note> notes = notebook.getNotesUnderFolder(folderId, userAndRoles);
     for (Note note : notes) {
       String noteId = note.getId();
 

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/ac01fea4/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/Folder.java
----------------------------------------------------------------------
diff --git a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/Folder.java b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/Folder.java
index 1853550..afd5229 100644
--- a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/Folder.java
+++ b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/Folder.java
@@ -17,6 +17,7 @@
 
 package org.apache.zeppelin.notebook;
 
+import com.google.common.collect.Sets;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -216,6 +217,25 @@ public class Folder {
     return notes;
   }
 
+  public List<Note> getNotesRecursively(Set<String> userAndRoles,
+      NotebookAuthorization notebookAuthorization) {
+    final Set<String> entities = Sets.newHashSet();
+    if (userAndRoles != null) {
+      entities.addAll(userAndRoles);
+    }
+
+    List<Note> notes = new ArrayList<>();
+    for (Note note : getNotes()) {
+      if (notebookAuthorization.isOwner(note.getId(), entities)) {
+        notes.add(note);
+      }
+    }
+    for (Folder child : children.values()) {
+      notes.addAll(child.getNotesRecursively(userAndRoles, notebookAuthorization));
+    }
+    return notes;
+  }
+
   public int countNotes() {
     return notes.size();
   }

http://git-wip-us.apache.org/repos/asf/zeppelin/blob/ac01fea4/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/Notebook.java
----------------------------------------------------------------------
diff --git a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/Notebook.java b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/Notebook.java
index 693375d..ba83449 100644
--- a/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/Notebook.java
+++ b/zeppelin-zengine/src/main/java/org/apache/zeppelin/notebook/Notebook.java
@@ -651,6 +651,11 @@ public class Notebook implements NoteEventListener {
     return folders.getFolder(folderId).getNotesRecursively();
   }
 
+  public List<Note> getNotesUnderFolder(String folderId,
+      Set<String> userAndRoles) {
+    return folders.getFolder(folderId).getNotesRecursively(userAndRoles, notebookAuthorization);
+  }
+
   public List<Note> getAllNotes() {
     synchronized (notes) {
       List<Note> noteList = new ArrayList<>(notes.values());