from flask_wtf import FlaskForm from wtforms import StringField, FileField from wtforms.validators import InputRequired, DataRequired from wtforms import FieldList from wtforms import Form as NoCsrfForm from wtforms.fields import StringField, FormField, SubmitField from app.models import Book, BookSchema, Author # - - - Forms - - - class AuthorForm(NoCsrfForm): # this forms is never exposed so we can user the non CSRF version author_name = StringField('Author Name', validators=[DataRequired()]) class UserForm(FlaskForm): title = StringField('title', validators=[InputRequired()]) author = FieldList(FormField(AuthorForm, default=lambda: Author()), min_entries=1) file = FileField() class UserForm_Edit(FlaskForm): title = StringField('title', validators=[InputRequired()]) author = FieldList(FormField(AuthorForm, default=lambda: Author()), min_entries=1)