from flask_wtf import FlaskForm from wtforms import (FileField, StringField, SubmitField, ValidationError, IntegerField, SelectField, TextAreaField) from wtforms.validators import DataRequired, Length class AddCorpusFileForm(FlaskForm): author = StringField('Author', validators=[DataRequired(), Length(1, 64)]) file = FileField('File', validators=[DataRequired()]) publishing_year = IntegerField('Publishing year', validators=[DataRequired()]) submit = SubmitField() title = StringField('Title', validators=[DataRequired(), Length(1, 64)]) def validate_file(form, field): if not field.data.filename.lower().endswith('.vrt'): raise ValidationError('File does not have an approved extension: ' '.vrt') class CreateCorpusForm(FlaskForm): description = StringField('Description', validators=[DataRequired(), Length(1, 64)]) submit = SubmitField('Create corpus') title = StringField('Title', validators=[DataRequired(), Length(1, 32)]) class EditCorpusFileForm(FlaskForm): author = StringField('Author', validators=[DataRequired(), Length(1, 64)]) corpus_file_id = IntegerField('', validators=[DataRequired()]) publishing_year = IntegerField('Publishing year', validators=[DataRequired()]) submit = SubmitField() title = StringField('Title', validators=[DataRequired(), Length(1, 64)]) class QueryForm(FlaskForm): query = TextAreaField('CQP Query', validators=[DataRequired(), (Length(1, 1024))]) hits_per_page = SelectField('Hits per page', choices=[('', 'Nr. of hits per page'), ('10', '10'), ('20', '20'), ('30', '30'), ('40', '40'), ('50', '50')], validators=[DataRequired()]) context = SelectField('Context', choices=[('', 'Words of context around hit'), ('5', '5'), ('10', '10'), ('15', '15'), ('20', '20'), ('25', '25')], validators=[DataRequired()]) submit = SubmitField('Start Query') class QueryDownloadForm(FlaskForm): file_type = SelectField('File type', choices=[('', 'Choose file type'), ('csv', 'csv'), ('json', 'json'), ('excel', 'excel')], validators=[DataRequired()])