nopaque/app/corpora/forms.py

99 lines
3.9 KiB
Python
Raw Normal View History

from flask_wtf import FlaskForm
from werkzeug.utils import secure_filename
from wtforms import (
FileField,
StringField,
SubmitField,
ValidationError,
IntegerField
)
2021-11-16 14:23:57 +00:00
from wtforms.validators import DataRequired, 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
2020-04-06 12:09:41 +00:00
author = StringField('Author', validators=[DataRequired(), Length(1, 255)])
2020-10-29 13:45:55 +00:00
file = FileField('File', validators=[DataRequired()])
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()
def __init__(self, corpus, *args, **kwargs):
2021-01-28 10:26:09 +00:00
super().__init__(*args, **kwargs)
self.corpus = corpus
def validate_file(self, field):
2020-04-06 12:09:41 +00:00
if not field.data.filename.lower().endswith('.vrt'):
raise ValidationError('File does not have an approved extension: '
'.vrt')
field.data.filename = secure_filename(field.data.filename)
for corpus_file in self.corpus.files:
if field.data.filename == corpus_file.filename:
raise ValidationError('File already registered to corpus.')
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)])
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.
'''
2020-04-06 12:09:41 +00:00
description = StringField('Description',
validators=[DataRequired(), Length(1, 255)])
submit = SubmitField()
title = StringField('Title', validators=[DataRequired(), Length(1, 32)])
class ImportCorpusForm(FlaskForm):
'''
Form to import a corpus.
'''
description = StringField('Description',
validators=[DataRequired(), Length(1, 255)])
file = FileField('File', validators=[DataRequired()])
submit = SubmitField()
title = StringField('Title', validators=[DataRequired(), Length(1, 32)])
def __init__(self, *args, **kwargs):
2021-01-28 10:26:09 +00:00
super().__init__(*args, **kwargs)
def validate_file(self, field):
if not field.data.filename.lower().endswith('.zip'):
raise ValidationError('File does not have an approved extension: '
'.zip')
field.data.filename = secure_filename(field.data.filename)