nopaque/app/corpora/forms.py

83 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-12 14:11:24 +00:00
author = StringField('Author', validators=[InputRequired(), Length(min=1, max=255)])
publishing_year = IntegerField('Publishing year', validators=[InputRequired(), Length(min=1, max=255)])
title = StringField('Title', validators=[InputRequired(), Length(min=1, max=255)])
vrt = FileField('File', validators=[FileRequired()])
2020-10-29 13:45:55 +00:00
# Optional fields
2022-04-12 14:11:24 +00:00
address = StringField('Adress', validators=[Length(max=255)])
booktitle = StringField('Booktitle', validators=[Length(max=255)])
chapter = StringField('Chapter', validators=[Length(max=255)])
editor = StringField('Editor', validators=[Length(max=255)])
institution = StringField('Institution', validators=[Length(max=255)])
journal = StringField('Journal', validators=[Length(max=255)])
pages = StringField('Pages', validators=[Length(max=255)])
publisher = StringField('Publisher', validators=[Length(max=255)])
school = StringField('School', validators=[Length(max=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
2020-04-06 12:09:41 +00:00
author = StringField('Author', validators=[DataRequired(), Length(1, 255)])
2022-04-12 14:11:24 +00:00
publishing_year = IntegerField('Publishing year', validators=[DataRequired()])
2020-10-29 13:45:55 +00:00
title = StringField('Title', validators=[DataRequired(), Length(1, 255)])
# 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-12 14:11:24 +00:00
description = StringField('Description', validators=[DataRequired(), Length(1, 255)])
2020-04-06 12:09:41 +00:00
title = StringField('Title', validators=[DataRequired(), 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-12 14:11:24 +00:00
description = StringField('Description', validators=[DataRequired(), Length(1, 255)])
archive = FileField('File', validators=[DataRequired()])
title = StringField('Title', validators=[DataRequired(), Length(1, 32)])
2022-04-12 14:11:24 +00:00
submit = SubmitField()
def __init__(self, *args, **kwargs):
2021-01-28 10:26:09 +00:00
super().__init__(*args, **kwargs)
2022-04-12 14:11:24 +00:00
def validate_archive(self, field):
if field.data.mimetype != 'application/zip':
raise ValidationError('ZIP files only!')