You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
XPPL/app/forms.py

33 lines
1.4 KiB
Python

7 years ago
from flask_wtf import FlaskForm
7 years ago
from wtforms import StringField, FileField, validators
from wtforms.validators import InputRequired, DataRequired
from wtforms import FieldList
from wtforms import Form as NoCsrfForm
from wtforms.fields import StringField, FormField, SubmitField, SelectField
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()])
7 years ago
7 years ago
class UploadForm(FlaskForm):
7 years ago
title = StringField('title', validators=[InputRequired()])
author = FieldList(FormField(AuthorForm, default=lambda: Author()), min_entries=1)
7 years ago
category = StringField('category', validators=[InputRequired()])
7 years ago
year_published = StringField('year published', [validators.Length(min=4, max=4)])
7 years ago
file = FileField()
7 years ago
upload = SubmitField(label='Upload')
wish = SubmitField(label='''I don't have the file, but wish I did.''')
7 years ago
class EditForm(FlaskForm):
title = StringField('title', validators=[InputRequired()])
author = FieldList(FormField(AuthorForm, default=lambda: Author()), min_entries=1)
7 years ago
category = StringField('category', validators=[InputRequired()])
7 years ago
class SearchForm(FlaskForm):
choices = [('Title', 'Title'),
('Category', 'Category')]
select = SelectField('', choices=choices)
7 years ago
search = StringField('', validators=[InputRequired()])