from flask_wtf import FlaskForm from wtforms import (BooleanField, MultipleFileField, SelectField, StringField, SubmitField, ValidationError) from wtforms.validators import DataRequired, Length class AddNLPJobForm(FlaskForm): description = StringField('Description', validators=[DataRequired(), Length(1, 255)]) files = MultipleFileField('Files', validators=[DataRequired()]) language = SelectField('Language', choices=[('', 'Choose your option'), ('nl', 'Dutch'), ('en', 'English'), ('fr', 'French'), ('de', 'German'), ('el', 'Greek'), ('it', 'Italian'), ('pt', 'Portuguese'), ('es', 'Spanish')], validators=[DataRequired()]) submit = SubmitField() title = StringField('Title', validators=[DataRequired(), Length(1, 32)]) version = SelectField('Version', choices=[('2.1.0', 'Latest (2.1.0)'), ('2.1.0', '2.1.0')], validators=[DataRequired()]) def validate_files(form, field): for file in field.data: if not file.filename.lower().endswith('.txt'): raise ValidationError( 'File does not have an approved extension: .txt' ) class AddOCRJobForm(FlaskForm): binarization = BooleanField('Binarazation') description = StringField('Description', validators=[DataRequired(), Length(1, 255)]) 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()]) split = BooleanField('Split') submit = SubmitField() title = StringField('Title', validators=[DataRequired(), Length(1, 32)]) version = SelectField('Version', choices=[('latest', 'Latest')], validators=[DataRequired()]) 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' )