From 73f63988ee72121deeed7ceec4d90b7e84e141fb Mon Sep 17 00:00:00 2001 From: lizkrznarich Date: Wed, 1 May 2024 16:14:46 -0500 Subject: [PATCH] bulk update handle case where name field value has too many * chars --- rorapi/common/csv_create.py | 29 +++++++++++++++++------------ rorapi/common/csv_update.py | 23 +++++++++++++---------- 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/rorapi/common/csv_create.py b/rorapi/common/csv_create.py index cc8799f..10ff03b 100644 --- a/rorapi/common/csv_create.py +++ b/rorapi/common/csv_create.py @@ -54,21 +54,26 @@ def new_record_from_csv(csv_data, version): if csv_data['names.types.' + v]: for n in csv_data['names.types.' + v].strip(';').split(';'): if LANG_DELIMITER in n: - name_val, lang = n.split("*") - if lang: - lang_errors, lang_code = get_lang_code(lang.strip()) - if lang_errors: - errors.append("Could not convert language value to ISO code: {}".format(lang)) + if n.count(LANG_DELIMITER) == 1: + name_val, lang = n.split("*") + if lang: + lang_errors, lang_code = get_lang_code(lang.strip()) + if lang_errors: + errors.append("Could not convert language value to ISO code: {}".format(lang)) + else: + name_val = None + lang_code = None + errors.append("Could not parse name value {} in names.types.{} because it contains multiple {} lang delimiter chars.".format(n, v, LANG_DELIMITER)) else: name_val = n lang_code = None - - name_obj = { - "types": [v], - "value": name_val.strip(), - "lang": lang_code - } - temp_names.append(name_obj) + if name_val: + name_obj = { + "types": [v], + "value": name_val.strip(), + "lang": lang_code + } + temp_names.append(name_obj) print("temp names 1:") print(temp_names) name_vals = [n['value'] for n in temp_names] diff --git a/rorapi/common/csv_update.py b/rorapi/common/csv_update.py index 51e8d5f..3e41716 100644 --- a/rorapi/common/csv_update.py +++ b/rorapi/common/csv_update.py @@ -247,18 +247,21 @@ def update_record_from_csv(csv_data, version): "lang": None } if LANG_DELIMITER in val: - print("has lang delim") - name_val, lang = val.split("*") - vals_obj["value"] = name_val.strip() - if lang: - lang_errors, lang_code = get_lang_code(lang.strip()) - if lang_errors: - errors.append("Could not convert language value to ISO code: {}".format(lang)) - else: - vals_obj["lang"] = lang_code + if val.count(LANG_DELIMITER) == 1: + name_val, lang = val.split("*") + vals_obj["value"] = name_val.strip() + if lang: + lang_errors, lang_code = get_lang_code(lang.strip()) + if lang_errors: + errors.append("Could not convert language value to ISO code: {}".format(lang)) + else: + vals_obj["lang"] = lang_code + else: + errors.append("Could not parse name value {} in names.types.{} because it contains multiple {} lang delimiter chars.".format(val, t, LANG_DELIMITER)) else: vals_obj["value"] = val.strip() - vals_obj_list.append(vals_obj) + if vals_obj["value"]: + vals_obj_list.append(vals_obj) actions_values[k] = vals_obj_list print("updated actions values") print(actions_values)