def add_required_fields()

in src/loading_manifest/csv_to_json.py [0:0]


def add_required_fields(ldm, required_template):
    if required_template is None or len(required_template) == 0:
        return

    def add_fields_list(des_list, src_list):
        if len(src_list) == 0 or len(des_list) == 0:
            return

        for item_src in src_list:
            for item_des in des_list:
                if type(item_src) == type(item_des):
                    if type(item_src) is dict:
                        add_fields_dict(item_des, item_src)
                    elif type(item_src) is list:
                        add_fields_list(item_des, item_src)

    def add_fields_dict(des_dict, src_dict):
        for k, v_src in src_dict.items():
            optional_field = False
            if k.startswith(tag_optional_field):
                optional_field = True
                k = k[len(tag_optional_field):]
            if k not in des_dict and not optional_field:
                if type(v_src) is dict:
                    des_dict[k] = dict()
                elif type(v_src) is list:
                    des_dict[k] = list()
                else:
                    des_dict[k] = v_src

            v_des = des_dict.get(k, None)
            if v_des is not None and type(v_src) == type(v_des):
                if type(v_src) is dict:
                    add_fields_dict(v_des, v_src)
                elif type(v_src) is list:
                    add_fields_list(v_des, v_src)

    add_fields_dict(ldm, required_template)