action panel sibling added function to get sibling entities from the tab set. remove explicit sibling code from entity pages Modified the Label fields on HBAC and SUDO to make them appear cleaner in the UI

This commit is contained in:
Adam Young 2010-11-29 14:26:55 -05:00 committed by Endi Sukma Dewata
parent 20b1e0a75e
commit 47d61e6cab
13 changed files with 167 additions and 252 deletions

View File

@ -367,40 +367,89 @@ function ipa_entity_setup(container) {
facet.refresh(); facet.refresh();
} }
/*Returns the entity requested, as well as:
any nested tabs underneath it or
its parent tab and the others nested at the same level*/
IPA.nested_tabs = function(entity_name){
var siblings = [];
for (var top_tab_index = 0;
top_tab_index < IPA.tab_set.length;
top_tab_index += 1){
var top_tab = IPA.tab_set[top_tab_index];
for (var subtab_index = 0;
subtab_index < top_tab.children.length;
subtab_index += 1){
if(top_tab.children[subtab_index].name){
if (top_tab.children[subtab_index].name === entity_name){
siblings.push(entity_name);
if (top_tab.children[subtab_index].children){
var nested_entities = top_tab.children[subtab_index].children;
for (var nested_index = 0;
nested_index < nested_entities.length;
nested_index += 1){
siblings.push (nested_entities[nested_index].name);
}
}
}else{
if (top_tab.children[subtab_index].children){
var nested_entities = top_tab.children[subtab_index].children;
for (var nested_index = 0;
nested_index < nested_entities.length;
nested_index += 1){
if (nested_entities[nested_index].name === entity_name){
siblings.push(top_tab.children[subtab_index].name);
for (var nested_index2 = 0;
nested_index2 < nested_entities.length;
nested_index2 += 1){
siblings.push(nested_entities[nested_index2].name);
}
}
}
}
}
}
}
}
return siblings;
}
function ipa_facet_create_action_panel(container) { function ipa_facet_create_action_panel(container) {
var that = this; var that = this;
var entity_name = that.entity_name; var entity_name = that.entity_name;
var action_panel = $('<div/>', { var action_panel = $('<div/>', {
"class": "action-panel", "class": "action-panel",
html: $('<h3>',{ html: $('<h3>',{
text: IPA.metadata[entity_name].label text: IPA.metadata[entity_name].label
}) })
}).appendTo(container); }).appendTo(container);
function build_link(other_facet,label){ function build_link(other_facet,label){
var li = $('<li/>', { var li = $('<li/>', {
"class" : other_facet.display_class, "class" : other_facet.display_class,
title: other_facet.name, title: other_facet.name,
text: label, text: label,
click: function(entity_name, other_facet_name) { click: function(entity_name, other_facet_name) {
return function() { return function() {
if($(this).hasClass('entity-facet-disabled')){ if($(this).hasClass('entity-facet-disabled')){
return false;
}
var this_pkey = $('input[id=pkey]', action_panel).val();
IPA.switch_and_show_page(
entity_name, other_facet_name,
this_pkey);
return false; return false;
}; }
}(entity_name, other_facet_name) var this_pkey = $('input[id=pkey]', action_panel).val();
}); IPA.switch_and_show_page(
entity_name, other_facet_name,
this_pkey);
return false;
};
}(entity_name, other_facet_name)
});
return li; return li;
} }
/*Note, for debugging purposes, it is useful to set var pkey_type = 'text';*/ /*Note, for debugging purposes, it is useful to set var pkey_type = 'text';*/
var pkey_type = 'hidden'; var pkey_type = 'hidden';
$('<input/>', { $('<input/>', {
@ -408,36 +457,62 @@ function ipa_facet_create_action_panel(container) {
id:'pkey', id:'pkey',
name:'pkey' name:'pkey'
}).appendTo(action_panel); }).appendTo(action_panel);
var ul = $('<ul/>', {'class': 'action'}).appendTo(action_panel); var ul = $('<ul/>', {'class': 'action'}).appendTo(action_panel);
var entity = IPA.get_entity(entity_name); var entity = IPA.get_entity(entity_name);
var facet_name = ipa_current_facet(entity); var facet_name = ipa_current_facet(entity);
var other_facet = entity.facets[0]; var other_facet = entity.facets[0];
var other_facet_name = other_facet.name; var other_facet_name = other_facet.name;
var main_facet = build_link(other_facet,other_facet.label); var nested_tabs = IPA.nested_tabs(entity_name);
var main_facet = build_link(other_facet,other_facet.label)
for (var nested_index = 0 ;
nested_index < nested_tabs.length;
nested_index += 1){
if (nested_tabs[nested_index] === entity_name){
/*assume for now that entities with only a single facet
do not have search*/
if (entity.facets.length > 0 ){
main_facet.text( 'List ' + IPA.metadata[entity_name].label);
}
main_facet.appendTo(ul);
/*assumeing for now that entities with only a single facet ul.append($('<li><span class="action-controls"/></li>'));
do not have search*/ for (var i=1; i<entity.facets.length; i++) {
if (entity.facets.length > 0 ){ other_facet = entity.facets[i];
main_facet.text( 'List ' + IPA.metadata[entity_name].label); other_facet_name = other_facet.name;
if (other_facet.label) {
ul.append(build_link(other_facet,other_facet.label));
} else { // For now empty label indicates an association facet
var attribute_members = IPA.metadata[entity_name].attribute_members;
for (var attribute_member in attribute_members) {
var other_entities = attribute_members[attribute_member];
for (var j = 0; j < other_entities.length; j++) {
var other_entity = other_entities[j];
var label = IPA.metadata[other_entity].label;
ul.append(build_link(other_facet,label,other_entity));
}
}
}
}
}else{
$('<li/>', {
title: nested_tabs[nested_index],
text: IPA.metadata[nested_tabs[nested_index]].label,
"class": "search-facet",
click: function() {
var state = {};
state[nested_tabs[0]+'-entity'] =
this.title;
nav_push_state(state);
return false;
}
}).appendTo(ul);
}
} }
main_facet.appendTo(ul);
ul.append($('<li><span class="action-controls"/></li>'));
for (var i=1; i<entity.facets.length; i++) {
other_facet = entity.facets[i];
other_facet_name = other_facet.name;
ul.append(build_link(other_facet,other_facet.label));
}
/*When we land on the search page, disable all facets /*When we land on the search page, disable all facets
that require a pkey until one is selected*/ that require a pkey until one is selected*/
if (facet_name === 'search'){ if (facet_name === 'search'){
$('.entity-facet', action_panel).addClass('entity-facet-disabled'); $('.entity-facet', action_panel).addClass('entity-facet-disabled');
} }
return action_panel; return action_panel;
} }

View File

@ -120,50 +120,18 @@ function ipa_hbac_search_facet(spec) {
'label': 'Cull Disabled Rules' 'label': 'Cull Disabled Rules'
})); }));
*/ */
var action_panel = that.get_action_panel();
var ul = $('ul', action_panel);
$('<li/>', {
title: 'hbacsvc',
text: 'HBAC Services'
}).appendTo(ul);
$('<li/>', {
title: 'hbacsvcgroup',
text: 'HBAC Service Groups'
}).appendTo(ul);
that.search_facet_create(container); that.search_facet_create(container);
// TODO: replace with IPA.metadata[that.entity_name].label
container.children().last().prepend( container.children().last().prepend(
$('<h2/>', { 'html': 'HBAC Rules' })); $('<h2/>', { 'html': IPA.metadata.hbac.label }));
container.children().last().prepend('<br/><br/>'); container.children().last().prepend('<br/><br/>');
}; };
that.setup = function(container) { that.setup = function(container) {
that.search_facet_setup(container); that.search_facet_setup(container);
var action_panel = that.get_action_panel();
var li = $('li[title=hbacsvc]', action_panel);
li.click(function() {
var state = {};
state['hbac-entity'] = 'hbacsvc';
nav_push_state(state);
return false;
});
li = $('li[title=hbacsvcgroup]', action_panel);
li.click(function() {
var state = {};
state['hbac-entity'] = 'hbacsvcgroup';
nav_push_state(state);
return false;
});
}; };
return that; return that;

