📄 split_templates.py (thème : theme_elmo_materiaux)

#!/usr/bin/env python3
import os
from pathlib import Path
from lxml import etree
from os.path import join as opj
# === CONFIGURATION ===
THEME_NAME = "theme_elmo_materiaux"
BASE_PATH = Path("/opt/odoo/common-addons_v16")
SNIPPETS_DIR = BASE_PATH / THEME_NAME / "views" / "snippets"
INPUT_FILE = Path(opj(BASE_PATH, THEME_NAME, 'views',"customizations.xml"))  # À adapter si besoin

def main():
    print("🔍 Vérification des chemins...")
    if not (BASE_PATH / THEME_NAME).exists():
        print(f"❌ Thème non trouvé : {BASE_PATH / THEME_NAME}")
        return
    if not SNIPPETS_DIR.exists():
        print(f"📂 Création du répertoire : {SNIPPETS_DIR}")
        SNIPPETS_DIR.mkdir(parents=True)

    if not INPUT_FILE.exists():
        print(f"❌ Fichier XML d'entrée introuvable : {INPUT_FILE}")
        return

    print(f"📄 Lecture de : {INPUT_FILE}")
    tree = etree.parse(str(INPUT_FILE))
    templates = tree.xpath("//template")
    print(f"✅ {len(templates)} template(s) trouvé(s).")

    written_files = []

    for tmpl in templates:
        tmpl_id = tmpl.get("id")
        if not tmpl_id:
            print("⚠️ Template sans ID, ignoré.")
            continue
        file_name = f"{tmpl_id}.xml"
        file_path = SNIPPETS_DIR / file_name
        odoo_root = etree.Element("odoo")
        odoo_root.append(tmpl)
        tmpl_tree = etree.ElementTree(odoo_root)
        tmpl_tree.write(str(file_path), pretty_print=True, xml_declaration=True, encoding="UTF-8")
        print(f"📝 Fichier écrit : {file_path}")
        written_files.append(f"    'views/snippets/{file_name}'")

    print("\n📦 Liste à coller dans __manifest__.py :\n[")
    print(",\n".join(written_files))
    print("]\n")
    print("🎉 Terminé avec succès.")

if __name__ == "__main__":
    main()
← Revenir à la galerie