nopaque/app/corpora/forms.py

81 lines
3.3 KiB
Python
Raw Normal View History

from flask_wtf import FlaskForm
2022-04-12 14:11:24 +00:00
from flask_wtf.file import FileField, FileRequired
from werkzeug.utils import secure_filename
from wtforms import (
StringField,
SubmitField,
ValidationError,
IntegerField
)
2022-04-12 14:11:24 +00:00
from wtforms.validators import DataRequired, InputRequired, Length
2020-04-06 12:09:41 +00:00
class AddCorpusFileForm(FlaskForm):
'''
Form to add a .vrt corpus file to the current corpus.
'''
2020-10-29 13:45:55 +00:00
# Required fields
2022-04-19 09:48:14 +00:00
author = StringField('Author', validators=[InputRequired(), Length(1, 255)])
2022-04-13 07:08:11 +00:00
publishing_year = IntegerField('Publishing year', validators=[InputRequired()])
2022-04-19 09:48:14 +00:00
title = StringField('Title', validators=[InputRequired(), Length(1, 255)])
2022-04-12 14:11:24 +00:00
vrt = FileField('File', validators=[FileRequired()])
2020-10-29 13:45:55 +00:00
# Optional fields
2022-04-19 09:48:14 +00:00
address = StringField('Adress', validators=[Length(255)])
booktitle = StringField('Booktitle', validators=[Length(255)])
chapter = StringField('Chapter', validators=[Length(255)])
editor = StringField('Editor', validators=[Length(255)])
institution = StringField('Institution', validators=[Length(255)])
journal = StringField('Journal', validators=[Length(255)])
pages = StringField('Pages', validators=[Length(255)])
publisher = StringField('Publisher', validators=[Length(255)])
school = StringField('School', validators=[Length(255)])
2020-04-06 12:09:41 +00:00
submit = SubmitField()
2022-04-12 14:11:24 +00:00
def validate_vrt(self, field):
2020-04-06 12:09:41 +00:00
if not field.data.filename.lower().endswith('.vrt'):
2022-04-12 14:11:24 +00:00
raise ValidationError('VRT files only!')
2020-04-06 12:09:41 +00:00
class EditCorpusFileForm(FlaskForm):
'''
Form to edit meta data of one corpus file.
'''
2020-10-29 13:45:55 +00:00
# Required fields
2022-04-19 09:48:14 +00:00
author = StringField('Author', validators=[InputRequired(), Length(1, 255)])
publishing_year = IntegerField('Publishing year', validators=[InputRequired()])
title = StringField('Title', validators=[InputRequired(), Length(1, 255)])
2020-10-29 13:45:55 +00:00
# Optional fields
address = StringField('Adress', validators=[Length(0, 255)])
2020-04-06 12:09:41 +00:00
booktitle = StringField('Booktitle', validators=[Length(0, 255)])
chapter = StringField('Chapter', validators=[Length(0, 255)])
editor = StringField('Editor', validators=[Length(0, 255)])
institution = StringField('Institution', validators=[Length(0, 255)])
journal = StringField('Journal', validators=[Length(0, 255)])
pages = StringField('Pages', validators=[Length(0, 255)])
publisher = StringField('Publisher', validators=[Length(0, 255)])
school = StringField('School', validators=[Length(0, 255)])
submit = SubmitField()
class AddCorpusForm(FlaskForm):
'''
Form to add a a new corpus.
'''
2022-04-19 09:48:14 +00:00
description = StringField('Description', validators=[InputRequired(), Length(1, 255)])
title = StringField('Title', validators=[InputRequired(), Length(1, 32)])
2022-04-12 14:11:24 +00:00
submit = SubmitField()
2020-04-06 12:09:41 +00:00
class ImportCorpusForm(FlaskForm):
'''
Form to import a corpus.
'''
2022-04-19 09:48:14 +00:00
description = StringField('Description', validators=[InputRequired(), Length(1, 255)])
archive = FileField('File', validators=[FileRequired()])
title = StringField('Title', validators=[InputRequired(), Length(1, 32)])
2022-04-12 14:11:24 +00:00
submit = SubmitField()
2022-04-12 14:11:24 +00:00
def validate_archive(self, field):
2022-04-19 09:48:14 +00:00
valid_mimetypes = ['application/zip', 'application/x-zip', 'application/x-zip-compressed']
if field.data.mimetype not in valid_mimetypes:
2022-04-12 14:11:24 +00:00
raise ValidationError('ZIP files only!')