#!/opt/odoo/bin/python # pylint: disable=print-used import click import click_odoo import yaml @click.command() @click_odoo.env_options(default_log_level="error") def main(env): def _prepare_fields(field): if "sub_pattern_config_id" in field: pattern = env["pattern.config"].search( [("name", "=", field.pop("sub_pattern_config_id"))] ) field["sub_pattern_config_id"] = pattern.id return field with open("pattern.yml") as f: for data in yaml.load(f, Loader=yaml.SafeLoader): print("Import pattern", data["name"]) pattern = env["pattern.config"].search([("name", "=", data["name"])]) vals = { "name": data["name"], "resource": data["resource"], "export_fields": [ (0, 0, _prepare_fields(field)) for field in data["export_fields"] ], "export_format": "csv", "tab_to_import": "match_name", "process_multi": data.get("process_multi", True), } if pattern: pattern.export_fields.unlink() pattern.write(vals) else: env["pattern.config"].create(vals) if __name__ == "__main__": main()