Skip to content

Commit

Permalink
Several AH bug fixes (#4546)
Browse files Browse the repository at this point in the history
Several AH fixes
  • Loading branch information
axelstudios authored Feb 28, 2024
1 parent af6c88c commit 2f6053b
Show file tree
Hide file tree
Showing 14 changed files with 1,178 additions and 1,198 deletions.
2 changes: 1 addition & 1 deletion seed/management/commands/create_default_user.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ def handle(self, *args, **options):
self.stdout.write(
'Org <%s> already exists, adding user' % options['organization'], ending='\n'
)
org.add_member(u, ROLE_OWNER)
org.add_member(u, org.root.id, ROLE_OWNER)
else:
self.stdout.write(
'Creating org <%s> ...' % options['organization'],
Expand Down
71 changes: 34 additions & 37 deletions seed/static/seed/js/controllers/admin_controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ angular.module('BE.seed.controller.admin', []).controller('admin_controller', [
'organization_service',
'column_mappings_service',
'uploader_service',
'ah_service',
'auth_payload',
'organizations_payload',
'user_profile_payload',
Expand All @@ -26,6 +27,7 @@ angular.module('BE.seed.controller.admin', []).controller('admin_controller', [
organization_service,
column_mappings_service,
uploader_service,
ah_service,
auth_payload,
organizations_payload,
user_profile_payload,
Expand Down Expand Up @@ -66,16 +68,7 @@ angular.module('BE.seed.controller.admin', []).controller('admin_controller', [
value: 'viewer'
}];

/* Build out access_level_instances_by_depth recursively */
let access_level_instances_by_depth = {};
const calculate_access_level_instances_by_depth = (tree, depth = 1) => {
if (tree === undefined) return;
if (access_level_instances_by_depth[depth] === undefined) access_level_instances_by_depth[depth] = [];
for (const ali of tree) {
access_level_instances_by_depth[depth].push({ id: ali.id, name: ali.data.name });
calculate_access_level_instances_by_depth(ali.children, depth + 1);
}
};

$scope.change_selected_level_index = () => {
const new_level_instance_depth = parseInt($scope.level_name_index, 10) + 1;
Expand All @@ -89,6 +82,24 @@ angular.module('BE.seed.controller.admin', []).controller('admin_controller', [
};
$scope.update_alert = update_alert;

const get_users = () => {
user_service.get_users().then((data) => {
$scope.org.users = data.users;
});
};

const process_organizations = (data) => {
$scope.org_user.organizations = data.organizations;
_.forEach($scope.org_user.organizations, (org) => {
org.total_inventory = _.reduce(org.cycles, (sum, cycle) => sum + cycle.num_properties + cycle.num_taxlots, 0);
});
};

const get_organizations = () => organization_service.get_organizations().then(process_organizations).catch((response) => {
$log.log({ message: 'error from data call', status: response.status, data: response.data });
update_alert(false, `error getting organizations: ${response.data.message}`);
});

$scope.org_form.new_org = () => {
$scope.user.organization = undefined;
$scope.user.access_level_instance_id = undefined;
Expand All @@ -101,27 +112,27 @@ angular.module('BE.seed.controller.admin', []).controller('admin_controller', [

organization_service.get_organization_access_level_tree($scope.user.organization.id).then((access_level_tree) => {
$scope.level_names = access_level_tree.access_level_names;
access_level_instances_by_depth = {};
calculate_access_level_instances_by_depth(access_level_tree.access_level_tree, 1);
access_level_instances_by_depth = ah_service.calculate_access_level_instances_by_depth(access_level_tree.access_level_tree);
});
};
$scope.org_form.reset = () => {
$scope.user = { role: $scope.roles[0].value };
$scope.org.user_email = '';
$scope.org.name = '';
};
$scope.org_form.add = (org) => {
organization_service
.add(org)
.then(() => {
get_organizations().then(() => {
$scope.$emit('organization_list_updated');
});
.then(async () => {
await get_organizations();
$scope.$emit('organization_list_updated');
update_alert(true, `Organization ${org.name} created`);
})
.catch((response) => {
update_alert(false, `error creating organization: ${response.data.message}`);
});
};

$scope.user_form.add = (user) => {
user_service
.add(user)
Expand All @@ -144,42 +155,24 @@ angular.module('BE.seed.controller.admin', []).controller('admin_controller', [
update_alert(false, `error creating user: ${response.data.message}`);
});
};
$scope.org_form.not_ready = () => _.isUndefined($scope.org.email) || organization_exists($scope.org.name);

var organization_exists = (name) => {
const organization_exists = (name) => {
const orgs = _.map($scope.org_user.organizations, (org) => org.name.toLowerCase());
return orgs.includes(name.toLowerCase());
};

$scope.org_form.not_ready = () => $scope.org.email === undefined || organization_exists($scope.org.name);

$scope.user_form.not_ready = () => !$scope.user.organization && !$scope.user.org_name;

$scope.user_form.reset = () => {
$scope.user = { role: $scope.roles[1].value };
$scope.user = { role: $scope.roles[0].value };
$scope.level_names = [];
};

$scope.org_form.reset();

$scope.user_form.reset();

var get_users = () => {
user_service.get_users().then((data) => {
$scope.org.users = data.users;
});
};

const process_organizations = (data) => {
$scope.org_user.organizations = data.organizations;
_.forEach($scope.org_user.organizations, (org) => {
org.total_inventory = _.reduce(org.cycles, (sum, cycle) => sum + cycle.num_properties + cycle.num_taxlots, 0);
});
};

var get_organizations = () => organization_service.get_organizations().then(process_organizations, (response) => {
$log.log({ message: 'error from data call', status: response.status, data: response.data });
update_alert(false, `error getting organizations: ${response.data.message}`);
});

$scope.get_organizations_users = (org) => {
if (org) {
organization_service
Expand Down Expand Up @@ -227,6 +220,7 @@ angular.module('BE.seed.controller.admin', []).controller('admin_controller', [
};

$scope.confirm_column_mappings_delete = (org) => {
// eslint-disable-next-line no-restricted-globals,no-alert
const yes = confirm(`Are you sure you want to delete the '${org.name}' column mappings? This will invalidate preexisting mapping review data`);
if (yes) {
$scope.delete_org_column_mappings(org);
Expand All @@ -250,6 +244,7 @@ angular.module('BE.seed.controller.admin', []).controller('admin_controller', [
* for an org's inventory.
*/
$scope.confirm_inventory_delete = (org) => {
// eslint-disable-next-line no-restricted-globals,no-alert
const yes = confirm(`Are you sure you want to PERMANENTLY delete '${org.name}'s properties and tax lots?`);
if (yes) {
$scope.delete_org_inventory(org);
Expand Down Expand Up @@ -280,8 +275,10 @@ angular.module('BE.seed.controller.admin', []).controller('admin_controller', [
};

$scope.confirm_org_delete = (org) => {
// eslint-disable-next-line no-restricted-globals
const yes = confirm(`Are you sure you want to PERMANENTLY delete the entire '${org.name}' organization?`);
if (yes) {
// eslint-disable-next-line no-restricted-globals
const again = confirm(`Deleting an organization is permanent. Confirm again to delete '${org.name}'`);
if (again) {
$scope.delete_org(org);
Expand Down
Loading

0 comments on commit 2f6053b

Please sign in to comment.