1
0
mirror of https://github.com/ansible/awx.git synced 2024-10-31 15:21:13 +03:00

populate fields in users.edit and teams.edit $states resolves #1403

users edit done

finish fixes to UsersTeamsEdit

fix logging issue
This commit is contained in:
Leigh Johnson 2016-04-12 11:10:37 -04:00
parent 0a15ece049
commit 30439a85b0
4 changed files with 256 additions and 695 deletions

View File

@ -166,7 +166,7 @@ export function TeamsAdd($scope, $rootScope, $compile, $location, $log,
Wait('stop');
$rootScope.flashMessage = "New team successfully created!";
$rootScope.$broadcast("EditIndicatorChange", "users", data.id);
$location.path('/teams/' + data.id);
$state.go('teams.edit', {team_id: data.id}, {reload: true});
})
.error(function (data, status) {
Wait('stop');
@ -188,11 +188,10 @@ TeamsAdd.$inject = ['$scope', '$rootScope', '$compile', '$location', '$log',
];
export function TeamsEdit($scope, $rootScope, $compile, $location, $log,
$stateParams, TeamForm, GenerateForm, Rest, Alert, ProcessErrors,
RelatedSearchInit, RelatedPaginateInit, ReturnToCaller, ClearScope,
LookUpInit, Prompt, GetBasePath, CheckAccess, OrganizationList, Wait,
fieldChoices, fieldLabels, permissionsSearchSelect, $state) {
export function TeamsEdit($scope, $rootScope, $location,
$stateParams, TeamForm, GenerateForm, Rest, ProcessErrors,
RelatedSearchInit, RelatedPaginateInit, ClearScope,
LookUpInit, GetBasePath, OrganizationList, Wait, $state) {
ClearScope();
@ -204,238 +203,109 @@ export function TeamsEdit($scope, $rootScope, $compile, $location, $log,
id = $stateParams.team_id,
relatedSets = {};
$scope.permission_label = {};
$scope.permission_search_select = [];
$scope.$emit("RefreshTeamsList");
// return a promise from the options request with the permission type choices (including adhoc) as a param
// var permissionsChoice = fieldChoices({
// scope: $scope,
// url: 'api/v1/' + base + '/' + id + '/permissions/',
// field: 'permission_type'
// });
// // manipulate the choices from the options request to be set on
// // scope and be usable by the list form
// permissionsChoice.then(function (choices) {
// choices =
// fieldLabels({
// choices: choices
// });
// _.map(choices, function(n, key) {
// $scope.permission_label[key] = n;
// });
// });
// manipulate the choices from the options request to be usable
// by the search option for permission_type, you can't inject the
// list until this is done!
// permissionsChoice.then(function (choices) {
// form.related.permissions.fields.permission_type.searchOptions =
// permissionsSearchSelect({
// choices: choices
// });
generator.inject(form, { mode: 'edit', related: true, scope: $scope });
generator.reset();
$scope.$emit('loadTeam');
// });
generator.inject(form, { mode: 'edit', related: true, scope: $scope });
generator.reset();
$scope.$emit('loadTeam');
$scope.team_id = id;
$scope.PermissionAddAllowed = false;
// Retrieve each related set and any lookups
if ($scope.loadTeamRemove) {
$scope.loadTeamRemove();
}
$scope.loadTeamRemove = $scope.$on('loadTeam', function () {
// Retrieve detail record and prepopulate the form
Wait('start');
Rest.setUrl(defaultUrl + ':id/');
Rest.get({
params: {
id: id
}
generator.inject(form, { mode: 'edit', related: true, scope: $scope });
generator.reset()
var setScopeFields = function(data){
_(data)
.pick(function(value, key){
return form.fields.hasOwnProperty(key) === true;
})
.success(function (data) {
var fld, related, set;
$scope.team_name = data.name;
for (fld in form.fields) {
if (data[fld]) {
$scope[fld] = data[fld];
master[fld] = $scope[fld];
}
}
related = data.related;
for (set in form.related) {
if (related[set]) {
relatedSets[set] = {
url: related[set],
iterator: form.related[set].iterator
};
}
}
// Initialize related search functions. Doing it here to make sure relatedSets object is populated.
RelatedSearchInit({
scope: $scope,
form: form,
relatedSets: relatedSets
});
RelatedPaginateInit({
scope: $scope,
relatedSets: relatedSets
});
LookUpInit({
scope: $scope,
form: form,
current_item: data.organization,
list: OrganizationList,
field: 'organization',
input_type: 'radio'
});
$scope.organization_url = data.related.organization;
$scope.organization_name = data.summary_fields.organization.name;
master.organization_name = data.summary_fields.organization.name;
// get related object values and populate
for (var relatedValues in relatedSets) {
$scope.search(relatedSets[relatedValues].iterator);
}
CheckAccess({ scope: $scope }); //Does the user have access to add/edit Permissions?
Wait('stop');
})
.error(function (data, status) {
ProcessErrors($scope, data, status, form, { hdr: 'Error!', msg: 'Failed to retrieve team: ' + $stateParams.team_id +
'. GET status: ' + status });
Wait('stop');
});
});
$scope.getPermissionText = function () {
if (this.permission.permission_type !== "admin" && this.permission.run_ad_hoc_commands) {
return $scope.permission_label[this.permission.permission_type] +
" and " + $scope.permission_label.adhoc;
} else {
return $scope.permission_label[this.permission.permission_type];
}
.forEach(function(value, key){
$scope[key] = value;
})
.value();
return
};
var setScopeRelated = function(data, related){
_(related)
.pick(function(value, key){
return data.related.hasOwnProperty(key) === true;
})
.forEach(function(value, key){
relatedSets[key] = {
url: data.related[key],
iterator: value.iterator
};
})
.value();
};
// Save changes to the parent
$scope.formSave = function () {
var data = {}, fld;
generator.clearApiErrors();
Wait('start');
$rootScope.flashMessage = null;
Rest.setUrl(defaultUrl + $stateParams.team_id + '/');
for (fld in form.fields) {
data[fld] = $scope[fld];
}
Rest.put(data)
.success(function () {
Wait('stop');
var base = $location.path().replace(/^\//, '').split('/')[0];
$scope.team_name = $scope.name;
if (base === 'teams') {
ReturnToCaller();
}
else {
ReturnToCaller(1);
}
})
.error(function (data, status) {
Wait('stop');
ProcessErrors($scope, data, status, form, { hdr: 'Error!',
msg: 'Failed to update team: ' + $stateParams.team_id + '. PUT status: ' + status });
});
};
$scope.formCancel = function () {
$state.transitionTo('teams');
};
// Related set: Add button
$scope.add = function (set) {
$rootScope.flashMessage = null;
if (set === 'permissions') {
if ($scope.PermissionAddAllowed) {
$location.path('/' + base + '/' + $stateParams.team_id + '/' + set + '/add');
} else {
Alert('Access Denied', 'You do not have access to this function. Please contact your system administrator.');
// prepares a data payload for a PUT request to the API
var processNewData = function(fields){
var data = {};
_.forEach(fields, function(value, key){
if ($scope[key] !== '' && $scope[key] !== null && $scope[key] !== undefined){
data[key] = $scope[key];
}
} else {
$location.path('/' + base + '/' + $stateParams.team_id + '/' + set);
}
};
// Related set: Edit button
$scope.edit = function (set, id) {
$rootScope.flashMessage = null;
if (set === 'permissions') {
$location.path('/' + base + '/' + $stateParams.team_id + '/' + set + '/' + id);
} else {
$location.path('/' + set + '/' + id);
}
};
// Related set: Delete button
$scope['delete'] = function (set, itm_id, name, title) {
$rootScope.flashMessage = null;
var action = function () {
var url;
if (set === 'permissions') {
if ($scope.PermissionAddAllowed) {
url = GetBasePath('base') + 'permissions/' + itm_id + '/';
Rest.setUrl(url);
Rest.destroy()
.success(function () {
$('#prompt-modal').modal('hide');
$scope.search(form.related[set].iterator);
})
.error(function (data, status) {
$('#prompt-modal').modal('hide');
ProcessErrors($scope, data, status, null, { hdr: 'Error!', msg: 'Call to ' + url +
' failed. DELETE returned status: ' + status });
});
} else {
Alert('Access Denied', 'You do not have access to this function. Please contact your system administrator.');
}
} else {
url = defaultUrl + $stateParams.team_id + '/' + set + '/';
Rest.setUrl(url);
Rest.post({ id: itm_id, disassociate: 1 })
.success(function () {
$('#prompt-modal').modal('hide');
$scope.search(form.related[set].iterator);
})
.error(function (data, status) {
$('#prompt-modal').modal('hide');
ProcessErrors($scope, data, status, null, { hdr: 'Error!', msg: 'Call to ' + url +
' failed. POST returned status: ' + status });
});
}
};
Prompt({
hdr: 'Delete',
body: '<div class="Prompt-bodyQuery">Are you sure you want to remove the ' + title + ' below from ' + $scope.name + '?</div><div class="Prompt-bodyTarget">' + name + '</div>',
action: action,
actionText: 'DELETE'
});
return data
};
var init = function(){
var url = defaultUrl + id;
Rest.setUrl(url);
Wait('start');
Rest.get(url).success(function(data){
setScopeFields(data);
setScopeRelated(data, form.related)
$scope.organization_name = data.summary_fields.organization.name;
RelatedSearchInit({
scope: $scope,
form: form,
relatedSets: relatedSets
});
RelatedPaginateInit({
scope: $scope,
relatedSets: relatedSets
});
LookUpInit({
url: GetBasePath('organizations'),
scope: $scope,
form: form,
current_item: $scope.organization,
list: OrganizationList,
field: 'organization',
input_type: 'radio'
});
});
}
$scope.formCancel = function(){
$state.go('teams', null, {reload: true});
}
$scope.formSave = function(){
generator.clearApiErrors();
generator.checkAutoFill();
$rootScope.flashMessage = null;
if ($scope[form.name + '_form'].$valid){
Rest.setUrl(defaultUrl + id + '/');
var data = processNewData(form.fields);
Rest.put(data).success(function(res){
$state.go('teams', null, {reload: true});
})
.error(function (data, status) {
ProcessErrors($scope, data, status, null, { hdr: 'Error!', msg: 'Failed to retrieve user: ' +
$stateParams.id + '. GET status: ' + status });
});
}
};
init();
/* Related Set implementation TDB */
}
TeamsEdit.$inject = ['$scope', '$rootScope', '$compile', '$location', '$log',
'$stateParams', 'TeamForm', 'GenerateForm', 'Rest', 'Alert',
TeamsEdit.$inject = ['$scope', '$rootScope', '$location',
'$stateParams', 'TeamForm', 'GenerateForm', 'Rest',
'ProcessErrors', 'RelatedSearchInit', 'RelatedPaginateInit',
'ReturnToCaller', 'ClearScope', 'LookUpInit', 'Prompt', 'GetBasePath',
'CheckAccess', 'OrganizationList', 'Wait', 'fieldChoices',
'fieldLabels', 'permissionsSearchSelect', '$state'
'ClearScope', 'LookUpInit', 'GetBasePath',
'OrganizationList', 'Wait', '$state'
];

View File

@ -185,7 +185,7 @@ export function UsersAdd($scope, $rootScope, $compile, $location, $log,
if (base === 'users') {
$rootScope.flashMessage = 'New user successfully created!';
$rootScope.$broadcast("EditIndicatorChange", "users", data.id);
$location.path('/users/' + data.id);
$state.go('users.edit', {user_id: data.id}, {reload: true});
}
else {
ReturnToCaller(1);
@ -219,11 +219,10 @@ UsersAdd.$inject = ['$scope', '$rootScope', '$compile', '$location', '$log',
];
export function UsersEdit($scope, $rootScope, $compile, $location, $log,
$stateParams, UserForm, GenerateForm, Rest, Alert, ProcessErrors,
RelatedSearchInit, RelatedPaginateInit, ReturnToCaller, ClearScope,
GetBasePath, Prompt, CheckAccess, ResetForm, Wait, fieldChoices,
fieldLabels, permissionsSearchSelect, $state) {
export function UsersEdit($scope, $rootScope, $location,
$stateParams, UserForm, GenerateForm, Rest, ProcessErrors,
RelatedSearchInit, RelatedPaginateInit, ClearScope,
GetBasePath, ResetForm, Wait, $state) {
ClearScope();
@ -235,315 +234,111 @@ export function UsersEdit($scope, $rootScope, $compile, $location, $log,
id = $stateParams.user_id,
relatedSets = {};
$scope.permission_label = {};
$scope.permission_search_select = [];
$scope.$emit("RefreshUsersList");
// // return a promise from the options request with the permission type choices (including adhoc) as a param
// var permissionsChoice = fieldChoices({
// scope: $scope,
// url: 'api/v1/' + base + '/' + id + '/permissions/',
// field: 'permission_type'
// });
//
// // manipulate the choices from the options request to be set on
// // scope and be usable by the list form
// permissionsChoice.then(function (choices) {
// choices =
// fieldLabels({
// choices: choices
// });
// _.map(choices, function(n, key) {
// $scope.permission_label[key] = n;
// });
// });
// manipulate the choices from the options request to be usable
// by the search option for permission_type, you can't inject the
// list until this is done!
// permissionsChoice.then(function (choices) {
// form.related.permissions.fields.permission_type.searchOptions =
// permissionsSearchSelect({
// choices: choices
// });
// });
generator.inject(form, { mode: 'edit', related: true, scope: $scope });
generator.reset();
$scope.$emit("loadForm");
if ($scope.removeFormReady) {
$scope.removeFormReady();
}
$scope.removeFormReady = $scope.$on('formReady', function () {
if ($scope.removePostRefresh) {
$scope.removePostRefresh();
}
$scope.removePostRefresh = $scope.$on('PostRefresh', function () {
// Cleanup after a delete
Wait('stop');
$('#prompt-modal').modal('hide');
});
var setScopeFields = function(data){
_(data)
.pick(function(value, key){
return form.fields.hasOwnProperty(key) === true;
})
.forEach(function(value, key){
$scope[key] = value;
})
.value();
return
};
$scope.PermissionAddAllowed = false;
// After the Organization is loaded, retrieve each related set
if ($scope.removeUserLoaded) {
$scope.removeUserLoaded();
}
$scope.removeUserLoaded = $scope.$on('userLoaded', function () {
for (var set in relatedSets) {
$scope.search(relatedSets[set].iterator);
var setScopeRelated = function(data, related){
_(related)
.pick(function(value, key){
return data.related.hasOwnProperty(key) === true;
})
.forEach(function(value, key){
relatedSets[key] = {
url: data.related[key],
iterator: value.iterator
};
})
.value();
};
// prepares a data payload for a PUT request to the API
var processNewData = function(fields){
var data = {};
_.forEach(fields, function(value, key){
if ($scope[key] !== '' && $scope[key] !== null && $scope[key] !== undefined){
data[key] = $scope[key];
}
CheckAccess({ scope: $scope }); //Does the user have access to add/edit Permissions?
Wait('stop');
});
return data
};
// Retrieve detail record and prepopulate the form
Rest.setUrl(defaultUrl + ':id/');
Rest.get({ params: { id: id } })
.success(function (data) {
$scope.user_id = id;
$scope.username_title = data.username;
var fld, related, set;
for (fld in form.fields) {
if (data[fld]) {
if (fld === 'is_superuser') {
$scope[fld] = (data[fld] === 'true' || data[fld] === true) ? 'true' : 'false';
} else {
$scope[fld] = data[fld];
}
master[fld] = $scope[fld];
}
}
related = data.related;
for (set in form.related) {
if (related[set]) {
relatedSets[set] = {
url: related[set],
iterator: form.related[set].iterator
};
}
}
var init = function(){
var url = defaultUrl + id;
Rest.setUrl(url);
Wait('start');
Rest.get(url).success(function(data){
$scope.user_id = id;
$scope.ldap_user = (data.ldap_dn !== null && data.ldap_dn !== undefined && data.ldap_dn !== '') ? true : false;
$scope.not_ldap_user = !$scope.ldap_user;
master.ldap_user = $scope.ldap_user;
$scope.socialAuthUser = (data.auth.length > 0) ? true : false;
$scope.ldap_user = (data.ldap_dn !== null && data.ldap_dn !== undefined && data.ldap_dn !== '') ? true : false;
$scope.not_ldap_user = !$scope.ldap_user;
master.ldap_user = $scope.ldap_user;
$scope.socialAuthUser = (data.auth.length > 0) ? true : false;
setScopeFields(data);
setScopeRelated(data, form.related);
// Initialize related search functions. Doing it here to make sure relatedSets object is populated.
RelatedSearchInit({
scope: $scope,
form: form,
relatedSets: relatedSets
});
RelatedPaginateInit({
scope: $scope,
relatedSets: relatedSets
});
$scope.$emit('userLoaded');
RelatedSearchInit({
scope: $scope,
form: form,
relatedSets: relatedSets
});
RelatedPaginateInit({
scope: $scope,
relatedSets: relatedSets
});
Wait('stop');
})
.error(function (data, status) {
ProcessErrors($scope, data, status, null, { hdr: 'Error!', msg: 'Failed to retrieve user: ' +
$stateParams.id + '. GET status: ' + status });
});
};
$scope.formCancel = function(){
$state.go('users', null, {reload: true});
};
$scope.formSave = function(){
generator.clearApiErrors();
generator.checkAutoFill();
$rootScope.flashMessage = null;
if ($scope[form.name + '_form'].$valid){
Rest.setUrl(defaultUrl + id + '/');
var data = processNewData(form.fields);
Rest.put(data).success(function(res){
$state.go('users', null, {reload: true})
})
.error(function (data, status) {
ProcessErrors($scope, data, status, null, { hdr: 'Error!', msg: 'Failed to retrieve user: ' +
$stateParams.id + '. GET status: ' + status });
});
$scope.getPermissionText = function () {
if (this.permission.permission_type !== "admin" && this.permission.run_ad_hoc_commands) {
return $scope.permission_label[this.permission.permission_type] +
" and " + $scope.permission_label.adhoc;
} else {
return $scope.permission_label[this.permission.permission_type];
}
};
// Save changes to the parent
$scope.formSave = function () {
var data = {}, fld;
generator.clearApiErrors();
generator.checkAutoFill();
$rootScope.flashMessage = null;
if ($scope[form.name + '_form'].$valid) {
Rest.setUrl(defaultUrl + id + '/');
for (fld in form.fields) {
if (form.fields[fld].realName) {
data[form.fields[fld].realName] = $scope[fld];
} else {
data[fld] = $scope[fld];
}
}
data.is_superuser = data.is_superuser || false;
Wait('start');
Rest.put(data)
.success(function () {
Wait('stop');
$scope.username_title = $scope.username;
var base = $location.path().replace(/^\//, '').split('/')[0];
if (base === 'users') {
ReturnToCaller();
}
else {
ReturnToCaller(1);
}
})
.error(function (data, status) {
ProcessErrors($scope, data, status, form, { hdr: 'Error!', msg: 'Failed to update users: ' + $stateParams.id +
'. PUT status: ' + status });
});
}
};
$scope.formCancel = function () {
$state.transitionTo('users');
};
// Password change
$scope.clearPWConfirm = function (fld) {
// If password value changes, make sure password_confirm must be re-entered
$scope[fld] = '';
$scope[form.name + '_form'][fld].$setValidity('awpassmatch', false);
$rootScope.flashMessage = null;
};
// Related set: Add button
$scope.add = function (set) {
$rootScope.flashMessage = null;
if (set === 'permissions') {
if ($scope.PermissionAddAllowed) {
$location.path('/' + base + '/' + $stateParams.user_id + '/' + set + '/add');
} else {
Alert('Access Denied', 'You do not have access to this function. Please contact your system administrator.');
}
} else {
$location.path('/' + base + '/' + $stateParams.user_id + '/' + set);
}
};
// Related set: Edit button
$scope.edit = function (set, id) {
$rootScope.flashMessage = null;
if (set === 'permissions') {
$location.path('/users/' + $stateParams.user_id + '/permissions/' + id);
} else {
$location.path('/' + set + '/' + id);
}
};
// Related set: Delete button
$scope['delete'] = function (set, itm_id, name, title) {
$rootScope.flashMessage = null;
var action = function () {
var url;
if (set === 'permissions') {
if ($scope.PermissionAddAllowed) {
url = GetBasePath('base') + 'permissions/' + itm_id + '/';
Rest.setUrl(url);
Rest.destroy()
.success(function () {
$('#prompt-modal').modal('hide');
$scope.search(form.related[set].iterator);
})
.error(function (data, status) {
$('#prompt-modal').modal('hide');
ProcessErrors($scope, data, status, null, { hdr: 'Error!',
msg: 'Call to ' + url + ' failed. DELETE returned status: ' + status });
});
} else {
Alert('Access Denied', 'You do not have access to this function. Please contact your system administrator.');
}
} else {
url = defaultUrl + $stateParams.user_id + '/' + set + '/';
Rest.setUrl(url);
Rest.post({
id: itm_id,
disassociate: 1
})
.success(function () {
$('#prompt-modal').modal('hide');
$scope.search(form.related[set].iterator);
})
.error(function (data, status) {
$('#prompt-modal').modal('hide');
ProcessErrors($scope, data, status, null, { hdr: 'Error!',
msg: 'Call to ' + url + ' failed. POST returned status: ' + status });
});
}
};
Prompt({
hdr: 'Delete',
body: '<div class="Prompt-bodyQuery">Are you sure you want to remove the ' + title + ' below from ' + $scope.username + '?</div><div class="Prompt-bodyTarget">' + name + '</div>',
action: action,
actionText: 'DELETE'
});
};
}); // $scope.$on
// Put form back to its original state
ResetForm();
if ($scope.removeLoadForm) {
$scope.removeLoadForm();
}
$scope.removeLoadForm = $scope.$on('loadForm', function () {
if ($scope.removeModifyForm) {
$scope.removeModifyForm();
$stateParams.id + '. GET status: ' + status });
});
}
$scope.removeModifyForm = $scope.$on('modifyForm', function () {
// Modify form based on LDAP settings
Rest.setUrl(GetBasePath('config'));
Rest.get()
.success(function (data) {
var i, fld;
if (data.user_ldap_fields) {
for (i = 0; i < data.user_ldap_fields.length; i++) {
fld = data.user_ldap_fields[i];
if (form.fields[fld]) {
form.fields[fld].readonly = true;
form.fields[fld].editRequired = false;
if (form.fields[fld].awRequiredWhen) {
delete form.fields[fld].awRequiredWhen;
}
}
}
}
$scope.$emit('formReady');
})
.error(function (data, status) {
ProcessErrors($scope, data, status, null, { hdr: 'Error!',
msg: 'Failed to retrieve application config. GET status: ' + status });
});
});
};
Wait('start');
Rest.setUrl(defaultUrl + id + '/');
Rest.get()
.success(function (data) {
if (data.ldap_dn !== null && data.ldap_dn !== undefined && data.ldap_dn !== '') {
//this is an LDAP user
$scope.$emit('modifyForm');
} else {
$scope.$emit('formReady');
}
})
.error(function (data, status) {
ProcessErrors($scope, data, status, null, { hdr: 'Error!',
msg: 'Failed to retrieve user: ' + id + '. GET status: ' + status });
});
});
$scope.clearPWConfirm = function (fld) {
// If password value changes, make sure password_confirm must be re-entered
$scope[fld] = '';
$scope[form.name + '_form'][fld].$setValidity('awpassmatch', false);
$rootScope.flashMessage = null;
};
init();
/* Related Set implementation TDB */
}
UsersEdit.$inject = ['$scope', '$rootScope', '$compile', '$location', '$log',
'$stateParams', 'UserForm', 'GenerateForm', 'Rest', 'Alert',
'ProcessErrors', 'RelatedSearchInit', 'RelatedPaginateInit',
'ReturnToCaller', 'ClearScope', 'GetBasePath', 'Prompt', 'CheckAccess',
'ResetForm', 'Wait', 'fieldChoices', 'fieldLabels',
'permissionsSearchSelect', '$state'
UsersEdit.$inject = ['$scope', '$rootScope', '$location',
'$stateParams', 'UserForm', 'GenerateForm', 'Rest', 'ProcessErrors',
'RelatedSearchInit', 'RelatedPaginateInit', 'ClearScope', 'GetBasePath',
'ResetForm', 'Wait', '$state'
];

View File

@ -38,10 +38,12 @@ export default
type: 'lookup',
sourceModel: 'organization',
sourceField: 'name',
addRequired: true,
editRequire: false,
ngClick: 'lookUpOrganization()',
awRequiredWhen: {
variable: "teamrequired",
init: "true"
variable: "orgrequired",
init: true
}
}
},
@ -57,6 +59,27 @@ export default
},
related: {
/*
permissions: {
basePath: 'teams/:id/access_list/',
type: 'collection',
title: 'Permissions',
iterator: 'permission',
index: false,
open: false,
searchType: 'select',
actions: {
add: {
ngClick: "addPermission",
label: 'Add',
awToolTip: 'Add a permission',
actionClass: 'btn List-buttonSubmit',
buttonContent: '&#43; ADD'
}
}
},
*/
credentials: {
type: 'collection',
@ -103,70 +126,6 @@ export default
}
},
permissions: {
type: 'collection',
title: 'Permissions',
iterator: 'permission',
open: false,
index: false,
actions: {
add: {
ngClick: "add('permissions')",
label: 'Add',
awToolTip: 'Add a permission for this user',
ngShow: 'PermissionAddAllowed',
actionClass: 'btn List-buttonSubmit',
buttonContent: '&#43; ADD'
}
},
fields: {
name: {
key: true,
label: 'Name',
ngClick: "edit('permissions', permission.id, permission.name)"
},
inventory: {
label: 'Inventory',
sourceModel: 'inventory',
sourceField: 'name',
ngBind: 'permission.summary_fields.inventory.name'
},
project: {
label: 'Project',
sourceModel: 'project',
sourceField: 'name',
ngBind: 'permission.summary_fields.project.name'
},
permission_type: {
label: 'Permission',
ngBind: 'getPermissionText()',
searchType: 'select'
}
},
fieldActions: {
edit: {
label: 'Edit',
ngClick: "edit('permissions', permission.id, permission.name)",
icon: 'icon-edit',
awToolTip: 'Edit the permission',
'class': 'btn btn-default'
},
"delete": {
label: 'Delete',
ngClick: "delete('permissions', permission.id, permission.name, 'permission')",
icon: 'icon-trash',
"class": 'btn-danger',
awToolTip: 'Delete the permission',
ngShow: 'PermissionAddAllowed'
}
}
},
projects: {
type: 'collection',
title: 'Projects',

View File

@ -42,18 +42,6 @@ export default
editRequired: true,
autocomplete: false
},
organization: {
label: 'Organization',
type: 'lookup',
sourceModel: 'organization',
sourceField: 'name',
ngClick: 'lookUpOrganization()',
excludeMode: 'edit',
awRequiredWhen: {
variable: "orgrequired",
init: true
}
},
username: {
label: 'Username',
type: 'text',
@ -63,6 +51,20 @@ export default
},
autocomplete: false
},
organization: {
label: 'Organization',
type: 'lookup',
sourceModel: 'organization',
sourceField: 'name',
addRequired: true,
editRequired: false,
excludeMode: 'edit',
ngClick: 'lookUpOrganization()',
awRequiredWhen: {
variable: "orgrequired",
init: true
}
},
password: {
label: 'Password',
type: 'sensitive',
@ -86,12 +88,13 @@ export default
autocomplete: false
},
is_superuser: {
label: 'Superuser (User has full system administration privileges.)',
label: 'Superuser <span style="text-transform:none;">(User has full system administration privileges)</span>',
type: 'checkbox',
trueValue: 'true',
falseValue: 'false',
"default": 'false',
ngShow: "current_user['is_superuser'] == true"
ngShow: "current_user['is_superuser'] == true",
ngModel: 'is_superuser'
},
ldap_user: {
label: 'Created by LDAP',
@ -112,6 +115,26 @@ export default
},
related: {
/*
permissions: {
basePath: 'teams/:id/access_list/',
type: 'collection',
title: 'Permissions',
iterator: 'permission',
index: false,
open: false,
searchType: 'select',
actions: {
add: {
ngClick: "addPermission",
label: 'Add',
awToolTip: 'Add a permission',
actionClass: 'btn List-buttonSubmit',
buttonContent: '&#43; ADD'
}
}
},
*/
credentials: {
type: 'collection',
@ -157,92 +180,6 @@ export default
}
}
},
// permissions: {
// type: 'collection',
// title: 'Permissions',
// iterator: 'permission',
// open: false,
// index: false,
//
// actions: {
// add: {
// ngClick: "add('permissions')",
// label: 'Add',
// awToolTip: 'Add a permission for this user',
// ngShow: 'PermissionAddAllowed',
// actionClass: 'btn List-buttonSubmit',
// buttonContent: '&#43; ADD'
// }
// },
//
// fields: {
// name: {
// key: true,
// label: 'Name',
// ngClick: "edit('permissions', permission.id, permission.name)"
// },
// inventory: {
// label: 'Inventory',
// sourceModel: 'inventory',
// sourceField: 'name',
// ngBind: 'permission.summary_fields.inventory.name'
// },
// project: {
// label: 'Project',
// sourceModel: 'project',
// sourceField: 'name',
// ngBind: 'permission.summary_fields.project.name'
// },
// permission_type: {
// label: 'Permission',
// ngBind: 'getPermissionText()',
// searchType: 'select'
// }
// },
//
// fieldActions: {
// edit: {
// label: 'Edit',
// ngClick: "edit('permissions', permission.id, permission.name)",
// icon: 'icon-edit',
// awToolTip: 'Edit the permission',
// 'class': 'btn btn-default'
// },
//
// "delete": {
// label: 'Delete',
// ngClick: "delete('permissions', permission.id, permission.name, 'permission')",
// icon: 'icon-trash',
// "class": 'btn-danger',
// awToolTip: 'Delete the permission',
// ngShow: 'PermissionAddAllowed'
// }
// }
//
// },
admin_of_organizations: { // Assumes a plural name (e.g. things)
type: 'collection',
title: 'Admin of Organizations',
iterator: 'adminof', // Singular form of name (e.g. thing)
open: false, // Open accordion on load?
index: false,
base: '/organizations',
actions: {},
fields: {
name: {
key: true,
label: 'Name'
},
description: {
label: 'Description'
}
}
},
organizations: {
type: 'collection',
title: 'Organizations',