97 lines
4.0 KiB
Python
97 lines
4.0 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')]
|
|
self.language.data = session.get('tenant').get('default_language')
|
|
|
|
|
|
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')]
|
|
self.language.data = session.get('tenant').get('default_language')
|
|
|
|
|
|
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')]
|
|
self.language.data = session.get('tenant').get('default_language')
|
|
|
|
|
|
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')
|
|
|
|
|
|
|