from flask_wtf import FlaskForm from wtforms import MultipleFileField, SelectField, StringField, SubmitField, ValidationError from wtforms.validators import DataRequired, Length class CreateOCRJobForm(FlaskForm): description = StringField( 'Description', validators=[DataRequired(), Length(1, 64)] ) files = MultipleFileField('Files', validators=[DataRequired()]) language = SelectField( 'Language', choices=[('', 'Choose your option'), ('eng', 'English'), ('enm', 'English, Middle (1100-1500)'), ('fra', 'French'), ('frm', 'French, Middle (ca. 1400-1600)'), ('deu', 'German'), ('frk', 'German Fraktur'), ('ita', 'Italian'), ('por', 'Portuguese'), ('spa', 'Spanish; Castilian') ], validators=[DataRequired()] ) submit = SubmitField('Create OCR job') title = StringField( 'Title', validators=[DataRequired(), Length(1, 32)] ) def validate_files(form, field): for file in field.data: if not file.filename.lower().endswith(('.pdf', '.tif', '.tiff')): raise ValidationError( 'File does not have an approved extension: ' '.pdf | .tif | .tiff' )