odoo/bin/pattern_import

41 lines
1.3 KiB
Python
Executable File

#!/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()