20 lines
782 B
Python
20 lines
782 B
Python
from ..connection import connect
|
|
from ..slugify import slugify
|
|
from ..definitions.get_definition import get_definition
|
|
|
|
|
|
def relation_options(slug, related_definition_id):
|
|
"""Lignes existantes d'un objet lié, pour peupler un <select> de relation."""
|
|
related = get_definition(slug, related_definition_id)
|
|
conn = connect(slug)
|
|
rows = conn.execute(f"SELECT * FROM {related['table_name']} ORDER BY id").fetchall()
|
|
conn.close()
|
|
display_field = related["fields"][0]["name"] if related["fields"] else "id"
|
|
display_col = slugify(display_field).replace("-", "_")
|
|
options = []
|
|
for r in rows:
|
|
r = dict(r)
|
|
label = r.get(display_col, f"#{r['id']}")
|
|
options.append({"id": r["id"], "label": f"{label} (#{r['id']})"})
|
|
return options
|