فهرست منبع

HUE-3801 [editor] Do not offer save button to query shared as read only

Romain Rigaux 9 سال پیش
والد
کامیت
905a48c

+ 1 - 1
desktop/core/src/desktop/api2.py

@@ -143,7 +143,7 @@ def get_document(request):
     document = Document2.objects.get_by_path(user=request.user, path=path)
 
   response = {
-    'document': document.to_dict(),
+    'document': document.to_dict(request.user),
     'parent': document.parent_directory.to_dict() if document.parent_directory else None,
     'children': [],
     'dependencies': [],

+ 9 - 3
desktop/core/src/desktop/models.py

@@ -1099,8 +1099,8 @@ class Document2(models.Model):
       LOG.warn('Could not perform reverse lookup for type %s, app may be blacklisted.' % self.type)
     return url
 
-  def to_dict(self):
-    return {
+  def to_dict(self, user=None):
+    data = {
       'owner': self.owner.username,
       'name': self.name,
       'path': urlencode(self.path or '/'),
@@ -1114,9 +1114,15 @@ class Document2(models.Model):
       'last_modified': self.last_modified.strftime(UTC_TIME_FORMAT),
       'last_modified_ts': calendar.timegm(self.last_modified.utctimetuple()),
       'isSelected': False,
-      'absoluteUrl': self.get_absolute_url()
+      'absoluteUrl': self.get_absolute_url(),
     }
 
+    if user is not None:
+      data['can_read'] = self.can_read(user)
+      data['can_write'] = self.can_write(user)
+
+    return data
+
   def get_history(self):
     return self.dependencies.filter(is_history=True).order_by('-last_modified')
 

+ 4 - 3
desktop/libs/notebook/src/notebook/static/notebook/js/notebook.ko.js

@@ -1034,6 +1034,7 @@
     self.isHistory = ko.observable(typeof notebook.is_history != "undefined" && notebook.is_history != null ? notebook.is_history : false);
     self.parentSavedQueryUuid = ko.observable(typeof notebook.parentSavedQueryUuid != "undefined" && notebook.parentSavedQueryUuid != null ? notebook.parentSavedQueryUuid : null); // History parent
     self.isSaved = ko.observable(typeof notebook.isSaved != "undefined" && notebook.isSaved != null ? notebook.isSaved : false);
+    self.canWrite = ko.observable(typeof notebook.can_write != "undefined" && notebook.can_write != null ? notebook.can_write : true);
     self.snippets = ko.observableArray();
     self.selectedSnippet = ko.observable(vm.availableSnippets().length > 0 ? vm.availableSnippets()[0].type() : 'NO_SNIPPETS');
     self.creatingSessionLocks = ko.observableArray();
@@ -1512,9 +1513,9 @@
     self.isOptimizerEnabled = ko.observable(options.is_optimizer_enabled);
     self.canSave = ko.computed(function() {
       // Saved query or history but history coming from a saved query
-      return self.selectedNotebook() && (
-         self.selectedNotebook().isSaved() ||
-         (self.selectedNotebook().isHistory() && self.selectedNotebook().parentSavedQueryUuid())
+      return self.selectedNotebook() && self.selectedNotebook().canWrite() && (
+          self.selectedNotebook().isSaved() ||
+          (self.selectedNotebook().isHistory() && self.selectedNotebook().parentSavedQueryUuid())
       );
     });