- Introduction of API-functionality (to be continued). Deduplication of document and url uploads between views and api. - Improvements on document processing - introduction of processor classes to streamline document inputs - Removed pure Youtube functionality, as Youtube retrieval of documents continuously changes. But added upload of srt, mp3, ogg and mp4
94 lines
3.8 KiB
Python
94 lines
3.8 KiB
Python
from flask import session, current_app
|
|
from flask_wtf import FlaskForm
|
|
from wtforms import (StringField, BooleanField, SubmitField, DateField,
|
|
SelectField, FieldList, FormField, TextAreaField, URLField)
|
|
from wtforms.validators import DataRequired, Length, Optional, URL, ValidationError
|
|
from flask_wtf.file import FileField, FileAllowed, FileRequired
|
|
|
|
|
|
def allowed_file(form, field):
|
|
if field.data:
|
|
filename = field.data.filename
|
|
allowed_extensions = current_app.config.get('SUPPORTED_FILE_TYPES', [])
|
|
if not ('.' in filename and filename.rsplit('.', 1)[1].lower() in allowed_extensions):
|
|
raise ValidationError('Unsupported file type.')
|
|
|
|
|
|
class AddDocumentForm(FlaskForm):
|
|
file = FileField('File', validators=[FileRequired(), allowed_file])
|
|
name = StringField('Name', validators=[Length(max=100)])
|
|
language = SelectField('Language', choices=[], validators=[Optional()])
|
|
user_context = TextAreaField('User Context', validators=[Optional()])
|
|
valid_from = DateField('Valid from', id='form-control datepicker', validators=[Optional()])
|
|
|
|
submit = SubmitField('Submit')
|
|
|
|
def __init__(self):
|
|
super().__init__()
|
|
self.language.choices = [(language, language) for language in
|
|
session.get('tenant').get('allowed_languages')]
|
|
|
|
|
|
class AddURLForm(FlaskForm):
|
|
url = URLField('URL', validators=[DataRequired(), URL()])
|
|
name = StringField('Name', validators=[Length(max=100)])
|
|
language = SelectField('Language', choices=[], validators=[Optional()])
|
|
user_context = TextAreaField('User Context', validators=[Optional()])
|
|
valid_from = DateField('Valid from', id='form-control datepicker', validators=[Optional()])
|
|
|
|
submit = SubmitField('Submit')
|
|
|
|
def __init__(self):
|
|
super().__init__()
|
|
self.language.choices = [(language, language) for language in
|
|
session.get('tenant').get('allowed_languages')]
|
|
|
|
|
|
class AddURLsForm(FlaskForm):
|
|
urls = TextAreaField('URL(s) (one per line)', validators=[DataRequired()])
|
|
name = StringField('Name Prefix', validators=[Length(max=100)])
|
|
language = SelectField('Language', choices=[], validators=[Optional()])
|
|
user_context = TextAreaField('User Context', validators=[Optional()])
|
|
valid_from = DateField('Valid from', id='form-control datepicker', validators=[Optional()])
|
|
|
|
submit = SubmitField('Submit')
|
|
|
|
def __init__(self):
|
|
super().__init__()
|
|
self.language.choices = [(language, language) for language in
|
|
session.get('tenant').get('allowed_languages')]
|
|
|
|
|
|
class AddYoutubeForm(FlaskForm):
|
|
url = URLField('Youtube URL', validators=[DataRequired(), URL()])
|
|
name = StringField('Name', validators=[Length(max=100)])
|
|
language = SelectField('Language', choices=[], validators=[Optional()])
|
|
user_context = TextAreaField('User Context', validators=[Optional()])
|
|
valid_from = DateField('Valid from', id='form-control datepicker', validators=[Optional()])
|
|
|
|
submit = SubmitField('Submit')
|
|
|
|
def __init__(self):
|
|
super().__init__()
|
|
self.language.choices = [(language, language) for language in
|
|
session.get('tenant').get('allowed_languages')]
|
|
|
|
|
|
class EditDocumentForm(FlaskForm):
|
|
name = StringField('Name', validators=[Length(max=100)])
|
|
valid_from = DateField('Valid from', id='form-control datepicker', validators=[Optional()])
|
|
valid_to = DateField('Valid to', id='form-control datepicker', validators=[Optional()])
|
|
|
|
submit = SubmitField('Submit')
|
|
|
|
|
|
class EditDocumentVersionForm(FlaskForm):
|
|
language = StringField('Language')
|
|
user_context = TextAreaField('User Context', validators=[Optional()])
|
|
system_context = TextAreaField('System Context', validators=[Optional()])
|
|
|
|
submit = SubmitField('Submit')
|
|
|
|
|
|
|