📄 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