View File

@ -89,29 +89,9 @@ function ipa_hbacsvc_search_facet(spec) {
}; };
that.create = function(container) { that.create = function(container) {
var action_panel = that.get_action_panel();
var ul = $('ul', action_panel);
/*Note that we add the rules at the top of the action panel
so that the HBAC entities always show in the same order.*/
$('<li/>', {
title: 'hbac',
text: 'HBAC Rules'
}).prependTo(ul);
$('<li/>', {
title: 'hbacsvcgroup',
text: 'HBAC Service Groups'
}).appendTo(ul);
that.search_facet_create(container); that.search_facet_create(container);
// TODO: replace with IPA.metadata[that.entity_name].label
container.children().last().prepend( container.children().last().prepend(
$('<h2/>', { 'html': 'HBAC Services' })); $('<h2/>', { 'html': IPA.metadata.hbacsvc.label }));
container.children().last().prepend('<br/><br/>'); container.children().last().prepend('<br/><br/>');
}; };

View File

@ -102,31 +102,10 @@ function ipa_hbacsvcgroup_search_facet(spec) {
}; };
that.create = function(container) { that.create = function(container) {
var action_panel = that.get_action_panel();
var ul = $('ul', action_panel);
/*Note that we add these at the top of the action panel
so that the HBAC entities always show in the same order.*/
$('<li/>', {
title: 'hbacsvc',
text: 'HBAC Services'
}).prependTo(ul);
$('<li/>', {
title: 'hbac',
text: 'HBAC Rules'
}).prependTo(ul);
that.search_facet_create(container); that.search_facet_create(container);
// TODO: replace with IPA.metadata[that.entity_name].label
container.children().last().prepend( container.children().last().prepend(
$('<h2/>', { 'html': 'HBAC Service Groups' })); $('<h2/>', { 'html':IPA.metadata.hbacsvcgroup.label }));
container.children().last().prepend('<br/><br/>'); container.children().last().prepend('<br/><br/>');
}; };
that.setup = function(container) { that.setup = function(container) {

View File

@ -90,25 +90,10 @@ function ipa_sudocmd_search_facet(spec) {
that.create = function(container) { that.create = function(container) {
var action_panel = that.get_action_panel();
var ul = $('ul', action_panel);
$('<li/>', {
title: 'sudorule',
text: 'SUDO Rules'
}).prependTo(ul);
$('<li/>', {
title: 'sudocmdgroup',
text: 'SUDO Command Groups'
}).appendTo(ul);
that.search_facet_create(container); that.search_facet_create(container);
// TODO: replace with IPA.metadata[that.entity_name].label
container.children().last().prepend( container.children().last().prepend(
$('<h2/>', { 'html': 'SUDO Commands' })); $('<h2/>', { 'html': IPA.metadata.sudocmd.label }));
container.children().last().prepend('<br/><br/>'); container.children().last().prepend('<br/><br/>');
}; };

View File

@ -103,28 +103,10 @@ function ipa_sudocmdgroup_search_facet(spec) {
that.create = function(container) { that.create = function(container) {
var action_panel = that.get_action_panel();
var ul = $('ul', action_panel);
/*Make sure that these go at the top of the action panel
and in the same order as on the other SUDO entity pages */
$('<li/>', {
title: 'sudocmd',
text: 'SUDO Command'
}).prependTo(ul);
$('<li/>', {
title: 'sudorule',
text: 'SUDO Rules'
}).prependTo(ul);
that.search_facet_create(container); that.search_facet_create(container);
// TODO: replace with IPA.metadata[that.entity_name].label
container.children().last().prepend( container.children().last().prepend(
$('<h2/>', { 'html': 'SUDO Command Groups' })); $('<h2/>', { 'html': IPA.metadata.sudocmdgroup.label }));
container.children().last().prepend('<br/><br/>'); container.children().last().prepend('<br/><br/>');
}; };

View File

@ -91,51 +91,16 @@ function ipa_sudorule_search_facet(spec) {
}; };
that.create = function(container) { that.create = function(container) {
var action_panel = that.get_action_panel();
var ul = $('ul', action_panel);
$('<li/>', {
title: 'sudocmd',
text: 'SUDO Commands'
}).appendTo(ul);
$('<li/>', {
title: 'sudocmdgroup',
text: 'SUDO Command Groups'
}).appendTo(ul);
that.search_facet_create(container); that.search_facet_create(container);
// TODO: replace with IPA.metadata[that.entity_name].label
container.children().last().prepend( container.children().last().prepend(
$('<h2/>', { 'html': 'SUDO Rules' })); $('<h2/>', { 'html': IPA.metadata.sudorule.label }));
container.children().last().prepend('<br/><br/>'); container.children().last().prepend('<br/><br/>');
}; };
that.setup = function(container) { that.setup = function(container) {
that.search_facet_setup(container); that.search_facet_setup(container);
var action_panel = that.get_action_panel();
var li = $('li[title=sudocmd]', action_panel);
li.click(function() {
var state = {};
state['sudorule-entity'] = 'sudocmd';
nav_push_state(state);
return false;
});
li = $('li[title=sudocmdgroup]', action_panel);
li.click(function() {
var state = {};
state['sudorule-entity'] = 'sudocmdgroup';
nav_push_state(state);
return false;
});
}; };
return that; return that;

View File

@ -6,37 +6,6 @@
"results": [ "results": [
{ {
"error": null, "error": null,
"messages": {
"ajax": {
"401": "Your kerberos ticket no longer valid.Please run KInit and then click 'retry'If this is your first time running the IPA Web UI<a href='/ipa/errors/ssbrowser.html'> Follow these directions</a> to configure your browser."
},
"button": {
"add": "Add",
"enroll": "Enroll",
"find": "Find",
"remove": "Delete",
"reset": "Reset",
"update": "Update"
},
"details": {
"account": "Account Details",
"contact": "Contact Details",
"employee": " Employee Information",
"identity": "Identity Details",
"mailing": "Mailing Address",
"misc": "Misc. Information",
"to_top": "Back to Top"
},
"login": {
"header": "Logged In As"
},
"search": {
"delete_confirm": "Do you really want to delete the selected entries?",
"quick_links": "Quick Links",
"select_all": "Select All",
"unselect_all": "Unselect All"
}
},
"metadata": { "metadata": {
"aci": { "aci": {
"__base64__": "" "__base64__": ""
@ -1090,11 +1059,11 @@
"include": null, "include": null,
"label": "Group name", "label": "Group name",
"length": null, "length": null,
"maxlength": 33, "maxlength": 255,
"minlength": null, "minlength": null,
"multivalue": false, "multivalue": false,
"name": "cn", "name": "cn",
"pattern": "^[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,30}[a-zA-Z0-9_.$-]?$", "pattern": "^[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,252}[a-zA-Z0-9_.$-]?$",
"pattern_errmsg": "may only include letters, numbers, _, -, . and $", "pattern_errmsg": "may only include letters, numbers, _, -, . and $",
"primary_key": true, "primary_key": true,
"query": false, "query": false,
@ -1638,7 +1607,7 @@
"objectclass", "objectclass",
"aci" "aci"
], ],
"label": "Services", "label": "HBAC Services",
"methods": [ "methods": [
"add", "add",
"del", "del",
@ -1807,6 +1776,9 @@
"enrolledby": [ "enrolledby": [
"user" "user"
], ],
"managedby": [
"host"
],
"memberof": [ "memberof": [
"hostgroup", "hostgroup",
"netgroup", "netgroup",
@ -1824,7 +1796,8 @@
"nsosversion", "nsosversion",
"usercertificate", "usercertificate",
"memberof", "memberof",
"krblastpwdchange" "krblastpwdchange",
"managedby"
], ],
"hidden_attributes": [ "hidden_attributes": [
"objectclass", "objectclass",
@ -1833,10 +1806,12 @@
"label": "Hosts", "label": "Hosts",
"methods": [ "methods": [
"add", "add",
"add_managedby",
"del", "del",
"disable", "disable",
"find", "find",
"mod", "mod",
"remove_managedby",
"show" "show"
], ],
"name": "host", "name": "host",
@ -2559,6 +2534,9 @@
], ],
"uuid_attribute": "ipauniqueid" "uuid_attribute": "ipauniqueid"
}, },
"pkinit": {
"__base64__": ""
},
"pwpolicy": { "pwpolicy": {
"attribute_members": {}, "attribute_members": {},
"container_dn": "cn=AYOUNG.BOSTON.DEVEL.REDHAT.COM,cn=kerberos", "container_dn": "cn=AYOUNG.BOSTON.DEVEL.REDHAT.COM,cn=kerberos",
@ -2972,7 +2950,7 @@
"objectclass", "objectclass",
"aci" "aci"
], ],
"label": "SudoCmds", "label": "SUDO Commands",
"methods": [ "methods": [
"add", "add",
"del", "del",
@ -3071,7 +3049,7 @@
"objectclass", "objectclass",
"aci" "aci"
], ],
"label": "Sudo Command Groups", "label": "SUDO Command Groups",
"methods": [ "methods": [
"add", "add",
"add_member", "add_member",
@ -3232,7 +3210,7 @@
"objectclass", "objectclass",
"aci" "aci"
], ],
"label": "SudoRule", "label": "SUDO",
"methods": [ "methods": [
"add", "add",
"add_allow_command", "add_allow_command",
@ -3699,11 +3677,11 @@
"include": null, "include": null,
"label": "User login", "label": "User login",
"length": null, "length": null,
"maxlength": 33, "maxlength": 255,
"minlength": null, "minlength": null,
"multivalue": false, "multivalue": false,
"name": "uid", "name": "uid",
"pattern": "^[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,30}[a-zA-Z0-9_.$-]?$", "pattern": "^[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,252}[a-zA-Z0-9_.$-]?$",
"pattern_errmsg": "may only include letters, numbers, _, -, . and $", "pattern_errmsg": "may only include letters, numbers, _, -, . and $",
"primary_key": true, "primary_key": true,
"query": false, "query": false,
@ -4145,19 +4123,19 @@
"Administrator" "Administrator"
], ],
"gidnumber": [ "gidnumber": [
"1010626268" "757995011"
], ],
"homedirectory": [ "homedirectory": [
"/home/admin" "/home/admin"
], ],
"ipauniqueid": [ "ipauniqueid": [
"73321718-f35011df-8e89dc8d-0b6df103" "297bbe44-f810-11df-8f59-525400674dcd"
], ],
"krblastpwdchange": [ "krblastpwdchange": [
"20101118201738Z" "20101124211850Z"
], ],
"krbpasswordexpiration": [ "krbpasswordexpiration": [
"20110216201738Z" "20110222211850Z"
], ],
"krbprincipalname": [ "krbprincipalname": [
"admin@AYOUNG.BOSTON.DEVEL.REDHAT.COM" "admin@AYOUNG.BOSTON.DEVEL.REDHAT.COM"
@ -4198,7 +4176,7 @@
"admin" "admin"
], ],
"uidnumber": [ "uidnumber": [
"1010626268" "757995011"
] ]
} }
], ],
@ -4206,18 +4184,18 @@
"truncated": false "truncated": false
}, },
{ {
"count": 64, "count": 67,
"error": null, "error": null,
"result": { "result": {
"basedn": "dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com", "basedn": "dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
"bin": "/var/www", "bin": "/home/ayoung/devel/freeipa",
"ca_agent_port": 9443, "ca_agent_port": 9443,
"ca_ee_port": 9444, "ca_ee_port": 9444,
"ca_host": "ipa.ayoung.boston.devel.redhat.com", "ca_host": "ipa.ayoung.boston.devel.redhat.com",
"ca_port": 9180, "ca_port": 9180,
"conf": "/etc/ipa/server.conf", "conf": "/root/.ipa/lite.conf",
"conf_default": "/etc/ipa/default.conf", "conf_default": "/root/.ipa/default.conf",
"confdir": "/etc/ipa", "confdir": "/root/.ipa",
"config_loaded": true, "config_loaded": true,
"container_accounts": "cn=accounts", "container_accounts": "cn=accounts",
"container_applications": "cn=applications,cn=configs,cn=policies", "container_applications": "cn=applications,cn=configs,cn=policies",
@ -4243,39 +4221,42 @@
"container_taskgroup": "cn=taskgroups,cn=accounts", "container_taskgroup": "cn=taskgroups,cn=accounts",
"container_user": "cn=users,cn=accounts", "container_user": "cn=users,cn=accounts",
"container_virtual": "cn=virtual operations", "container_virtual": "cn=virtual operations",
"context": "server", "context": "lite",
"debug": false, "debug": false,
"domain": "ayoung.boston.devel.redhat.com", "domain": "ayoung.boston.devel.redhat.com",
"dot_ipa": "/var/www/.ipa", "dot_ipa": "/root/.ipa",
"enable_ra": true, "enable_ra": true,
"fallback": true, "fallback": true,
"home": "/var/www", "home": "/root",
"host": "ipa.ayoung.boston.devel.redhat.com", "host": "ipa.ayoung.boston.devel.redhat.com",
"in_server": true, "in_server": true,
"in_tree": false, "in_tree": true,
"interactive": true, "interactive": true,
"ipalib": "/usr/lib/python2.6/site-packages/ipalib", "ipalib": "/home/ayoung/devel/freeipa/ipalib",
"ldap_uri": "ldapi://%2fvar%2frun%2fslapd-AYOUNG-BOSTON-DEVEL-REDHAT-COM.socket", "ldap_uri": "ldapi://%2fvar%2frun%2fslapd-AYOUNG-BOSTON-DEVEL-REDHAT-COM.socket",
"log": null, "lite_host": "127.0.0.1",
"logdir": "/var/log/ipa", "lite_pem": "/root/.ipa/lite.pem",
"lite_port": 8888,
"log": "/root/.ipa/log/lite.log",
"logdir": "/root/.ipa/log",
"mode": "production", "mode": "production",
"mount_ipa": "/ipa/", "mount_ipa": "/ipa/",
"mount_jsonserver": "json", "mount_jsonserver": "json",
"mount_xmlserver": "xml", "mount_xmlserver": "xml",
"prompt_all": false, "prompt_all": false,
"ra_plugin": "dogtag", "ra_plugin": "selfsign",
"realm": "AYOUNG.BOSTON.DEVEL.REDHAT.COM", "realm": "AYOUNG.BOSTON.DEVEL.REDHAT.COM",
"rpc_json_uri": "http://localhost:8888/ipa/json", "rpc_json_uri": "http://localhost:8888/ipa/json",
"script": "/var/www/mod_wsgi", "script": "/home/ayoung/devel/freeipa/lite-server.py",
"site_packages": "/usr/lib/python2.6/site-packages", "site_packages": "/home/ayoung/devel/freeipa",
"startup_traceback": false, "startup_traceback": true,
"verbose": 0, "verbose": 0,
"webui_assets_dir": null, "webui_assets_dir": null,
"webui_prod": true, "webui_prod": true,
"xmlrpc_uri": "https://ipa.ayoung.boston.devel.redhat.com/ipa/xml" "xmlrpc_uri": "http://localhost:8888/ipa/xml"
}, },
"summary": "64 variables", "summary": "67 variables",
"total": 64 "total": 67
} }
] ]
} }

