From 5e1dcda13e559f3dc0377377050eb76a4a56cbf4 Mon Sep 17 00:00:00 2001 From: Emmanuel Cazenave Date: Tue, 19 Dec 2023 12:42:25 +0100 Subject: [PATCH] cr-reunion: load exisiting benficiaires from carddata to support mulitple run (#84828) --- cr-reunion/run.py | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/cr-reunion/run.py b/cr-reunion/run.py index 8da10a2..542aa73 100644 --- a/cr-reunion/run.py +++ b/cr-reunion/run.py @@ -46,8 +46,14 @@ def build_cache(slug, cache): for card in cardef.data_class().select(): cache[card.data[libelle_field.id].upper()] = str(card.id) -def get_beneficiaire_hash(row): - return '%s##%s##%s' % (row['prenom'].strip().upper(), row['nom'].strip().upper(), row['numero fiscal']) + +def get_beneficiaire_hash(prenom, nom, numero_fiscal): + return '%s##%s##%s' % (prenom.strip().upper(), nom.strip().upper(), numero_fiscal) + + +def get_beneficiaire_hash_from_row(row): + return get_beneficiaire_hash(row['prenom'], row['nom'], row['numero fiscal']) + def get_field_by_varname(cardef, varname): for field in cardef.fields: @@ -398,6 +404,14 @@ def import_data(args): return extra_data return None + # Initialize BENEFICIAIRES with carddata + beneficiaire_carddef = CardDef.get_by_urlname(CARD_BENEFICIAIRE_SLUG) + prenom_field = get_field_by_varname(beneficiaire_carddef, 'prenom') + nom_field = get_field_by_varname(beneficiaire_carddef, 'nom_usage') + numero_fiscal_field = get_field_by_varname(beneficiaire_carddef, 'numero_fiscal') + + for beneficiaire in beneficiaire_carddef.data_class().select(): + BENEFICIAIRES[get_beneficiaire_hash(beneficiaire.data[prenom_field.id], beneficiaire.data[nom_field.id], beneficiaire.data[numero_fiscal_field.id])] = str(beneficiaire.id) for i, row in get_rows(args): @@ -417,12 +431,13 @@ def import_data(args): derogation = derogation_mapping[row['derogation']] - beneficiaire_hash = get_beneficiaire_hash(row) + beneficiaire_hash = get_beneficiaire_hash_from_row(row) if beneficiaire_hash not in BENEFICIAIRES: email = '' if row['email'] != 'NULL': email = row['email'].lower() + beneficiaire_data = { 'courriel_demandeur': email, 'date_import': datetime.datetime.now().date().strftime('%Y-%m-%d'), @@ -437,7 +452,9 @@ def import_data(args): BENEFICIAIRES[beneficiaire_hash] = beneficiaire_id beneficiaire_id = BENEFICIAIRES[beneficiaire_hash] - + email = '' + if row['email'] != 'NULL': + email = row['email'].lower() data = { 'annee_demande': row['campagne'], 'beneficiaire': beneficiaire_id,