{% macro render_field(field) %} {% if field.flags.required and field.type not in ['FileField', 'MultipleFileField'] %} {% if 'class_' in kwargs and 'validate' not in kwargs['class_'] %} {% set tmp = kwargs.update({'class_': kwargs['class_'] + ' validate'}) %} {% else %} {% set tmp = kwargs.update({'class_': 'validate'}) %} {% endif %} {% endif %} {% if field.type == 'BooleanField' %} {{ render_boolean_field(field, *args, **kwargs) }} {% elif field.type == 'DecimalRangeField' %} {{ render_decimal_range_field(field, *args, **kwargs) }} {% elif field.type == 'IntegerField' %} {% set tmp = kwargs.update({'type': 'number'}) %} {% if 'class_' in kwargs and 'validate' not in kwargs['class_'] %} {% set tmp = kwargs.update({'class_': kwargs['class_'] + ' validate'}) %} {% else %} {% set tmp = kwargs.update({'class_': 'validate'}) %} {% endif %} {{ render_generic_field(field, *args, **kwargs) }} {% elif field.type == 'SubmitField' %} {{ render_submit_field(field, *args, **kwargs) }} {% elif field.type in ['FileField', 'MultipleFileField'] %} {{ render_file_field(field, *args, **kwargs) }} {% elif field.type in ['PasswordField', 'SelectField', 'StringField'] %} {{ render_generic_field(field, *args, **kwargs) }} {% endif %} {% endmacro %} {% macro render_boolean_field(field) %} {% set label = kwargs.pop('label', True) %} <div class="switch"> {% if 'material_icon' in kwargs %} <i class="material-icons prefix">{{ kwargs.pop('material_icon') }}</i> {% endif %} <label> {% if label %} {{ field.label.text }} {% endif %} {{ field(*args, **kwargs) }} <span class="lever"></span> </label> {% for error in field.errors %} <span class="helper-text red-text">{{ error }}</span> {% endfor %} </div> {% endmacro %} {% macro render_file_field(field) %} {% set placeholder = kwargs.pop('placeholder', '') %} <div class="file-field input-field"> <div class="btn"> <span>{{ field.label.text }}</span> {{ field(*args, **kwargs) }} </div> <div class="file-path-wrapper"> <input class="file-path validate" type="text" placeholder="{{ placeholder }}"> </div> </div> {% endmacro %} {% macro render_generic_field(field) %} {% set label = kwargs.pop('label', True) %} <div class="input-field"> {% if 'material_icon' in kwargs %} <i class="material-icons prefix">{{ kwargs.pop('material_icon') }}</i> {% endif %} {{ field(*args, **kwargs) }} {% if label %} {{ field.label }} {% endif %} {% for error in field.errors %} <span class="helper-text red-text">{{ error }}</span> {% endfor %} </div> {% endmacro %} {% macro render_submit_field(field) %} <button class="btn waves-effect waves-light" id="{{ field.id }}" name="{{ field.name }}" type="submit" value="{{ field.label.text }}"> {{ field.label.text }} {% if 'material_icon' in kwargs %} <i class="material-icons right">{{ kwargs.pop('material_icon') }}</i> {% endif %} </button> {% endmacro %} {# maybe create a modal template later on for actions like delete etc #} {# {% macro delete_modal_file(file) %} <div id="delete-corpus-file-{{ file.id }}-modal" class="modal"> <div class="modal-content"> <h4>Confirm corpus file deletion</h4> <p>Do you really want to delete the corpus file {{ file.filename }}? The file will be permanently deleted!</p> </div> <div class="modal-footer"> <a href="#!" class="btn modal-close waves-effect waves-light">Cancel</a> <a class="btn modal-close red waves-effect waves-light" href="{{ url_for('corpora.delete_corpus_file', corpus_file_id=resource_id, corpus_id=corpus.id) }}"><i class="material-icons left">delete</i>Delete</a> </div> </div> {% endmacro %} #}