make sure defaults are used if values missing. unselected checkbox requires special handling

This commit is contained in:
2022-05-27 18:52:46 +03:00
parent da5000d9a9
commit 6b1f97869f

View File

@@ -57,12 +57,17 @@ def before_request_func():
g.config = {"title": "Labeler", "labels": g.labels} g.config = {"title": "Labeler", "labels": g.labels}
g.users = ["user"] g.users = ["user"]
if not "title" in g.config:
g.config["title"] = "Labeler"
if not "title" in g.config: if not "title" in g.config:
g.config["title"] = "Labeler" g.config["title"] = "Labeler"
for label in g.labels: for label in g.labels:
if label["type"] == "range": if label["type"] == "range":
label["value"] = label.get("default", label.get("min", "")) label["value"] = label.get("default", label.get("min", ""))
elif label["type"] == "info":
label["name"] = ""
label["value"] = ""
else: else:
label["value"] = label.get("default", "") label["value"] = label.get("default", "")
@@ -103,10 +108,12 @@ def get_metadata(imagepath):
values = json.load(fp) values = json.load(fp)
metadata = [x.copy() for x in g.labels.copy()] metadata = [x.copy() for x in g.labels.copy()]
for label in metadata: for label in metadata:
if not "name" in label:
continue
if label["name"] in values: if label["name"] in values:
label["value"] = values[label["name"]] label["value"] = values[label["name"]]
else: else:
label["value"] = label["default"] label["value"] = label.get("default", "")
return metadata return metadata
except FileNotFoundError: except FileNotFoundError:
@@ -122,8 +129,10 @@ def set_metadata(values, imagepath):
metadata = [x.copy() for x in g.labels.copy()] metadata = [x.copy() for x in g.labels.copy()]
for label in metadata: for label in metadata:
if not "name" in label:
continue
if not label["name"] in values: if not label["name"] in values:
values[label["name"]] = label["default"] values[label["name"]] = label.get("default", "")
# logging.warning((path, values)) # logging.warning((path, values))
if not os.path.exists( if not os.path.exists(
@@ -177,6 +186,11 @@ def show_image(id=None):
if key.startswith("label_"): if key.startswith("label_"):
dictkey = key[6:] dictkey = key[6:]
metadata[dictkey] = str(request.form[key]) metadata[dictkey] = str(request.form[key])
# Find missing checkboxes
for label in g.labels:
if label["type"] == "checkbox":
if "label_{}".format(label["name"]) not in request.form:
metadata[label["name"]] = "off"
set_metadata(metadata, image_name) set_metadata(metadata, image_name)
images = get_image_list() images = get_image_list()