Refactor update_frontend_node_with_template_values

function
This commit is contained in:
Gabriel Luiz Freitas Almeida 2023-12-05 19:23:23 -03:00
commit a7ad56c0d0

View file

@ -64,31 +64,47 @@ def update_frontend_node_with_template_values(frontend_node, raw_template_data):
:param raw_template_data: A dict representing raw template data. :param raw_template_data: A dict representing raw template data.
:return: Updated frontend node. :return: Updated frontend node.
""" """
if not frontend_node or "template" not in frontend_node or not raw_template_data or not raw_template_data.template: if not is_valid_data(frontend_node, raw_template_data):
return frontend_node return frontend_node
frontend_template = frontend_node.get("template", {}) update_template_values(frontend_node["template"], raw_template_data.template)
raw_template = raw_template_data.template or {}
return frontend_node
def is_valid_data(frontend_node, raw_template_data):
""" Check if the data is valid for processing. """
return frontend_node and "template" in frontend_node and raw_template_data and hasattr(raw_template_data, 'template')
def update_template_values(frontend_template, raw_template):
""" Updates the frontend template with values from the raw template. """
for key, value_dict in raw_template.items(): for key, value_dict in raw_template.items():
frontend_field = frontend_template.get(key) if key == "code" or not isinstance(value_dict, dict):
if key == "code" or not isinstance(value_dict, dict) or not frontend_field:
continue continue
value = value_dict.get("value") update_template_field(frontend_template, key, value_dict)
template_field_type = value_dict.get("type")
frontend_node_field_type = frontend_field.get("type") def update_template_field(frontend_template, key, value_dict):
file_path = value_dict.get("file_path") """ Updates a specific field in the frontend template. """
if value is not None and key in frontend_template and template_field_type == frontend_node_field_type: template_field = frontend_template.get(key)
frontend_template[key]["value"] = value if not template_field or template_field.get("type") != value_dict.get("type"):
if file_path is not None and key in frontend_template and template_field_type == frontend_node_field_type: return
# check if file_path exists
if not Path(file_path).exists(): if "value" in value_dict:
frontend_template[key]["value"] = "" template_field["value"] = value_dict["value"]
else:
frontend_template[key]["file_path"] = file_path if "file_path" in value_dict:
file_path_value = get_file_path_value(value_dict["file_path"])
if not file_path_value:
# If the file does not exist, remove the value from the template_field["value"]
template_field["value"] = ""
template_field["file_path"] = file_path_value
def get_file_path_value(file_path):
""" Get the file path value if the file exists, else return empty string. """
return file_path if Path(file_path).exists() else ""
return frontend_node
def validate_is_component(flows: List["Flow"]): def validate_is_component(flows: List["Flow"]):