Forráskód Böngészése

[security] Added support for FILE_NOT_FOUND exception

Enrico Berti 11 éve
szülő
commit
db993e15bb

+ 1 - 1
apps/security/src/security/api/hdfs.py

@@ -56,7 +56,7 @@ def list_hdfs(request, path):
   except IOError:
     json_response = HttpResponse(json.dumps({'files': [], 'page': {}, 'error': 'FILE_NOT_FOUND'}), mimetype="application/json") # AccessControlException: Permission denied: user=test, access=READ_EXECUTE, inode="/tmp/dir":romain:supergroup:drwxr-xr-x:group::r-x,group:bob:---,group:test:---,default:user::rwx,default:group::r--,default:mask::r--,default:other::rwx (error 403)
   except Exception, e:
-    json_response = HttpResponse(json.dumps({'files': [], 'page': {}, 'error': e.message}), mimetype="application/json") # AccessControlException: Permission denied: user=test, access=READ_EXECUTE, inode="/tmp/dir":romain:supergroup:drwxr-xr-x:group::r-x,group:bob:---,group:test:---,default:user::rwx,default:group::r--,default:mask::r--,default:other::rwx (error 403)
+    json_response = HttpResponse(json.dumps({'files': [], 'page': {}, 'error': 'ACCESS_DENIED'}), mimetype="application/json") # AccessControlException: Permission denied: user=test, access=READ_EXECUTE, inode="/tmp/dir":romain:supergroup:drwxr-xr-x:group::r-x,group:bob:---,group:test:---,default:user::rwx,default:group::r--,default:mask::r--,default:other::rwx (error 403)
 
   if json.loads(request.GET.get('isDiffMode', 'false')):
     request.doas = 'hdfs'

+ 9 - 17
apps/security/src/security/templates/hdfs.mako

@@ -91,7 +91,7 @@ ${ layout.menubar(section='hdfs') }
             <div class="span8">
               <div class="path-container">
                 <div class="input-append span12">
-                  <input id="path" class="path" type="text" data-bind="value: $root.assist.path, valueUpdate: 'afterkeydown'" autocomplete="off" />
+                  <input id="path" class="path" type="text" data-bind="value: $root.assist.path" autocomplete="off" />
                   <a data-bind="attr: { href: '/filebrowser/view' + $root.assist.path() }" target="_blank" title="${ _('Open in File Browser') }" class="btn btn-inverse">
                     <i class="fa fa-external-link"></i>
                   </a>
@@ -155,14 +155,10 @@ ${ layout.menubar(section='hdfs') }
                         <div data-bind="template: {name: 'acl-edition'}"></div>
                       </div>
 
-                      <div class="acl-block pointer add-acl" data-bind="click: $root.assist.addAcl">
-                        <i class="fa fa-plus"></i>
-                      </div>
-                      <div class="acl-block pointer add-acl" data-bind="visible: $root.assist.changedRegularAcls().length, click: $root.assist.getAcls">
-                        <i class="fa fa-undo"></i>
-                      </div>
-                      <div class="acl-block pointer add-acl" data-bind="visible: $root.assist.changedRegularAcls().length, click: $root.assist.updateAcls">
-                        <i class="fa fa-save"></i>
+                      <div class="acl-block acl-actions">
+                        <span class="pointer" data-bind="click: $root.assist.addAcl"><i class="fa fa-plus"></i></span>
+                        <span class="pointer" data-bind="visible: $root.assist.changedRegularAcls().length, click: $root.assist.getAcls"> &nbsp; <i class="fa fa-undo"></i></span>
+                        <span class="pointer" data-bind="visible: $root.assist.changedRegularAcls().length, click: $root.assist.updateAcls"> &nbsp; <i class="fa fa-save"></i></span>
                       </div>
 
                       <h4>${ _('Default ACLs') }</h4>
@@ -170,14 +166,10 @@ ${ layout.menubar(section='hdfs') }
                         <div data-bind="template: {name: 'acl-edition'}"></div>
                       </div>
 
-                      <div class="acl-block pointer add-acl" data-bind="click: $root.assist.addDefaultAcl">
-                        <i class="fa fa-plus"></i>
-                      </div>
-                      <div class="acl-block pointer add-acl" data-bind="visible: $root.assist.defaultAcls().length, click: $root.assist.getAcls">
-                        <i class="fa fa-undo"></i>
-                      </div>
-                      <div class="acl-block pointer add-acl" data-bind="visible: $root.assist.defaultAcls().length, click: $root.assist.updateAcls">
-                        <i class="fa fa-save"></i>
+                      <div class="acl-block acl-actions">
+                        <span class="pointer" data-bind="click: $root.assist.addDefaultAcl"><i class="fa fa-plus"></i></span>
+                        <span class="pointer" data-bind="visible: $root.assist.defaultAcls().length, click: $root.assist.getAcls"> &nbsp; <i class="fa fa-undo"></i></span>
+                        <span class="pointer" data-bind="visible: $root.assist.defaultAcls().length, click: $root.assist.updateAcls"> &nbsp; <i class="fa fa-save"></i></span>
                       </div>
                     </span>
                   </div>

