conversion preferences

This commit is contained in:
Emmanuel Viennet 2022-03-14 14:28:22 +01:00
parent 6a525eb1a1
commit 204ee4a02b

View File

@ -152,19 +152,18 @@ def get_preference(name, formsemestre_id=None):
def _convert_pref_type(p, pref_spec): def _convert_pref_type(p, pref_spec):
"""p est une ligne de la bd """p est une ligne de la bd
{'id': , 'dept_id': , 'name': '', 'value': '', 'formsemestre_id': } {'id': , 'dept_id': , 'name': '', 'value': '', 'formsemestre_id': }
converti la valeur chane en le type désiré spécifié par pref_spec converti la valeur chaine en le type désiré spécifié par pref_spec
""" """
if "type" in pref_spec: if "type" in pref_spec:
typ = pref_spec["type"] typ = pref_spec["type"]
if typ == "float": if typ == "float":
# special case for float values (where NULL means 0) # special case for float values (where NULL means 0)
if p["value"]: p["value"] = float(p["value"] or 0)
p["value"] = float(p["value"]) elif typ == "int":
p["value"] = int(p["value"] or 0)
else: else:
p["value"] = 0.0 raise ValueError("invalid preference type")
else:
func = eval(typ)
p["value"] = func(p["value"])
if pref_spec.get("input_type", None) == "boolcheckbox": if pref_spec.get("input_type", None) == "boolcheckbox":
# boolcheckbox: la valeur stockée en base est une chaine "0" ou "1" # boolcheckbox: la valeur stockée en base est une chaine "0" ou "1"
# que l'on ressort en True|False # que l'on ressort en True|False