import db from .widget_meta import widget_meta from .control_value import _control_value from ..element_types.list_element_types import list_element_types def controls_with_values(slug, el): """Pour le panneau de propriétés : la liste des réglages du widget de cet élément, chacun avec sa valeur actuelle déjà résolue. Le réglage "définition_id" du Répéteur de données a besoin du jeu courant pour lister les objets disponibles — d'où le paramètre slug.""" meta = widget_meta(el.get("widget")) result = [] for control in meta.get("controls", []): control = dict(control) if control["key"] == "definition_id": defs = db.list_definitions(slug) control["options"] = [("", "(sélectionner un objet)")] + [(str(d["id"]), d["name"]) for d in defs] if control["key"] == "template_type_id": types = list_element_types(slug) control["options"] = [("", "(aucun — utiliser le modèle de texte ci-dessous)")] + [(str(t["id"]), t["name"]) for t in types] result.append({**control, "value": _control_value(el, control)}) return result