Enhance model constructors; add optional parameters for improved initialization across multiple modelsOh
This commit is contained in:
parent
acacf39f8e
commit
8162038f40
10 changed files with 90 additions and 13 deletions
25
routes.py
25
routes.py
|
@ -407,23 +407,28 @@ def settings():
|
|||
if mapper is not None:
|
||||
db.session.flush()
|
||||
mapper[clean] = new_obj.id
|
||||
|
||||
|
||||
def resolve_id(raw_id, fallback_list, id_map, label):
|
||||
try:
|
||||
resolved_id = int(raw_id)
|
||||
except (TypeError, ValueError):
|
||||
resolved_id = None
|
||||
|
||||
if resolved_id is not None and resolved_id >= 0:
|
||||
return resolved_id
|
||||
|
||||
index = abs(resolved_id + 1) if resolved_id is not None else 0
|
||||
raise ValueError(f"{label.title()} ID was not a valid integer: {raw_id}")
|
||||
|
||||
if resolved_id >= 0:
|
||||
# Try to validate this ID by checking if it appears in the map values
|
||||
if resolved_id in id_map.values():
|
||||
return resolved_id
|
||||
else:
|
||||
raise ValueError(f"{label.title()} ID {resolved_id} not found in known {label}s.")
|
||||
|
||||
# It's a negative ID = created on frontend. Resolve from fallback list
|
||||
index = abs(resolved_id + 1)
|
||||
try:
|
||||
entry = fallback_list[index]
|
||||
key = entry["name"] if isinstance(entry, dict) else str(entry).strip()
|
||||
except (IndexError, KeyError, TypeError):
|
||||
raise ValueError(f"Invalid {label} index or format at index {index}: {entry}")
|
||||
|
||||
except (IndexError, KeyError, TypeError) as e:
|
||||
raise ValueError(f"Invalid {label} index or format at index {index}: {entry if entry else 'UNKNOWN'}") from e
|
||||
|
||||
final_id = id_map.get(key)
|
||||
if not final_id:
|
||||
raise ValueError(f"Unresolved {label}: {key}")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue