mirror of
https://gitlab.ub.uni-bielefeld.de/sfb1288inf/nopaque.git
synced 2024-11-15 17:25:44 +00:00
69 lines
3.1 KiB
Python
69 lines
3.1 KiB
Python
|
from flask_wtf import FlaskForm
|
||
|
from wtforms import (BooleanField, MultipleFileField, SelectField, StringField,
|
||
|
SubmitField, ValidationError)
|
||
|
from wtforms.validators import DataRequired, Length
|
||
|
from . import SERVICES
|
||
|
|
||
|
|
||
|
class AddJobForm(FlaskForm):
|
||
|
description = StringField('Description',
|
||
|
validators=[DataRequired(), Length(1, 255)])
|
||
|
submit = SubmitField()
|
||
|
title = StringField('Title', validators=[DataRequired(), Length(1, 32)])
|
||
|
|
||
|
|
||
|
class AddNLPJobForm(AddJobForm):
|
||
|
files = MultipleFileField('Files', validators=[DataRequired()])
|
||
|
model = SelectField('Model', validators=[DataRequired()])
|
||
|
version = SelectField('Version',
|
||
|
choices=[(x, x) for x in SERVICES['nlp']['versions'] if x != 'latest'], # noqa
|
||
|
default=SERVICES['nlp']['versions']['latest'],
|
||
|
validators=[DataRequired()])
|
||
|
check_encoding = BooleanField('Check encoding')
|
||
|
|
||
|
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(AddJobForm):
|
||
|
binarization = BooleanField('Binarazation')
|
||
|
files = MultipleFileField('Files', validators=[DataRequired()])
|
||
|
model = SelectField('Model', validators=[DataRequired()])
|
||
|
version = SelectField('Version',
|
||
|
choices=[(x, x) for x in SERVICES['ocr']['versions'] if x != 'latest'], # noqa
|
||
|
default=SERVICES['ocr']['versions']['latest'],
|
||
|
validators=[DataRequired()])
|
||
|
|
||
|
def validate_binarization(form, field):
|
||
|
if field.data and 'binarization' not in SERVICES['ocr'][form.version.data]: # noqa
|
||
|
raise ValidationError('Binarization is not available in this version') # noqa
|
||
|
|
||
|
def validate_files(form, field):
|
||
|
for file in field.data:
|
||
|
if not file.filename.lower().endswith('.pdf'):
|
||
|
raise ValidationError('File does not have an approved '
|
||
|
'extension: .pdf')
|
||
|
|
||
|
def validate_model(form, field):
|
||
|
if field.data not in SERVICES['ocr'][form.versiondata]['models']:
|
||
|
raise ValidationError('Model is not available in this version')
|
||
|
|
||
|
|
||
|
class AddFileSetupJobForm(AddJobForm):
|
||
|
files = MultipleFileField('Files', validators=[DataRequired()])
|
||
|
version = SelectField('Version',
|
||
|
choices=[(x, x) for x in SERVICES['file-setup']['versions'] if x != 'latest'], # noqa
|
||
|
default=SERVICES['file-setup']['versions']['latest'],
|
||
|
validators=[DataRequired()])
|
||
|
|
||
|
def validate_files(form, field):
|
||
|
for file in field.data:
|
||
|
if not file.filename.lower().endswith(('.jpeg', '.jpg', '.png',
|
||
|
'.tiff', '.tif')):
|
||
|
raise ValidationError('File does not have an approved '
|
||
|
'extension: .jpeg | .jpg | .png | .tiff '
|
||
|
'| .tif')
|