View File

@ -38,7 +38,7 @@ var admin_tab_set = [
{name:'hbacsvc', setup: ipa_entity_setup}, {name:'hbacsvc', setup: ipa_entity_setup},
{name:'hbacsvcgroup', setup: ipa_entity_setup} {name:'hbacsvcgroup', setup: ipa_entity_setup}
]}, ]},
{name:'sudorule', setup: ipa_entity_setup,children:[ {name:'sudorule', label:'SUDO', setup: ipa_entity_setup,children:[
{name:'sudocmd', setup: ipa_entity_setup}, {name:'sudocmd', setup: ipa_entity_setup},
{name:'sudocmdgroup', setup: ipa_entity_setup} {name:'sudocmdgroup', setup: ipa_entity_setup}
]}, ]},

View File

@ -57,7 +57,7 @@ class hbacsvc(LDAPObject):
default_attributes = ['cn', 'description', 'memberindirect',] default_attributes = ['cn', 'description', 'memberindirect',]
uuid_attribute = 'ipauniqueid' uuid_attribute = 'ipauniqueid'
label = _('Services') label = _('HBAC Services')
takes_params = ( takes_params = (
Str('cn', Str('cn',

View File

@ -57,7 +57,7 @@ class sudocmd(LDAPObject):
'sudocmd', 'description', 'sudocmd', 'description',
] ]
uuid_attribute = 'ipauniqueid' uuid_attribute = 'ipauniqueid'
label = _('SudoCmds') label = _('SUDO Commands')
takes_params = ( takes_params = (
Str('sudocmd', Str('sudocmd',

View File

@ -64,7 +64,7 @@ class sudocmdgroup(LDAPObject):
'memberindirect': ['sudocmd', 'sudocmdgroup'], 'memberindirect': ['sudocmd', 'sudocmdgroup'],
} }
label = _('Sudo Command Groups') label = _('SUDO Command Groups')
takes_params = ( takes_params = (
Str('cn', Str('cn',

View File

@ -46,7 +46,7 @@ class sudorule(LDAPObject):
'memberdenycmd': ['sudocmd', 'sudocmdgroup'], 'memberdenycmd': ['sudocmd', 'sudocmdgroup'],
} }
label = _('SudoRule') label = _('SUDO')
takes_params = ( takes_params = (
Str('cn', Str('cn',