from ..slugify import slugify def row_columns_and_values(definition, form_data): """Traduit les données d'un formulaire généré en (colonnes, valeurs) prêtes pour un INSERT ou un UPDATE — factorisé pour que les deux partagent exactement la même logique de conversion de type.""" cols, values = [], [] for f in definition["fields"]: fname = slugify(f["name"]).replace("-", "_") if f["type"] == "relation": col = f"{fname}_id" raw = form_data.get(col, "") values.append(int(raw) if raw else None) elif f["type"] == "booleen": values.append(1 if form_data.get(fname) == "on" else 0) col = fname elif f["type"] in ("nombre_entier", "nombre_decimal"): raw = form_data.get(fname, "") values.append((int(raw) if f["type"] == "nombre_entier" else float(raw)) if raw != "" else None) col = fname else: values.append(form_data.get(fname, "") or None) col = fname cols.append(col) return cols, values