import os import sys parent_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "..")) sys.path.append(parent_dir) from jinja2 import Environment, FileSystemLoader from wtforms.widgets import CheckboxInput, FileInput from wtforms.fields import StringField, FileField from wtforms.validators import InputRequired from wtforms import Form from atst.filters import iconSvg env = Environment(loader=FileSystemLoader("templates")) env.filters["iconSvg"] = iconSvg # override tojson as identity function to prevent # wrapping strings in extra quotes env.filters["tojson"] = lambda x: x class InitialValueForm(Form): datafield = StringField(label="initialvalue value", default="initialvalue") errorfield = StringField( label="error", validators=[InputRequired(message="Test Error Message")] ) checkbox_template = env.get_template("components/checkbox_input.html") ci_macro = getattr(checkbox_template.module, "CheckboxInput") checkbox_input_form = InitialValueForm() checkbox_input_form.datafield.widget = CheckboxInput() rendered_checkbox_macro = ci_macro(checkbox_input_form.datafield) with open("js/test_templates/checkbox_input_template.html", "w") as fh: fh.write(rendered_checkbox_macro) upload_template = env.get_template("components/upload_input.html") up_macro = getattr(upload_template.module, "UploadInput") rendered_upload_macro = up_macro(InitialValueForm().datafield) with open("js/test_templates/upload_input_template.html", "w") as fh: fh.write(rendered_upload_macro) erroredform = InitialValueForm() erroredform.validate() rendered_upload_error_macro = up_macro(erroredform.errorfield) with open("js/test_templates/upload_input_error_template.html", "w") as fh: fh.write(rendered_upload_error_macro)