Refactored entity object resolution.

The IPA.get_entity() has been modified to accept either entity name
or entity object. If it receives an entity object it will return
the object itself. Otherwise, it will resolve the name in the entity
registry.

The other_entity variables have been modified to store a reference
to the entity object instead of its name. The test cases have been
modified to use real entity objects instead of just the names.

Ticket #2042
This commit is contained in:
Endi S. Dewata
2011-11-07 14:21:45 -06:00
committed by Petr Vobornik
parent 49e5555b11
commit 5fc064f13e
24 changed files with 157 additions and 154 deletions

View File

@@ -353,6 +353,8 @@ IPA.aci.delegation_entity = function(spec) {
var that = IPA.entity(spec); var that = IPA.entity(spec);
that.group_entity = IPA.get_entity(spec.group_entity || 'group');
that.init = function() { that.init = function() {
that.entity_init(); that.entity_init();
@@ -370,13 +372,13 @@ IPA.aci.delegation_entity = function(spec) {
{ {
type: 'entity_select', type: 'entity_select',
name: 'group', name: 'group',
other_entity: 'group', other_entity: that.group_entity,
other_field: 'cn' other_field: 'cn'
}, },
{ {
type: 'entity_select', type: 'entity_select',
name: 'memberof', name: 'memberof',
other_entity: 'group', other_entity: that.group_entity,
other_field: 'cn', other_field: 'cn',
join: true join: true
}, },
@@ -397,13 +399,13 @@ IPA.aci.delegation_entity = function(spec) {
{ {
type: 'entity_select', type: 'entity_select',
name: 'group', name: 'group',
other_entity: 'group', other_entity: that.group_entity,
other_field: 'cn' other_field: 'cn'
}, },
{ {
type: 'entity_select', type: 'entity_select',
name: 'memberof', name: 'memberof',
other_entity: 'group', other_entity: that.group_entity,
other_field: 'cn', other_field: 'cn',
join: true join: true
}, },
@@ -591,6 +593,8 @@ IPA.permission_target_widget = function(spec) {
var that = factory(spec); var that = factory(spec);
that.group_entity = IPA.get_entity(spec.group_entity || 'group');
that.targets = [ 'filter', 'subtree', 'targetgroup', 'type' ]; that.targets = [ 'filter', 'subtree', 'targetgroup', 'type' ];
that.target = that.targets[0]; that.target = that.targets[0];
that.show_target = spec.show_target; that.show_target = spec.show_target;
@@ -638,7 +642,7 @@ IPA.permission_target_widget = function(spec) {
that.group_select = IPA.entity_select_widget({ that.group_select = IPA.entity_select_widget({
entity: that.entity, entity: that.entity,
name: 'targetgroup', name: 'targetgroup',
other_entity: 'group', other_entity: that.group_entity,
other_field: 'cn', other_field: 'cn',
hidden: true hidden: true
}); });

View File

@@ -30,10 +30,10 @@ IPA.associator = function (spec) {
var that = {}; var that = {};
that.entity = spec.entity; that.entity = IPA.get_entity(spec.entity);
that.pkey = spec.pkey; that.pkey = spec.pkey;
that.other_entity = spec.other_entity; that.other_entity = IPA.get_entity(spec.other_entity);
that.values = spec.values; that.values = spec.values;
that.method = spec.method; that.method = spec.method;
@@ -77,7 +77,7 @@ IPA.serial_associator = function(spec) {
options[that.entity.name] = that.pkey; options[that.entity.name] = that.pkey;
command = IPA.command({ command = IPA.command({
entity: that.other_entity, entity: that.other_entity.name,
method: that.method, method: that.method,
args: args, args: args,
options: options options: options
@@ -122,7 +122,7 @@ IPA.bulk_associator = function(spec) {
var args = [that.pkey]; var args = [that.pkey];
var options = { 'all': true }; var options = { 'all': true };
options[that.other_entity] = value; options[that.other_entity.name] = value;
var command = IPA.command({ var command = IPA.command({
entity: that.entity.name, entity: that.entity.name,
@@ -150,19 +150,21 @@ IPA.association_adder_dialog = function(spec) {
var that = IPA.adder_dialog(spec); var that = IPA.adder_dialog(spec);
that.entity = spec.entity; that.entity = IPA.get_entity(spec.entity);
that.pkey = spec.pkey; that.pkey = spec.pkey;
that.other_entity = spec.other_entity;
that.other_entity = IPA.get_entity(spec.other_entity);
that.attribute_member = spec.attribute_member; that.attribute_member = spec.attribute_member;
that.exclude = spec.exclude || []; that.exclude = spec.exclude || [];
var init = function() { var init = function() {
if (!that.get_columns().length) { if (!that.get_columns().length) {
var pkey_name = IPA.metadata.objects[spec.other_entity].primary_key; var pkey_name = that.other_entity.metadata.primary_key;
that.create_column({ that.create_column({
entity: that.entity, entity: that.entity,
name: pkey_name, name: pkey_name,
label: IPA.metadata.objects[spec.other_entity].label, label: that.other_entity.metadata.label,
primary_key: true, primary_key: true,
width: '600px' width: '600px'
}); });
@@ -174,13 +176,12 @@ IPA.association_adder_dialog = function(spec) {
that.clear_available_values(); that.clear_available_values();
var other_entity = IPA.get_entity(that.other_entity); var pkey_attr = that.other_entity.metadata.primary_key;
var pkey_attr = other_entity.metadata.primary_key;
var selected = that.get_selected_values(); var selected = that.get_selected_values();
var results = data.result; var results = data.result;
var same_entity = that.entity.name === other_entity.name; var same_entity = that.entity === that.other_entity;
for (var i=0; i<results.count; i++) { for (var i=0; i<results.count; i++) {
var result = results.result[i]; var result = results.result[i];
var pkey = result[pkey_attr][0]; var pkey = result[pkey_attr][0];
@@ -194,7 +195,7 @@ IPA.association_adder_dialog = function(spec) {
} }
var options = { all: true }; var options = { all: true };
var relationships = IPA.metadata.objects[that.other_entity].relationships; var relationships = that.other_entity.metadata.relationships;
/* TODO: better generic handling of different relationships! */ /* TODO: better generic handling of different relationships! */
var other_attribute_member = ''; var other_attribute_member = '';
@@ -214,7 +215,7 @@ IPA.association_adder_dialog = function(spec) {
} }
IPA.command({ IPA.command({
entity: that.other_entity, entity: that.other_entity.name,
method: 'find', method: 'find',
args: [that.get_filter()], args: [that.get_filter()],
options: options, options: options,
@@ -237,9 +238,10 @@ IPA.association_deleter_dialog = function (spec) {
var that = IPA.deleter_dialog(spec); var that = IPA.deleter_dialog(spec);
that.entity = spec.entity; that.entity = IPA.get_entity(spec.entity);
that.pkey = spec.pkey; that.pkey = spec.pkey;
that.other_entity = spec.other_entity;
that.other_entity = IPA.get_entity(spec.other_entity);
that.values = spec.values; that.values = spec.values;
that.associator = spec.associator; that.associator = spec.associator;
@@ -289,11 +291,11 @@ IPA.association_table_widget = function (spec) {
spec.attribute_member = spec.attribute_member || spec.name.substring(0, index); spec.attribute_member = spec.attribute_member || spec.name.substring(0, index);
spec.other_entity = spec.other_entity || spec.name.substring(index+1); spec.other_entity = spec.other_entity || spec.name.substring(index+1);
spec.managed_entity_name = spec.other_entity; spec.managed_entity = IPA.get_entity(spec.other_entity);
var that = IPA.table_widget(spec); var that = IPA.table_widget(spec);
that.other_entity = spec.other_entity; that.other_entity = IPA.get_entity(spec.other_entity);
that.attribute_member = spec.attribute_member; that.attribute_member = spec.attribute_member;
that.associator = spec.associator || IPA.bulk_associator; that.associator = spec.associator || IPA.bulk_associator;
@@ -316,7 +318,7 @@ IPA.association_table_widget = function (spec) {
}; };
that.create_adder_column = function(spec) { that.create_adder_column = function(spec) {
spec.entity_name = that.other_entity; spec.entity = that.other_entity;
var column = IPA.column(spec); var column = IPA.column(spec);
that.add_adder_column(column); that.add_adder_column(column);
return column; return column;
@@ -328,7 +330,7 @@ IPA.association_table_widget = function (spec) {
that.create_column({ that.create_column({
name: that.name, name: that.name,
label: that.label, label: that.label,
entity_name: that.other_entity, entity: that.other_entity,
primary_key: true, primary_key: true,
link: true link: true
}); });
@@ -340,11 +342,11 @@ IPA.association_table_widget = function (spec) {
var columns = that.columns.values; var columns = that.columns.values;
for (var i=0; i<columns.length; i++) { for (var i=0; i<columns.length; i++) {
column = columns[i]; column = columns[i];
column.entity = IPA.get_entity(that.other_entity); column.entity = that.other_entity;
if (column.link) { if (column.link) {
column.link_handler = function(value) { column.link_handler = function(value) {
IPA.nav.show_page(that.other_entity, 'default', value); IPA.nav.show_page(that.other_entity.name, 'default', value);
return false; return false;
}; };
} }
@@ -356,7 +358,7 @@ IPA.association_table_widget = function (spec) {
var adder_columns = that.adder_columns.values; var adder_columns = that.adder_columns.values;
for (var j=0; j<adder_columns.length; j++) { for (var j=0; j<adder_columns.length; j++) {
column = adder_columns[j]; column = adder_columns[j];
column.entity_name = that.other_entity; column.entity = that.other_entity;
} }
}; };
@@ -497,7 +499,7 @@ IPA.association_table_widget = function (spec) {
var entity_label = that.entity.metadata.label_singular; var entity_label = that.entity.metadata.label_singular;
var pkey = IPA.nav.get_state(that.entity.name+'-pkey'); var pkey = IPA.nav.get_state(that.entity.name+'-pkey');
var other_entity_label = IPA.metadata.objects[that.other_entity].label; var other_entity_label = that.other_entity.metadata.label;
var title = that.add_title; var title = that.add_title;
title = title.replace('${entity}', entity_label); title = title.replace('${entity}', entity_label);
@@ -552,7 +554,7 @@ IPA.association_table_widget = function (spec) {
on_success: on_success, on_success: on_success,
on_error: on_error on_error: on_error
}); });
command.set_option(that.other_entity, values.join(',')); command.set_option(that.other_entity.name, values.join(','));
command.execute(); command.execute();
}; };
@@ -567,20 +569,21 @@ IPA.association_table_widget = function (spec) {
return; return;
} }
var entity_label = that.entity.metadata.label_singular;
var pkey = IPA.nav.get_state(that.entity.name+'-pkey'); var pkey = IPA.nav.get_state(that.entity.name+'-pkey');
var label = IPA.metadata.objects[that.other_entity].label; var other_entity_label = that.other_entity.metadata.label;
var title = that.remove_title; var title = that.remove_title;
title = title.replace('${entity}', that.entity.metadata.label_singular); title = title.replace('${entity}', entity_label);
title = title.replace('${primary_key}', pkey); title = title.replace('${primary_key}', pkey);
title = title.replace('${other_entity}', label); title = title.replace('${other_entity}', other_entity_label);
var dialog = IPA.association_deleter_dialog({ var dialog = IPA.association_deleter_dialog({
'title': title, title: title,
'entity': that.entity, entity: that.entity,
'pkey': pkey, pkey: pkey,
'other_entity': that.other_entity, other_entity: that.other_entity,
'values': selected_values, values: selected_values,
method: that.remove_method method: that.remove_method
}); });
@@ -614,7 +617,7 @@ IPA.association_table_widget = function (spec) {
on_error: on_error on_error: on_error
}); });
command.set_option(that.other_entity, values.join(',')); command.set_option(that.other_entity.name, values.join(','));
command.execute(); command.execute();
}; };
@@ -629,8 +632,7 @@ IPA.association_table_widget = function (spec) {
var i; var i;
if (spec.columns){ if (spec.columns){
for (i = 0; i < spec.columns.length; i+= 1){ for (i = 0; i < spec.columns.length; i+= 1){
spec.columns[i].entity_name = spec.columns[i].entity_name || spec.columns[i].entity = spec.columns[i].entity || that.other_entity;
that.other_entity;
that.create_column(spec.columns[i]); that.create_column(spec.columns[i]);
} }
} }
@@ -700,14 +702,14 @@ IPA.association_facet = function (spec) {
link must be set before the call to the base class, to affect the table. link must be set before the call to the base class, to affect the table.
*/ */
spec.link = spec.link === undefined ? true : spec.link; spec.link = spec.link === undefined ? true : spec.link;
spec.managed_entity_name = spec.other_entity; spec.managed_entity = IPA.get_entity(spec.other_entity);
var that = IPA.table_facet(spec); var that = IPA.table_facet(spec);
that.attribute_member = spec.attribute_member; that.attribute_member = spec.attribute_member;
that.indirect_attribute_member = spec.indirect_attribute_member; that.indirect_attribute_member = spec.indirect_attribute_member;
that.other_entity = spec.other_entity; that.other_entity = IPA.get_entity(spec.other_entity);
that.association_type = 'direct'; that.association_type = 'direct';
that.facet_group = spec.facet_group; that.facet_group = spec.facet_group;
@@ -728,7 +730,7 @@ IPA.association_facet = function (spec) {
}; };
that.add_adder_column = function(column) { that.add_adder_column = function(column) {
column.entity_name = that.managed_entity_name; column.entity = that.other_entity;
that.adder_columns.put(column.name, column); that.adder_columns.put(column.name, column);
}; };
@@ -742,7 +744,7 @@ IPA.association_facet = function (spec) {
factory = IPA.column; factory = IPA.column;
spec = { name: spec }; spec = { name: spec };
} }
spec.entity_name = that.other_entity; spec.entity = that.other_entity;
column = factory(spec); column = factory(spec);
that.add_adder_column(column); that.add_adder_column(column);
return column; return column;
@@ -755,7 +757,7 @@ IPA.association_facet = function (spec) {
var pkey_name; var pkey_name;
if (that.other_entity) { if (that.other_entity) {
pkey_name = IPA.metadata.objects[that.other_entity].primary_key; pkey_name = that.other_entity.metadata.primary_key;
} }
if (!that.columns.length){ if (!that.columns.length){
@@ -770,8 +772,7 @@ IPA.association_facet = function (spec) {
column.link = spec.link; column.link = spec.link;
} }
var other_entity = IPA.get_entity(that.other_entity); that.init_table(that.other_entity);
that.init_table(other_entity);
var adder_columns = spec.adder_columns || []; var adder_columns = spec.adder_columns || [];
for (i=0; i<adder_columns.length; i++) { for (i=0; i<adder_columns.length; i++) {
@@ -788,7 +789,7 @@ IPA.association_facet = function (spec) {
adder_columns = that.adder_columns.values; adder_columns = that.adder_columns.values;
for (i=0; i<adder_columns.length; i++) { for (i=0; i<adder_columns.length; i++) {
column = adder_columns[i]; column = adder_columns[i];
column.entity_name = that.other_entity; column.entity = that.other_entity;
} }
}; };
@@ -835,7 +836,7 @@ IPA.association_facet = function (spec) {
span.append(IPA.messages.association.show_results); span.append(IPA.messages.association.show_results);
span.append(' '); span.append(' ');
var name = that.entity.name+'-'+that.attribute_member+'-'+that.other_entity+'-type-radio'; var name = that.entity.name+'-'+that.attribute_member+'-'+that.other_entity.name+'-type-radio';
var direct_id = name + '-direct'; var direct_id = name + '-direct';
that.direct_radio = $('<input/>', { that.direct_radio = $('<input/>', {
@@ -880,9 +881,9 @@ IPA.association_facet = function (spec) {
that.get_attribute_name = function() { that.get_attribute_name = function() {
if (that.association_type == 'direct') { if (that.association_type == 'direct') {
return that.attribute_member+'_'+that.other_entity; return that.attribute_member+'_'+that.other_entity.name;
} else { } else {
return that.indirect_attribute_member+'_'+that.other_entity; return that.indirect_attribute_member+'_'+that.other_entity.name;
} }
}; };
@@ -895,13 +896,14 @@ IPA.association_facet = function (spec) {
that.show_add_dialog = function() { that.show_add_dialog = function() {
var entity_label = that.entity.metadata.label_singular;
var pkey = IPA.nav.get_state(that.entity.name+'-pkey'); var pkey = IPA.nav.get_state(that.entity.name+'-pkey');
var label = IPA.metadata.objects[that.other_entity] ? IPA.metadata.objects[that.other_entity].label : that.other_entity; var other_entity_label = that.other_entity.metadata.label;
var title = that.add_title; var title = that.add_title;
title = title.replace('${entity}', that.entity.metadata.label_singular); title = title.replace('${entity}', entity_label);
title = title.replace('${primary_key}', pkey); title = title.replace('${primary_key}', pkey);
title = title.replace('${other_entity}', label); title = title.replace('${other_entity}', other_entity_label);
var pkeys = that.data.result.result[that.get_attribute_name()]; var pkeys = that.data.result.result[that.get_attribute_name()];
@@ -924,16 +926,16 @@ IPA.association_facet = function (spec) {
var pkey = IPA.nav.get_state(that.entity.name+'-pkey'); var pkey = IPA.nav.get_state(that.entity.name+'-pkey');
var associator = that.associator({ var associator = that.associator({
'entity': that.entity, entity: that.entity,
'pkey': pkey, pkey: pkey,
'other_entity': that.other_entity, other_entity: that.other_entity,
'values': dialog.get_selected_values(), values: dialog.get_selected_values(),
'method': that.add_method, method: that.add_method,
'on_success': function() { on_success: function() {
that.refresh(); that.refresh();
dialog.close(); dialog.close();
}, },
'on_error': function() { on_error: function() {
that.refresh(); that.refresh();
dialog.close(); dialog.close();
} }
@@ -947,7 +949,6 @@ IPA.association_facet = function (spec) {
that.show_remove_dialog = function() { that.show_remove_dialog = function() {
var label = IPA.metadata.objects[that.other_entity] ? IPA.metadata.objects[that.other_entity].label : that.other_entity;
var values = that.table.get_selected_values(); var values = that.table.get_selected_values();
if (!values.length) { if (!values.length) {
@@ -956,12 +957,14 @@ IPA.association_facet = function (spec) {
return; return;
} }
var entity_label = that.entity.metadata.label_singular;
var pkey = IPA.nav.get_state(that.entity.name+'-pkey'); var pkey = IPA.nav.get_state(that.entity.name+'-pkey');
var other_entity_label = that.other_entity.metadata.label;
var title = that.remove_title; var title = that.remove_title;
title = title.replace('${entity}', that.entity.metadata.label_singular); title = title.replace('${entity}', entity_label);
title = title.replace('${primary_key}', pkey); title = title.replace('${primary_key}', pkey);
title = title.replace('${other_entity}', label); title = title.replace('${other_entity}', other_entity_label);
var dialog = IPA.association_deleter_dialog({ var dialog = IPA.association_deleter_dialog({
title: title, title: title,
@@ -1042,7 +1045,7 @@ IPA.association_facet = function (spec) {
var pkey = IPA.nav.get_state(that.entity.name+'-pkey'); var pkey = IPA.nav.get_state(that.entity.name+'-pkey');
if (that.pkey !== pkey) return true; if (that.pkey !== pkey) return true;
var page = parseInt(IPA.nav.get_state(that.entity_name+'-page'), 10) || 1; var page = parseInt(IPA.nav.get_state(that.entity.name+'-page'), 10) || 1;
if (that.table.current_page !== page) return true; if (that.table.current_page !== page) return true;
return false; return false;

View File

@@ -245,10 +245,10 @@ IPA.automount_key_column = function(spec) {
href: '#'+key, href: '#'+key,
text: key, text: key,
click: function() { click: function() {
var state = IPA.nav.get_path_state(that.entity_name); var state = IPA.nav.get_path_state(that.entity.name);
state[that.entity_name + '-facet'] = 'default'; state[that.entity.name + '-facet'] = 'default';
state[that.entity_name + '-info'] = info; state[that.entity.name + '-info'] = info;
state[that.entity_name + '-pkey'] = key; state[that.entity.name + '-pkey'] = key;
IPA.nav.push_state(state); IPA.nav.push_state(state);
return false; return false;
} }

View File

@@ -234,7 +234,7 @@ IPA.details_facet = function(spec) {
var that = IPA.facet(spec); var that = IPA.facet(spec);
that.entity = spec.entity; that.entity = IPA.get_entity(spec.entity);
that.update_command_name = spec.update_command_name || 'mod'; that.update_command_name = spec.update_command_name || 'mod';
that.command_mode = spec.command_mode || 'save'; // [save, info] that.command_mode = spec.command_mode || 'save'; // [save, info]

View File

@@ -59,7 +59,7 @@ IPA.dialog = function(spec) {
var that = {}; var that = {};
that.entity = spec.entity; that.entity = IPA.get_entity(spec.entity);
that.name = spec.name; that.name = spec.name;
that.id = spec.id; that.id = spec.id;
that.title = spec.title; that.title = spec.title;

View File

@@ -72,8 +72,7 @@ IPA.entity = function(spec) {
}; };
that.get_containing_entity = function() { that.get_containing_entity = function() {
return that.containing_entity ? return that.containing_entity;
IPA.get_entity(that.containing_entity) : null;
}; };
that.get_dialog = function(name) { that.get_dialog = function(name) {
@@ -93,7 +92,7 @@ IPA.entity = function(spec) {
}; };
that.dialog = function(dialog) { that.dialog = function(dialog) {
dialog.entity_name = that.name; dialog.entity = that;
that.dialogs.put(dialog.name, dialog); that.dialogs.put(dialog.name, dialog);
return that; return that;
}; };
@@ -143,7 +142,6 @@ IPA.entity = function(spec) {
}; };
that.add_facet = function(facet) { that.add_facet = function(facet) {
facet.entity_name = that.name;
facet.entity = that; facet.entity = that;
that.facets.put(facet.name, facet); that.facets.put(facet.name, facet);
@@ -321,6 +319,7 @@ IPA.entity_builder = function() {
} else { } else {
spec = { name: spec }; spec = { name: spec };
} }
spec.builder = that;
entity = factory(spec); entity = factory(spec);
@@ -495,7 +494,7 @@ IPA.entity_builder = function() {
that.containing_entity = function(entity_name) { that.containing_entity = function(entity_name) {
add_redirect_info(); add_redirect_info();
entity.containing_entity = entity_name; entity.containing_entity = IPA.get_entity(entity_name);
return that; return that;
}; };

View File

@@ -31,7 +31,7 @@ IPA.facet = function(spec) {
var that = {}; var that = {};
that.entity = spec.entity; that.entity = IPA.get_entity(spec.entity);
that.name = spec.name; that.name = spec.name;
that.label = spec.label; that.label = spec.label;
@@ -43,7 +43,6 @@ IPA.facet = function(spec) {
that.header = spec.header || IPA.facet_header({ facet: that }); that.header = spec.header || IPA.facet_header({ facet: that });
that.entity_name = spec.entity_name;
that._needs_update = spec.needs_update; that._needs_update = spec.needs_update;
that.dialogs = $.ordered_map(); that.dialogs = $.ordered_map();
@@ -407,7 +406,7 @@ IPA.table_facet = function(spec) {
var that = IPA.facet(spec); var that = IPA.facet(spec);
that.managed_entity_name = spec.managed_entity_name || that.entity.name; that.managed_entity = spec.managed_entity ? IPA.get_entity(spec.managed_entity) : that.entity;
that.pagination = spec.pagination === undefined ? true : spec.pagination; that.pagination = spec.pagination === undefined ? true : spec.pagination;
that.search_all = spec.search_all; that.search_all = spec.search_all;
@@ -431,7 +430,7 @@ IPA.table_facet = function(spec) {
}; };
that.add_column = function(column) { that.add_column = function(column) {
column.entity_name = that.managed_entity_name; column.entity = that.managed_entity;
that.columns.put(column.name, column); that.columns.put(column.name, column);
}; };
@@ -444,7 +443,7 @@ IPA.table_facet = function(spec) {
spec = { name: spec }; spec = { name: spec };
} }
spec.entity_name = that.managed_entity_name; spec.entity = that.managed_entity;
column = factory(spec); column = factory(spec);
that.add_column(column); that.add_column(column);
@@ -523,13 +522,13 @@ IPA.table_facet = function(spec) {
delete that.table.current_page; delete that.table.current_page;
var state = {}; var state = {};
var page = parseInt(IPA.nav.get_state(that.entity_name+'-page'), 10) || 1; var page = parseInt(IPA.nav.get_state(that.entity.name+'-page'), 10) || 1;
if (page < 1) { if (page < 1) {
state[that.entity_name+'-page'] = 1; state[that.entity.name+'-page'] = 1;
IPA.nav.push_state(state); IPA.nav.push_state(state);
return; return;
} else if (page > that.table.total_pages) { } else if (page > that.table.total_pages) {
state[that.entity_name+'-page'] = that.table.total_pages; state[that.entity.name+'-page'] = that.table.total_pages;
IPA.nav.push_state(state); IPA.nav.push_state(state);
return; return;
} }
@@ -597,7 +596,7 @@ IPA.table_facet = function(spec) {
}; };
that.get_records_command_name = function() { that.get_records_command_name = function() {
return that.managed_entity_name+'_get_records'; return that.managed_entity.name+'_get_records';
}; };
that.get_records = function(on_success, on_error) { that.get_records = function(on_success, on_error) {
@@ -682,7 +681,7 @@ IPA.table_facet = function(spec) {
that.table.prev_page = function() { that.table.prev_page = function() {
if (that.table.current_page > 1) { if (that.table.current_page > 1) {
var state = {}; var state = {};
state[that.entity_name+'-page'] = that.table.current_page - 1; state[that.entity.name+'-page'] = that.table.current_page - 1;
IPA.nav.push_state(state); IPA.nav.push_state(state);
} }
}; };
@@ -690,7 +689,7 @@ IPA.table_facet = function(spec) {
that.table.next_page = function() { that.table.next_page = function() {
if (that.table.current_page < that.table.total_pages) { if (that.table.current_page < that.table.total_pages) {
var state = {}; var state = {};
state[that.entity_name+'-page'] = that.table.current_page + 1; state[that.entity.name+'-page'] = that.table.current_page + 1;
IPA.nav.push_state(state); IPA.nav.push_state(state);
} }
}; };
@@ -702,7 +701,7 @@ IPA.table_facet = function(spec) {
page = that.total_pages; page = that.total_pages;
} }
var state = {}; var state = {};
state[that.entity_name+'-page'] = page; state[that.entity.name+'-page'] = page;
IPA.nav.push_state(state); IPA.nav.push_state(state);
}; };
}; };

View File

@@ -29,7 +29,7 @@ IPA.field = function(spec) {
var that = {}; var that = {};
that.entity = spec.entity; that.entity = IPA.get_entity(spec.entity);
that.container = null; that.container = null;
that.name = spec.name; that.name = spec.name;
that.label = spec.label; that.label = spec.label;
@@ -532,7 +532,7 @@ IPA.link_field = function(spec) {
var that = IPA.field(spec); var that = IPA.field(spec);
var other_entity = spec.other_entity; that.other_entity = IPA.get_entity(spec.other_entity);
function other_pkeys () { function other_pkeys () {
return that.entity.get_primary_key(); return that.entity.get_primary_key();
@@ -542,7 +542,7 @@ IPA.link_field = function(spec) {
that.on_link_clicked = function() { that.on_link_clicked = function() {
IPA.nav.show_entity_page( IPA.nav.show_entity_page(
IPA.get_entity(other_entity), that.other_entity,
'default', 'default',
that.other_pkeys()); that.other_pkeys());
}; };
@@ -556,7 +556,7 @@ IPA.link_field = function(spec) {
that.check_entity_link = function() { that.check_entity_link = function() {
IPA.command({ IPA.command({
entity: other_entity, entity: that.other_entity.name,
method: 'show', method: 'show',
args: that.other_pkeys(), args: that.other_pkeys(),
options: {}, options: {},

View File

@@ -40,7 +40,7 @@ IPA.hbac.test_entity = function(spec) {
factory: IPA.hbac.test_select_facet, factory: IPA.hbac.test_select_facet,
name: 'user', name: 'user',
label: IPA.messages.objects.hbacrule.user, label: IPA.messages.objects.hbacrule.user,
managed_entity_name: 'user', managed_entity: 'user',
disable_breadcrumb: true, disable_breadcrumb: true,
facet_group: 'default', facet_group: 'default',
columns: [ columns: [
@@ -53,7 +53,7 @@ IPA.hbac.test_entity = function(spec) {
factory: IPA.hbac.test_select_facet, factory: IPA.hbac.test_select_facet,
name: 'targethost', name: 'targethost',
label: IPA.messages.objects.hbacrule.host, label: IPA.messages.objects.hbacrule.host,
managed_entity_name: 'host', managed_entity: 'host',
disable_breadcrumb: true, disable_breadcrumb: true,
facet_group: 'default', facet_group: 'default',
columns: [ columns: [
@@ -70,7 +70,7 @@ IPA.hbac.test_entity = function(spec) {
factory: IPA.hbac.test_select_facet, factory: IPA.hbac.test_select_facet,
name: 'service', name: 'service',
label: IPA.messages.objects.hbacrule.service, label: IPA.messages.objects.hbacrule.service,
managed_entity_name: 'hbacsvc', managed_entity: 'hbacsvc',
disable_breadcrumb: true, disable_breadcrumb: true,
facet_group: 'default', facet_group: 'default',
columns: [ columns: [
@@ -82,7 +82,7 @@ IPA.hbac.test_entity = function(spec) {
factory: IPA.hbac.test_select_facet, factory: IPA.hbac.test_select_facet,
name: 'sourcehost', name: 'sourcehost',
label: IPA.messages.objects.hbacrule.sourcehost, label: IPA.messages.objects.hbacrule.sourcehost,
managed_entity_name: 'host', managed_entity: 'host',
disable_breadcrumb: true, disable_breadcrumb: true,
facet_group: 'default', facet_group: 'default',
columns: [ columns: [
@@ -99,7 +99,7 @@ IPA.hbac.test_entity = function(spec) {
factory: IPA.hbac.test_rules_facet, factory: IPA.hbac.test_rules_facet,
name: 'rules', name: 'rules',
label: IPA.messages.objects.hbactest.rules, label: IPA.messages.objects.hbactest.rules,
managed_entity_name: 'hbacrule', managed_entity: 'hbacrule',
disable_breadcrumb: true, disable_breadcrumb: true,
facet_group: 'default', facet_group: 'default',
columns: [ columns: [
@@ -115,7 +115,7 @@ IPA.hbac.test_entity = function(spec) {
factory: IPA.hbac.test_run_facet, factory: IPA.hbac.test_run_facet,
name: 'run_test', name: 'run_test',
label: IPA.messages.objects.hbactest.run_test, label: IPA.messages.objects.hbactest.run_test,
managed_entity_name: 'hbacrule', managed_entity: 'hbacrule',
disable_breadcrumb: true, disable_breadcrumb: true,
facet_group: 'default', facet_group: 'default',
columns: [ columns: [
@@ -145,13 +145,13 @@ IPA.hbac.test_facet = function(spec) {
var init = function() { var init = function() {
that.managed_entity = IPA.get_entity(that.managed_entity_name); that.managed_entity = IPA.get_entity(that.managed_entity);
var columns = that.columns.values; var columns = that.columns.values;
for (var i=0; i<columns.length; i++) { for (var i=0; i<columns.length; i++) {
var column = columns[i]; var column = columns[i];
var metadata = IPA.get_entity_param(that.managed_entity_name, column.name); var metadata = IPA.get_entity_param(that.managed_entity.name, column.name);
column.primary_key = metadata && metadata.primary_key; column.primary_key = metadata && metadata.primary_key;
column.link = column.primary_key; column.link = column.primary_key;
} }
@@ -753,7 +753,7 @@ IPA.hbac.test_run_facet = function(spec) {
if (!that.show_matched && that.show_unmatched) { if (!that.show_matched && that.show_unmatched) {
return 'hbactest_unmatched'; return 'hbactest_unmatched';
} }
return that.managed_entity_name+'_get_records'; return that.managed_entity.name+'_get_records';
}; };
that.load_records = function(records) { that.load_records = function(records) {
@@ -761,7 +761,7 @@ IPA.hbac.test_run_facet = function(spec) {
that.table.empty(); that.table.empty();
for (var i=0; i<records.length; i++) { for (var i=0; i<records.length; i++) {
var record = records[i]; var record = records[i];
var pkey = record[pkey_name]; var pkey = record[pkey_name][0];
record.matched = that.matched[pkey]; record.matched = that.matched[pkey];
that.table.add_record(record); that.table.add_record(record);
} }

View File

@@ -432,7 +432,7 @@ IPA.dnszone_select_widget = function(spec) {
that.create_search_command = function(filter) { that.create_search_command = function(filter) {
return IPA.command({ return IPA.command({
entity: that.other_entity, entity: that.other_entity.name,
method: 'find', method: 'find',
args: [filter], args: [filter],
options: { options: {

View File

@@ -187,12 +187,11 @@ var IPA = function() {
if (!factory) return null; if (!factory) return null;
try { try {
var builder = that.entity_builder(); var builder = IPA.entity_builder();
builder.entity({ builder.entity({
factory: factory, factory: factory,
name: name, name: name
builder: builder
}); });
var entity = builder.build(); var entity = builder.build();
@@ -222,6 +221,7 @@ var IPA = function() {
}; };
that.get_entity = function(name) { that.get_entity = function(name) {
if (typeof name === 'object') return name;
var entity = that.entities.get(name); var entity = that.entities.get(name);
if (!entity) { if (!entity) {
entity = that.create_entity(name); entity = that.create_entity(name);

View File

@@ -121,7 +121,7 @@ IPA.rule_association_table_widget = function(spec) {
that.create_column({ that.create_column({
name: that.external, name: that.external,
label: IPA.messages.objects.sudorule.external, label: IPA.messages.objects.sudorule.external,
entity_name: that.other_entity, entity: that.other_entity,
format: IPA.boolean_format, format: IPA.boolean_format,
width: '200px' width: '200px'
}); });
@@ -133,7 +133,7 @@ IPA.rule_association_table_widget = function(spec) {
var entity_label = that.entity.metadata.label_singular; var entity_label = that.entity.metadata.label_singular;
var pkey = IPA.nav.get_state(that.entity.name+'-pkey'); var pkey = IPA.nav.get_state(that.entity.name+'-pkey');
var other_entity_label = IPA.metadata.objects[that.other_entity].label; var other_entity_label = that.other_entity.metadata.label;
var title = that.add_title; var title = that.add_title;
title = title.replace('${entity}', entity_label); title = title.replace('${entity}', entity_label);
@@ -213,7 +213,7 @@ IPA.rule_association_table_field = function(spec) {
options: {all: true, rights: true} options: {all: true, rights: true}
}); });
command.set_option(that.widget.other_entity, values.join(',')); command.set_option(that.widget.other_entity.name, values.join(','));
update_info.append_command(command, that.priority); update_info.append_command(command, that.priority);
} }
} }
@@ -240,7 +240,7 @@ IPA.rule_association_adder_dialog = function(spec) {
that.selected_table.add_rows(rows); that.selected_table.add_rows(rows);
if (that.external) { if (that.external) {
var pkey_name = IPA.metadata.objects[that.other_entity].primary_key; var pkey_name = that.other_entity.metadata.primary_key;
var value = that.external_field.val(); var value = that.external_field.val();
if (!value) return; if (!value) return;

View File

@@ -29,7 +29,7 @@ IPA.search_facet = function(spec) {
spec = spec || {}; spec = spec || {};
spec.name = spec.name || 'search'; spec.name = spec.name || 'search';
spec.managed_entity_name = spec.managed_entity_name || spec.entity.name; spec.managed_entity = spec.managed_entity ? IPA.get_entity(spec.managed_entity) : spec.entity;
spec.disable_breadcrumb = spec.disable_breadcrumb =
spec.disable_breadcrumb === undefined ? true : spec.disable_breadcrumb; spec.disable_breadcrumb === undefined ? true : spec.disable_breadcrumb;
@@ -46,8 +46,6 @@ IPA.search_facet = function(spec) {
var init = function() { var init = function() {
that.managed_entity = IPA.get_entity(that.managed_entity_name);
that.init_table(that.managed_entity); that.init_table(that.managed_entity);
}; };
@@ -160,7 +158,7 @@ IPA.search_facet = function(spec) {
that.find = function() { that.find = function() {
var filter = that.filter.val(); var filter = that.filter.val();
var state = {}; var state = {};
state[that.managed_entity_name + '-filter'] = filter; state[that.managed_entity.name + '-filter'] = filter;
IPA.nav.push_state(state); IPA.nav.push_state(state);
}; };
@@ -311,7 +309,7 @@ IPA.nested_search_facet = function(spec) {
spec = spec || {}; spec = spec || {};
spec.managed_entity_name = spec.nested_entity; spec.managed_entity = IPA.get_entity(spec.nested_entity);
spec.disable_breadcrumb = false; spec.disable_breadcrumb = false;
spec.disable_facet_tabs = false; spec.disable_facet_tabs = false;
@@ -325,7 +323,7 @@ IPA.nested_search_facet = function(spec) {
IPA.nav.get_state(IPA.current_entity.name+'-pkey')); IPA.nav.get_state(IPA.current_entity.name+'-pkey'));
if (that.filter) { if (that.filter) {
var filter = IPA.nav.get_state(that.managed_entity_name+'-filter'); var filter = IPA.nav.get_state(that.managed_entity.name+'-filter');
that.filter.val(filter); that.filter.val(filter);
} }
}; };

View File

@@ -658,7 +658,7 @@ IPA.sudo.options_section = function(spec) {
that.table.create_column({ that.table.create_column({
name: 'ipasudoopt', name: 'ipasudoopt',
label: IPA.get_command_option('sudorule_add_option', 'ipasudoopt').label, label: IPA.get_command_option('sudorule_add_option', 'ipasudoopt').label,
entity_name:that.entity.name, entity: that.entity,
primary_key: true primary_key: true
}); });

View File

@@ -20,7 +20,6 @@
<script type="text/javascript" src="../association.js"></script> <script type="text/javascript" src="../association.js"></script>
<script type="text/javascript" src="../navigation.js"></script> <script type="text/javascript" src="../navigation.js"></script>
<script type="text/javascript" src="../aci.js"></script> <script type="text/javascript" src="../aci.js"></script>
<script type="text/javascript" src="aci_tests.js"></script> <script type="text/javascript" src="aci_tests.js"></script>
</head> </head>
<body> <body>

View File

@@ -22,7 +22,8 @@
var target_container; var target_container;
var target_widget; var target_widget;
var target_facet; var target_facet;
var entity = IPA.entity({ name:'bogus', metadata: {} }); var entity = IPA.entity({ name: 'bogus' });
var group_entity = IPA.entity({ name: 'group' });
module('aci', { module('aci', {
setup: function() { setup: function() {
@@ -74,6 +75,7 @@ module('aci', {
{ {
type: 'permission_target', type: 'permission_target',
container_factory: IPA.details_table_section, container_factory: IPA.details_table_section,
group_entity: group_entity,
name: 'target', name: 'target',
label: 'Target', label: 'Target',
show_target: false show_target: false

View File

@@ -13,6 +13,7 @@
<script type="text/javascript" src="../search.js"></script> <script type="text/javascript" src="../search.js"></script>
<script type="text/javascript" src="../add.js"></script> <script type="text/javascript" src="../add.js"></script>
<script type="text/javascript" src="../association.js"></script> <script type="text/javascript" src="../association.js"></script>
<script type="text/javascript" src="../entity.js"></script>
<script type="text/javascript" src="association_tests.js"></script> <script type="text/javascript" src="association_tests.js"></script>
</head> </head>
<body> <body>

View File

@@ -27,11 +27,14 @@ test("Testing serial_associator().", function() {
var orig_ipa_batch_command = IPA.batch_command; var orig_ipa_batch_command = IPA.batch_command;
var user = IPA.entity({ name: 'user' });
var group = IPA.entity({ name: 'group' });
var params = { var params = {
method: 'add_member', method: 'add_member',
pkey: 'test', pkey: 'test',
entity: {name:'user'}, entity: user,
other_entity: 'group' other_entity: group
}; };
params.values = ['user1', 'user2', 'user3']; params.values = ['user1', 'user2', 'user3'];
@@ -50,7 +53,7 @@ test("Testing serial_associator().", function() {
command = that.commands[i]; command = that.commands[i];
equals( equals(
command.entity, params.other_entity, command.entity, params.other_entity.name,
'Checking IPA.command() parameter: entity'); 'Checking IPA.command() parameter: entity');
equals( equals(
@@ -86,11 +89,14 @@ test("Testing bulk_associator().", function() {
var counter = 0; var counter = 0;
var user = IPA.entity({ name: 'user' });
var group = IPA.entity({ name: 'group' });
var params = { var params = {
method: "add_member", method: 'add_member',
pkey: "test", pkey: 'test',
entity: {name:"user"}, entity: user,
other_entity: "group" other_entity: group
}; };
params.values = ['user1', 'user2', 'user3']; params.values = ['user1', 'user2', 'user3'];
@@ -111,7 +117,7 @@ test("Testing bulk_associator().", function() {
'Checking IPA.command() parameter: primary key'); 'Checking IPA.command() parameter: primary key');
equals( equals(
that.options[params.other_entity], 'user1,user2,user3', that.options[params.other_entity.name], 'user1,user2,user3',
'Checking IPA.command() parameter: options[\""+params.other_entity+"\"]'); 'Checking IPA.command() parameter: options[\""+params.other_entity+"\"]');
that.on_success({}); that.on_success({});

View File

@@ -15,7 +15,6 @@
<script type="text/javascript" src="../details.js"></script> <script type="text/javascript" src="../details.js"></script>
<script type="text/javascript" src="../facet.js"></script> <script type="text/javascript" src="../facet.js"></script>
<script type="text/javascript" src="../entity.js"></script> <script type="text/javascript" src="../entity.js"></script>
<script type="text/javascript" src="details_tests.js"></script> <script type="text/javascript" src="details_tests.js"></script>
</head> </head>
<body> <body>

View File

@@ -4,7 +4,6 @@
<title>Core Test Suite</title> <title>Core Test Suite</title>
<link rel="stylesheet" href="qunit.css" type="text/css" media="screen"> <link rel="stylesheet" href="qunit.css" type="text/css" media="screen">
<link rel="stylesheet" type="text/css" href="../jquery-ui.css" /> <link rel="stylesheet" type="text/css" href="../jquery-ui.css" />
<script type="text/javascript" src="qunit.js"></script> <script type="text/javascript" src="qunit.js"></script>
<script type="text/javascript" src="../jquery.js"></script> <script type="text/javascript" src="../jquery.js"></script>
<script type="text/javascript" src="../jquery.ba-bbq.js"></script> <script type="text/javascript" src="../jquery.ba-bbq.js"></script>

View File

@@ -4,7 +4,6 @@
<title>Ordered Map Test Suite</title> <title>Ordered Map Test Suite</title>
<link rel="stylesheet" href="qunit.css" type="text/css" media="screen"> <link rel="stylesheet" href="qunit.css" type="text/css" media="screen">
<link rel="stylesheet" type="text/css" href="../jquery-ui.css" /> <link rel="stylesheet" type="text/css" href="../jquery-ui.css" />
<script type="text/javascript" src="qunit.js"></script> <script type="text/javascript" src="qunit.js"></script>
<script type="text/javascript" src="../jquery.js"></script> <script type="text/javascript" src="../jquery.js"></script>
<script type="text/javascript" src="../jquery.ordered-map.js"></script> <script type="text/javascript" src="../jquery.ordered-map.js"></script>

View File

@@ -4,16 +4,13 @@
<title>Widget Test Suite</title> <title>Widget Test Suite</title>
<link rel="stylesheet" href="qunit.css" type="text/css" media="screen"> <link rel="stylesheet" href="qunit.css" type="text/css" media="screen">
<script type="text/javascript" src="qunit.js"></script> <script type="text/javascript" src="qunit.js"></script>
<script type="text/javascript" src="../jquery.js"></script> <script type="text/javascript" src="../jquery.js"></script>
<script type="text/javascript" src="../jquery.ba-bbq.js"></script> <script type="text/javascript" src="../jquery.ba-bbq.js"></script>
<script type="text/javascript" src="../jquery-ui.js"></script> <script type="text/javascript" src="../jquery-ui.js"></script>
<script type="text/javascript" src="../jquery.ordered-map.js"></script> <script type="text/javascript" src="../jquery.ordered-map.js"></script>
<script type="text/javascript" src="../ipa.js"></script> <script type="text/javascript" src="../ipa.js"></script>
<script type="text/javascript" src="../widget.js"></script> <script type="text/javascript" src="../widget.js"></script>
<script type="text/javascript" src="../entity.js"></script>
<script type="text/javascript" src="widget_tests.js"></script> <script type="text/javascript" src="widget_tests.js"></script>
</head> </head>
<body> <body>

View File

@@ -55,7 +55,6 @@ function base_widget_test(value){
widget = factory(spec); widget = factory(spec);
var entity_name = 'user';
var field_name = widget.name; var field_name = widget.name;
ok (widget, "Created Widget"); ok (widget, "Created Widget");
@@ -151,16 +150,14 @@ test("IPA.table_widget" ,function(){
name:'uid', name:'uid',
label:'User ID', label:'User ID',
primary_key:'uid', primary_key:'uid',
width:'20em', width:'20em'
entity_name:'user'
})); }));
widget.add_column(IPA.column({ widget.add_column(IPA.column({
entity: spec.entity, entity: spec.entity,
name:'title', name:'title',
lable:'Title', lable:'Title',
primary_key:'uid', primary_key:'uid',
width:'20em', width:'20em'
entity_name:'user'
})); }));
ok(!widget.container,'widget has no container before create'); ok(!widget.container,'widget has no container before create');
@@ -269,13 +266,14 @@ test("IPA.select_widget" ,function(){
}); });
test("IPA.entity_select_widget" ,function(){ test("IPA.entity_select_widget" ,function() {
factory = IPA.entity_select_widget; var user = IPA.entity({ name: 'user' });
factory = IPA.entity_select_widget;
spec = { spec = {
name: 'uid', name: 'uid',
other_entity:'user', other_entity: user,
field_name:'uid', other_field: 'uid'
other_field: 'uid' }; };
base_widget_test('test_value'); base_widget_test('test_value');
var mock_record = { uid: ['kfrog']}; var mock_record = { uid: ['kfrog']};

View File

@@ -36,7 +36,7 @@ IPA.widget = function(spec) {
that.id = spec.id; that.id = spec.id;
that.label = spec.label; that.label = spec.label;
that.tooltip = spec.tooltip; that.tooltip = spec.tooltip;
that.entity = spec.entity; //some old widgets still need it that.entity = IPA.get_entity(spec.entity); //some old widgets still need it
that.create = function(container) { that.create = function(container) {
container.addClass('widget'); container.addClass('widget');
@@ -932,20 +932,20 @@ IPA.column = function (spec) {
var that = {}; var that = {};
that.entity = IPA.get_entity(spec.entity);
that.name = spec.name; that.name = spec.name;
that.label = spec.label; that.label = spec.label;
that.width = spec.width; that.width = spec.width;
that.entity_name = spec.entity ? spec.entity.name : spec.entity_name;
that.primary_key = spec.primary_key; that.primary_key = spec.primary_key;
that.link = spec.link; that.link = spec.link;
that.format = spec.format; that.format = spec.format;
if (!that.entity_name){ if (!that.entity) {
var except = { throw {
expected: false, expected: false,
message:'Column created without an entity_name.' message: 'Column created without an entity.'
}; };
throw except;
} }
that.setup = function(container, record, suppress_link) { that.setup = function(container, record, suppress_link) {
@@ -978,8 +978,8 @@ IPA.column = function (spec) {
/*column initialization*/ /*column initialization*/
if (that.entity_name && !that.label) { if (that.entity && !that.label) {
var metadata = IPA.get_entity_param(that.entity_name, that.name); var metadata = IPA.get_entity_param(that.entity.name, that.name);
if (metadata) { if (metadata) {
that.label = metadata.label; that.label = metadata.label;
} }
@@ -1726,14 +1726,14 @@ IPA.entity_select_widget = function(spec) {
var that = IPA.combobox_widget(spec); var that = IPA.combobox_widget(spec);
that.other_entity = spec.other_entity; that.other_entity = IPA.get_entity(spec.other_entity);
that.other_field = spec.other_field; that.other_field = spec.other_field;
that.options = spec.options || []; that.options = spec.options || [];
that.create_search_command = function(filter) { that.create_search_command = function(filter) {
return IPA.command({ return IPA.command({
entity: that.other_entity, entity: that.other_entity.name,
method: 'find', method: 'find',
args: [filter] args: [filter]
}); });