Prechádzať zdrojové kódy

[security] Also filter by group on the tree view

Romain Rigaux 11 rokov pred
rodič
commit
307475c

+ 3 - 3
apps/security/src/security/api/hive.py

@@ -45,7 +45,7 @@ def list_sentry_privileges_by_role(request):
   try:
     roleName = request.POST['roleName']
     sentry_privileges = get_api(request.user).list_sentry_privileges_by_role(roleName)
-    result['sentry_privileges'] = sorted(sentry_privileges, key= lambda privilege: '%s.%s' % (privilege['database'], privilege['table']))
+    result['sentry_privileges'] = sorted(sentry_privileges, key=lambda privilege: '%s.%s' % (privilege['database'], privilege['table']))
     result['message'] = ''
     result['status'] = 0
   except Exception, e:
@@ -202,12 +202,12 @@ def list_sentry_privileges_by_authorizable(request):
   result = {'status': -1, 'message': 'Error'}
 
   try:
-    groups = json.loads(request.POST['groups'])
+    groupName = request.POST['groupName'] if request.POST['groupName'] else None
     roleSet = json.loads(request.POST['roleSet'])
     authorizableHierarchy = json.loads(request.POST['authorizableHierarchy'])
 
     privileges = []
-    roles = get_api(request.user).list_sentry_roles_by_group()
+    roles = get_api(request.user).list_sentry_roles_by_group(groupName=groupName)
 
     for role in roles:
       for privilege in get_api(request.user).list_sentry_privileges_by_role(role['name']): # authorizableHierarchy not working here?

+ 7 - 4
apps/security/src/security/templates/hive.mako

@@ -261,11 +261,11 @@ ${ layout.menubar(section='hive') }
     <div class="row-fluid">
       <div class="span6">
         <h4>${ _('Name') }</h4>
-        <input type="text" class="input-xlarge" data-bind="value: $data.name" style="width: 360px" />
+        <input type="text" class="input-xlarge" data-bind="value: $data.name" placeholder="${ _('Required') }" style="width: 360px" />
       </div>
       <div class="span6">
         <h4>${ _('Groups') }</h4>
-        <select data-bind="options: $root.selectableHadoopGroups, selectedOptions: groups, select2: { update: groups, type: 'group' }" size="5" multiple="true" style="width: 360px"></select>
+        <select data-bind="options: $root.selectableHadoopGroups, selectedOptions: groups, select2: { update: groups, type: 'group', placeholder: '${ _("Optional") }' }" size="5" multiple="true" style="width: 360px"></select>
       </div>
     </div>
 
@@ -277,7 +277,7 @@ ${ layout.menubar(section='hive') }
   </div>
   <div class="modal-footer">
     <button class="btn" data-dismiss="modal" aria-hidden="true" data-bind="click: $root.role.reset">${ _('Cancel') }</button>
-    <button data-loading-text="${ _('Saving...') }" class="btn btn-primary disable-enter" data-bind="click: $root.role.create">${ _('Add role') }</button>
+    <button data-loading-text="${ _('Saving...') }" class="btn btn-primary disable-enter" data-bind="click: $root.role.create">${ _('Save') }</button>
   </div>
 </div>
 
@@ -417,7 +417,10 @@ ${ tree.import_templates(itemClick='$root.assist.setPath', iconClick='$root.assi
       });
 
       $("#selectedGroup").select2("val", "");
-      $("#selectedGroup").change(function() { viewModel.list_sentry_roles_by_group(); });
+      $("#selectedGroup").change(function() {
+        viewModel.list_sentry_privileges_by_authorizable();
+        viewModel.list_sentry_roles_by_group(); 
+      });
 
     });
 </script>

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

@@ -790,7 +790,7 @@ var HiveViewModel = function (initial) {
         type: "POST",
         url: "/security/api/hive/list_sentry_privileges_by_authorizable",
         data: {
-          groups: ko.mapping.toJSON(['sambashare', 'hadoop']),
+          groupName: $('#selectedGroup').val(),
           roleSet: ko.mapping.toJSON({all: true, roles: []}),
           authorizableHierarchy: ko.mapping.toJSON({
             'server': self.assist.server(),