+ 2 - 2
apps/security/static/css/security.css

@@ -103,14 +103,14 @@
   margin-left: 14px;
 }
 
-.add-acl {
+.acl-actions {
   padding: 5px;
   text-align: center;
   color: #CCC;
   font-size: 20px;
 }
 
-.add-acl:hover {
+.acl-actions span:hover {
   color: #999;
 }
 

+ 33 - 22
apps/security/static/js/hdfs.ko.js

@@ -91,7 +91,7 @@ var Assist = function (vm, assist) {
         name: "/",
         path: "/",
         isDir: true,
-        isExpanded: true,
+        isExpanded: false,
         isChecked: false,
         aclBit: false,
         striked: false,
@@ -204,7 +204,7 @@ var Assist = function (vm, assist) {
         path: item.path,
         aclBit: item.rwx.indexOf('+') != -1,
         striked: item.striked != null,
-        isExpanded: true,
+        isExpanded: false,
         isChecked: false,
         rwx: item.rwx,
         isDir: item.type == "dir" || item.isDir == true,
@@ -315,7 +315,11 @@ var Assist = function (vm, assist) {
       self.updatePathProperty(self.growingTree(), obj.path(), "isExpanded", obj.isExpanded());
     }
     else {
-      obj.isExpanded(false);
+      if (typeof toggle == "boolean" && toggle){
+        obj.isExpanded(!obj.isExpanded());
+      } else {
+        obj.isExpanded(false);
+      }
       self.updatePathProperty(self.growingTree(), obj.path(), "isExpanded", obj.isExpanded());
     }
     self.path(obj.path());
@@ -365,27 +369,34 @@ var Assist = function (vm, assist) {
         'isDiffMode': self.isDiffMode()
       },
       function (data) {
-        self.loadParents(data.breadcrumbs);
-        if (data['files'] && data['files'][0] && data['files'][0]['type'] == 'dir') { // Hack for now
-          $.each(data.files, function (index, item) {
-            self.convertItemToObject(item);
-          });
-        }
-        else {
-          self.convertItemToObject(data);
-        }
-        self.getTreeAdditionalDataForPath(_path).loaded = true;
-        if (data.page != null && data.page.number != null){
-          self.updatePathProperty(self.growingTree(), _path, "page", data.page);
-        }
-        if (typeof loadCallback != "undefined"){
-          loadCallback(data);
+        if (data.error != null){
+          if (data.error == "FILE_NOT_FOUND"){
+            self.path("/");
+          }
         }
         else {
-          self.loadData(self.growingTree());
-        }
-        if (typeof optionalPath == "undefined"){
-          self.getAcls();
+          self.loadParents(data.breadcrumbs);
+          if (data['files'] && data['files'][0] && data['files'][0]['type'] == 'dir') { // Hack for now
+            $.each(data.files, function (index, item) {
+              self.convertItemToObject(item);
+            });
+          }
+          else {
+            self.convertItemToObject(data);
+          }
+          self.getTreeAdditionalDataForPath(_path).loaded = true;
+          if (data.page != null && data.page.number != null) {
+            self.updatePathProperty(self.growingTree(), _path, "page", data.page);
+          }
+          if (typeof loadCallback != "undefined") {
+            loadCallback(data);
+          }
+          else {
+            self.loadData(self.growingTree());
+          }
+          if (typeof optionalPath == "undefined") {
+            self.getAcls();
+          }
         }
       }).fail(function (xhr, textStatus, errorThrown) {
         $(document).trigger("error", xhr.responseText);

+ 5 - 1
apps/security/static/js/hive.ko.js

@@ -449,7 +449,11 @@ var Assist = function (vm) {
       self.updatePathProperty(self.growingTree(), obj.path(), "isExpanded", obj.isExpanded());
     }
     else {
-      obj.isExpanded(false);
+      if (typeof toggle == "boolean" && toggle){
+        obj.isExpanded(!obj.isExpanded());
+      } else {
+        obj.isExpanded(false);
+      }
       self.updatePathProperty(self.growingTree(), obj.path(), "isExpanded", obj.isExpanded());
     }
     self.path(obj.path());