From 1fcf7f14b258f3d2cf993304f8f726695c964a08 Mon Sep 17 00:00:00 2001 From: Hannah Eslinger Date: Tue, 2 Jan 2024 10:43:49 -0700 Subject: [PATCH] Fix ah import messages (#4445) * Fix ah import messages * Remove old function --- seed/data_importer/tasks.py | 56 ++----------------------------------- 1 file changed, 3 insertions(+), 53 deletions(-) diff --git a/seed/data_importer/tasks.py b/seed/data_importer/tasks.py index b0b6b04bbc..123ba21dbb 100644 --- a/seed/data_importer/tasks.py +++ b/seed/data_importer/tasks.py @@ -400,7 +400,7 @@ def map_row_chunk(ids, file_pk, source_type, prog_key, **kwargs): map_model_obj.source_type = save_type map_model_obj.organization = import_file.import_record.super_organization # _process_ali_data(map_model_obj, import_file.access_level_instance) - _new_process_ali_data(map_model_obj, row, import_file.access_level_instance, table_mappings.get("")) + _process_ali_data(map_model_obj, row, import_file.access_level_instance, table_mappings.get("")) if hasattr(map_model_obj, 'data_state'): map_model_obj.data_state = DATA_STATE_MAPPING @@ -502,7 +502,7 @@ def map_row_chunk(ids, file_pk, source_type, prog_key, **kwargs): return True -def _new_process_ali_data(model, raw_data, import_file_ali, ah_mappings): +def _process_ali_data(model, raw_data, import_file_ali, ah_mappings): org_alns = model.organization.access_level_names # if org only has root, just assign it to root, they won't have any ali info @@ -519,7 +519,7 @@ def _new_process_ali_data(model, raw_data, import_file_ali, ah_mappings): ali_info = { to_col: raw_data.get(from_col) for from_col, (_, to_col, _, _) in ah_mappings.items() - if raw_data.get(from_col) is not None + if raw_data.get(from_col) is not None and raw_data.get(from_col) != "" } if not ali_info: model.raw_access_level_instance_error = "Missing Access Level Column data." @@ -555,56 +555,6 @@ def _new_process_ali_data(model, raw_data, import_file_ali, ah_mappings): model.raw_access_level_instance = ali -def _process_ali_data(model, import_file_ali): - """Removes ALI info from model.extra_data and adds access_level_instance_id to model.extra_data""" - org_alns = model.organization.access_level_names - extra_data = model.extra_data - - # pull all the ali info out of model extra data - ali_info = {k: v for k, v in extra_data.items() if k in org_alns} - model.extra_data = {k: v for k, v in extra_data.items() if k not in ali_info} - - # if org only has root, just assign it to root, they won't have any ali info - if AccessLevelInstance.objects.filter(organization=model.organization).count() <= 1: - model.raw_access_level_instance = model.organization.root - return - - # clean ali_info - ali_info = {k: v for k, v in ali_info.items() if v is not None} - if not ali_info: - model.raw_access_level_instance_error = "Missing Access Level Column data." - return - - # ensure we have a valid set of keys, else error out - needed_keys = set(org_alns[:len(ali_info)]) - if needed_keys != ali_info.keys(): - model.raw_access_level_instance_error = "Missing/Incomplete Access Level Column." - return - - # try to get ali matching ali info within subtree - paths_match = Q(path=ali_info) - in_subtree = Q(lft__gte=import_file_ali.lft, rgt__lte=import_file_ali.rgt) - ali = AccessLevelInstance.objects.filter(Q(paths_match & in_subtree)).first() - - # if ali is None, we error - if ali is None: - is_ancestor = Q(lft__lt=import_file_ali.lft, rgt__gt=import_file_ali.rgt) - ancestor_ali = AccessLevelInstance.objects.filter(Q(is_ancestor & paths_match)).first() - - # differing errors if - # 1. the user can see the ali but cannot access, or - # 2. the ali cannot be seen by the user and/or doesn't exist. - if ancestor_ali is not None: - model.raw_access_level_instance_error = "Access Level Instance cannot be accessed with the permissions of this import file." - else: - model.raw_access_level_instance_error = "Access Level Information does not match any existing Access Level Instance." - - return - - # success! - model.raw_access_level_instance = ali - - def _store_raw_footprint_and_create_rule(footprint_details, table, org, import_file, original_row, map_model_obj): column_name = footprint_details['raw_field'] + ' (Invalid Footprint)'