feat(civicrm.i2r_pk.py): ajout d'une checklist d'entree

main
Vincent Adolphe 2022-05-06 00:55:54 +02:00
Parent 9661474bb2
révision b8dd2e47b8
1 fichiers modifiés avec 15 ajouts et 3 suppressions

Voir le fichier

@ -7,12 +7,20 @@ import logging
logger = logging.getLogger(__name__)
def gen_i2r_pk(creme_model, creme_fname, MTX_I2R):
def gen_i2r_pk(creme_model, creme_fname, MTX_I2R, check_list=None, hint=None):
"""
creme_model: django.db.Model model: dans cremecrm ou trouver le champ
creme_fname: str: nom du champs dans cremecrm
MTX_I2R: dict: passage des nom civicrm vers cremecrm
check_list: list: verifie que les clef de MTX_I2R sont dans check_list
"""
if check_list is not None:
subset = set(MTX_I2R)
fullset = set(check_list)
errorset = subset - fullset
hint = hint or ''
if errorset:
logger.warning(f"MTX_I2R({hint}) keys:{errorset} not in checklist")
R_PK = dict(creme_model.objects.values_list(creme_fname, 'pk'))
i2r_pk = {}
for name in MTX_I2R:
@ -30,11 +38,15 @@ def gen_i2r_pk(creme_model, creme_fname, MTX_I2R):
return i2r_pk
def gen_i2r_pk_from_list(creme_model, creme_fname, field_list):
def gen_i2r_pk_from_list(
creme_model, creme_fname, field_list, check_list=None, hint=None
):
"""
dans le cas ou les nom dans les CHOICES de civicrm sont exactement les
memes que ceux utilisé dans cremecrm alors la matrice de passage est
une simple identité et une liste de champs suffit.
"""
MTX_I2R = {field: field for field in field_list}
return gen_i2r_pk(creme_model, creme_fname, MTX_I2R)
return gen_i2r_pk(
creme_model, creme_fname, MTX_I2R, check_list=check_list, hint=hint
)