xppl/xppl/forms.py
Luke Murphy 0f76d1acad
Get dummy test suite in place.
At least isort/pylava are passing.
2018-11-18 11:58:22 +01:00

113 lines
3.9 KiB
Python
Executable File

from flask_wtf import FlaskForm
from wtforms import FieldList, FileField
from wtforms import Form as NoCsrfForm
from wtforms import validators
from wtforms.fields import FormField, SelectField, StringField, SubmitField
from wtforms.fields.html5 import DecimalRangeField
from wtforms.validators import DataRequired, InputRequired
from xppl.models import 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 UploadForm(FlaskForm):
title = StringField('title', validators=[InputRequired()])
author = FieldList(
FormField(AuthorForm, default=lambda: Author()),
min_entries=1
)
category = StringField('category', validators=[InputRequired()])
year_published = StringField(
'year published',
[validators.Length(max=4)],
default=None
)
file = FileField()
upload = SubmitField(label='Upload')
wish = SubmitField(label='''I don't have the file, but wish I did.''')
message = StringField('message', default=None)
sameness = DecimalRangeField('sameness', default=0)
diversity = DecimalRangeField('diversity', default=0)
gender = DecimalRangeField('gender', default=50)
choices = [('Student', 'Student'),
('Librarian', 'Librarian'),
('Pirate', 'Pirate'),
('Teacher', 'Teacher'),
('Institution', 'Institution'),
('All of the above', 'All of the above'),
('None of the above', 'None of the above')]
who = SelectField('', choices=choices, default='Student')
class EditForm(FlaskForm):
title = StringField('title', validators=[InputRequired()])
author = FieldList(
FormField(AuthorForm, default=lambda: Author()),
min_entries=1
)
category = StringField('category', validators=[InputRequired()])
year_published = StringField(
'year published',
[validators.Length(max=4)],
default=None
)
file = FileField()
message = StringField('message')
sameness = DecimalRangeField('sameness', default=0)
diversity = DecimalRangeField('diversity', default=0)
gender = DecimalRangeField('gender', default=50)
choices = [('Student', 'Student'),
('Librarian', 'Librarian'),
('Pirate', 'Pirate'),
('Teacher', 'Teacher'),
('Institution', 'Institution'),
('All of the above', 'All of the above'),
('None of the above', 'None of the above')]
who = SelectField('', choices=choices, default='Student')
class ChatForm(FlaskForm):
message = StringField('message', validators=[InputRequired()])
send = SubmitField(label='Send')
class StackForm(FlaskForm):
stack_name = StringField('Stack', validators=[InputRequired()])
stack_description = StringField(
'Description',
validators=[InputRequired()]
)
stack_author = StringField('Who made this', validators=[InputRequired()])
create = SubmitField(label='Create')
class AddtoStackForm(FlaskForm):
select_stack = SelectField('Stacks', validators=[InputRequired()])
class EditStackForm(FlaskForm):
edit_stack_name = StringField('Stack', validators=[InputRequired()])
edit_stack_description = StringField(
'Description',
validators=[InputRequired()]
)
class SearchForm(FlaskForm):
choices = [('All', 'All'),
('Title', 'Title'),
('Author', 'Author'),
('Category', 'Category'),
('Stack', 'Stack'),
('Outliers', 'Outliers')]
select = SelectField('', choices=choices, default='All')
search = StringField('', validators=[InputRequired()])
grid = SubmitField('Grid')
listview = SubmitField('List')
randomize = SubmitField('Order differently')