Эх сурвалжийг харах

[security] Base for group and user autocomplete

Romain Rigaux 11 жил өмнө
parent
commit
66ef002

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

@@ -33,7 +33,10 @@ ${ layout.menubar(section='hdfs') }
     <input type="radio" value="user" data-bind="checked: type, attr: { name: 'aclType' + $index() + (isDefault() ? 'isDefault' : 'notDefault') }"/> ${ _('user') }
     <input type="radio" value="mask" data-bind="checked: type, attr: { name: 'aclType' + $index() + (isDefault() ? 'isDefault' : 'notDefault') }"/> ${ _('mask') }
     <input type="radio" value="other" data-bind="checked: type, attr: { name: 'aclType' + $index() + (isDefault() ? 'isDefault' : 'notDefault') }"/> ${ _('other') }
+
     <input type="text" data-bind="value: name, valueUpdate:'afterkeydown'" class="input-small" placeholder="${ _('name...') }"/>
+    ##<select data-bind="options: $root.availableHadoopGroups, value: name, optionsCaption: '', valueUpdate:'afterkeydown'" class="input-small" placeholder="${ _('name...') }"/>
+
     <input type="checkbox" data-bind="checked: r"/>
     <input type="checkbox" data-bind="checked: w"/>
     <input type="checkbox" data-bind="checked: x"/>
@@ -55,13 +58,13 @@ ${ layout.menubar(section='hdfs') }
             </br>
             <input type="checkbox" checked></input> Me
             </br>
-            <select size="10" multiple="true"></select>
+            <select data-bind="options: availableHadoopGroups" size="10" multiple="true"></select>
           </li>
           <li class="nav-header"><i class="fa fa-group"></i> ${ _('Users') }
             </br>
             <input type="checkbox" checked></input> Me
             </br>          
-            <select size="10" multiple="true"></select>
+            <select data-bind="options: availableHadoopUsers" size="10" multiple="true"></select>
           </li>    
         </ul>
       </div>
@@ -96,7 +99,7 @@ ${ layout.menubar(section='hdfs') }
                 <i class="fa fa-plus"></i>
               </a>  
               </br>
-              Default            
+              Default (<i class="fa fa-times"></i> bulk delete?)
               <div data-bind="foreach: $root.assist.defaultAcls">
                 <div data-bind="template: {name: 'acl-edition'}"></div>
               </div>
@@ -136,8 +139,10 @@ ${ layout.menubar(section='hdfs') }
   var viewModel;
 
   $(document).ready(function () {
-    viewModel = new HdfsViewModel(${ assist | n,unicode });
+    viewModel = new HdfsViewModel(${ initial | n,unicode });
     ko.applyBindings(viewModel);
+    
+    viewModel.init();
   });
 </script>
 

+ 2 - 3
apps/security/src/security/views.py

@@ -40,7 +40,6 @@ def hive(request):
 
 def hdfs(request):
 
-  return render("hdfs.mako", request, {
-      'assist': {},
-      'hadoop_groups': _get_hadoop_groups(),
+  return render("hdfs.mako", request, {      
+      'initial': json.dumps({}),
   })

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

@@ -164,11 +164,31 @@ var Assist = function(vm, assist) {
 
 // Might rename Assist to Acls and create Assist for the tree widget?
 
-var HdfsViewModel = function(context_json) {
+var HdfsViewModel = function(initial) {
   var self = this;
 
-  self.assist = new Assist(self, context_json.assist);
+  self.assist = new Assist(self, initial);
   self.assist.path('/tmp/dir');
+  
+  self.availableHadoopUsers = ko.observableArray();
+  self.availableHadoopGroups = ko.observableArray();
+  
+  self.init = function() {
+	self.fetchUsers();
+  }
+
+
+  self.fetchUsers = function() {
+    $.getJSON('/desktop/api/users/autocomplete', function (data) {
+	  $.each(data.users, function(i, user) {
+	    self.availableHadoopUsers.push(user.username);
+	  });
+
+	  $.each(data.groups, function(i, group) {
+        self.availableHadoopGroups.push(group.name);
+	  });
+	});  
+  }
 };
 
 function logGA(page) {

+ 1 - 1
apps/useradmin/src/useradmin/views.py

@@ -74,7 +74,7 @@ def list_permissions(request):
 
 
 def list_for_autocomplete(request):
-  # Restrict to what the current user can interact withreverse('desktop.views.home')
+  # Restrict to what the current user can interact with reverse('desktop.views.home')
   if request.ajax:
     user_groups = request.user.groups.all()
     response = {