from flask import session from flask_wtf import FlaskForm from wtforms import (StringField, BooleanField, SubmitField, DateField, SelectField, FieldList, FormField) from wtforms.validators import DataRequired, Length, Optional from flask_wtf.file import FileField, FileAllowed, FileRequired class AddDocumentForm(FlaskForm): file = FileField('File', validators=[FileAllowed(['pdf', 'txt']), FileRequired()]) name = StringField('Name', validators=[Length(max=100)]) language = StringField('Language', validators=[Length(max=2)]) valid_from = DateField('Valid from', id='form-control datepicker', validators=[Optional()]) doc_embedding_model = SelectField('Default Embedding Model', choices=[], validators=[DataRequired()]) submit = SubmitField('Submit') def __init__(self): super(AddDocumentForm, self).__init__() self.doc_embedding_model.choices = [(model, model) for model in session.get('tenant').get('allowed_embedding_models')] self.doc_embedding_model.data = session.get('default_embedding_model')