""" Test mapping """ import logging import sys from mylib import pretty_format_value from mylib.mapping import map_hash from mylib.scripts.helpers import get_opts_parser, init_logging log = logging.getLogger(__name__) def main(argv=None): """Script main""" if argv is None: argv = sys.argv[1:] # Options parser parser = get_opts_parser(progress=True) options = parser.parse_args() # Initialize logs init_logging(options, "Test mapping") src = { "uid": "hmartin", "firstname": "Martin", "lastname": "Martin", "disp_name": "Henri Martin", "line_1": "3 rue de Paris", "line_2": "Pour Pierre", "zip_text": "92 120", "city_text": "Montrouge", "line_city": "92120 Montrouge", "tel1": "01 00 00 00 00", "tel2": "09 00 00 00 00", "mobile": "06 00 00 00 00", "fax": "01 00 00 00 00", "email": "H.MARTIN@GMAIL.COM", } map_c = { "uid": {"order": 0, "key": "uid", "required": True}, "givenName": {"order": 1, "key": "firstname"}, "sn": {"order": 2, "key": "lastname"}, "cn": { "order": 3, "key": "disp_name", "required": True, "or": {"attrs": ["firstname", "lastname"], "join": " "}, }, "displayName": {"order": 4, "other_key": "displayName"}, "street": {"order": 5, "join": " / ", "keys": ["ligne_1", "ligne_2"]}, "postalCode": {"order": 6, "key": "zip_text", "cleanRegex": "[^0-9]"}, "l": {"order": 7, "key": "city_text"}, "postalAddress": {"order": 8, "join": "$", "keys": ["ligne_1", "ligne_2", "ligne_city"]}, "telephoneNumber": { "order": 9, "keys": ["tel1", "tel2"], "cleanRegex": "[^0-9+]", "deduplicate": True, }, "mobile": {"order": 10, "key": "mobile"}, "facsimileTelephoneNumber": {"order": 11, "key": "fax"}, "mail": {"order": 12, "key": "email", "convert": lambda x: x.lower().strip()}, } print("Mapping source:\n" + pretty_format_value(src)) print("Mapping config:\n" + pretty_format_value(map_c)) print("Mapping result:\n" + pretty_format_value(map_hash(map_c, src)))