Skip template expansion when html control does not have any chameleon tokens
This commit is contained in:
48
sm2gen.py
48
sm2gen.py
@@ -482,6 +482,10 @@ def extract_input_fields(json_data, value_type):
|
||||
result[panel_name].append(input_name)
|
||||
# Note: Empty lists are not removed, so all panels will be present in the result
|
||||
return result
|
||||
|
||||
def contains_chameleon_code(template: str) -> bool:
|
||||
# Check for common Chameleon code indicators
|
||||
return "${" in template or "tal:" in template or "metal:" in template
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
@@ -738,29 +742,39 @@ if __name__ == "__main__":
|
||||
)
|
||||
else:
|
||||
# just a simple entry - name less numerics is type
|
||||
# If the html does not include any Chameleon / TAL symbols, then do not run the Template extraction, just
|
||||
# insert the result of the html directly. This avoids Chameleon aborting things when a closing tag is on its own
|
||||
# such as the "Endgroup" token.
|
||||
html_Type = "".join(char for char in html_control if not char.isdigit())
|
||||
type_serial = "".join(char for char in html_control if char.isdigit())
|
||||
class_name = html_Type.lower()[:4]+type_serial
|
||||
acc_css_entries += f".{class_name} {{}}\n"
|
||||
simple_control_html = ""
|
||||
logger.debug(f"Partial ep generation html type:{html_Type}")
|
||||
if not type_serial == "":
|
||||
logger.debug(f"{html_control},{html_Type},{type_serial}")
|
||||
try:
|
||||
simple_control_template = PageTemplate(html_controls[html_Type])
|
||||
try:
|
||||
simple_control_html = simple_control_template.render(
|
||||
version=strVersion, Value=inner_html, prefix=prefix_is,
|
||||
type_serial=type_serial
|
||||
)
|
||||
all_controls_html = all_controls_html + simple_control_html
|
||||
except Exception as e:
|
||||
logger.warning(
|
||||
f"A Chameleon render on partial file control {html_control} error occurred: {e}"
|
||||
)
|
||||
except Exception as e:
|
||||
logger.warning(
|
||||
f"A Chameleon template partial file control {html_control} error occurred: {e}"
|
||||
)
|
||||
|
||||
if html_Type in html_controls:
|
||||
if contains_chameleon_code(html_controls[html_Type]):
|
||||
try:
|
||||
simple_control_template = PageTemplate(html_controls[html_Type])
|
||||
try:
|
||||
simple_control_html = simple_control_template.render(
|
||||
version=strVersion, Value=inner_html, prefix=prefix_is,
|
||||
type_serial=type_serial
|
||||
)
|
||||
except Exception as e:
|
||||
logger.warning(
|
||||
f"A Chameleon render on partial file control {html_control} error occurred: {e}"
|
||||
)
|
||||
except Exception as e:
|
||||
logger.warning(
|
||||
f"A Chameleon template partial file control {html_control} error occurred: {e}"
|
||||
)
|
||||
else:
|
||||
logger.debug(f"Skipping Chameleon expansion for {html_control}")
|
||||
simple_control_html = html_controls[html_Type]
|
||||
all_controls_html = all_controls_html + simple_control_html
|
||||
|
||||
# Now insert it into the partial file in the correct place.
|
||||
# Read in the text file and split at "%# Inputs etc in here."
|
||||
with open(partial_files[i], "r") as file:
|
||||
|
Reference in New Issue
Block a user